Call stacks: "Result directory does not contain data applicable to this report."

Call stacks: "Result directory does not contain data applicable to this report."

I'm using the command line interface of Amplifier XE of Parallel Studio XE 2013 under Windows 7 x86_64 with a Xeon W3530 CPU. The problem is I cannot get reports with call stacks when hardware events are used.

amplxe-cl -version Intel(R) VTune(TM) Amplifier XE 2013 Update 4 (build 270817) Command Line Tool Copyright (C) 2009-2013 Intel Corporation. All rights reserved.

When I try to do the following, it complains of missing data and I get no report:

amplxe-cl -collect-with runsa -knob enable-stack-collection=true -knob event-config=CPU_CLK_UNHALTED.THREAD_P:sa=1000000 -inline-mode=on -result-dir=val1_data -- val1.exe [... warnings about unresolved symbols in system dlls ...] amplxe-cl -report top-down -inline-mode=on -result-dir=val1_data -report-output=val1.txt Result directory does not contain data applicable to this report. amplxe: Error: Error 0x40000024 (Reporter error)

At this point I can do the hw-events report type for a flat profile and there are plenty of samples in there but callstacks, hotspots, gprof-cc, or top-down reports all fail.

If I collect data the following way instead, val1.exe crashes on exit (stopped responding, click here to close) but the call stack reports then work as expected:

amplxe-cl -collect hotspots -knob sampling-interval=1 -inline-mode=on -result-dir=val1_data -- val1.exe

Thanks for any suggestions on how to get the call stack reports working with hardware events.

22 Beiträge / 0 neu
Letzter Beitrag
Nähere Informationen zur Compiler-Optimierung finden Sie in unserem Optimierungshinweis.

1. Have you built symbol file with your executable?

2. Is there same problem if you profile other application? Your application ran enough longer than 10ms?

3. Can you see report expectedly if there is no Stack Collection?

Peter Wang (Intel) posted:
> 1. Have you built symbol file with your executable?

Build is as shown below (apologies if the line breaks go away again).  I don't know if the substitution of /Z7 for /Zi made a difference, but the linker still produces a .pdb file when it's all over.  /Zi fails for unrelated reasons (keeps wanting the pdb lib from VS2010 instead of 2012) and falls back to /Z7 anyway.

icl val1.c /Qstd=c99 /Z7 /link /DEBUG
Intel(R) C++ Intel(R) 64 Compiler XE for applications running on Intel(R) 64, Version 13.1.0.149 Build 20130118
Copyright (C) 1985-2013 Intel Corporation.  All rights reserved.
val1.c
Microsoft (R) Incremental Linker Version 11.00.51106.1
Copyright (C) Microsoft Corporation.  All rights reserved.
-out:val1.exe 
-debug 
-pdb:val1.pdb 
/DEBUG 
val1.obj

> 2. Is there same problem if you profile other application?

Another application built similarly has the same problem.  I'm not sure what differently built application to try that would have the prerequisites for successful stack collection.  I randomly tried firefox.exe and was unable to get anything more than a sample count for the entire app (apparently not enough debug info to resolve to individual functions).

Would the missing symbols for system dlls somehow prevent stacks from being recorded for samples that are within the application itself?  I expected the unresolved system functions to show up as "unknown" or something but not to kill the data collection entirely, so didn't bother installing the pdbs for all of the system libs.

> Your application ran enough longer than 10ms?

Definitely.  Close to 10 s, thousands of samples collected.

> 3. Can you see report expectedly if there is no Stack Collection?

The hw-events report type gives the expected flat profile results regardless whether stack collection was enabled.  For the other reports that expect call stacks, removing enable-stack-collection=true changes nothing.

Now this is interesting:  I started the Amplifier XE GUI, opened the result directory that I produced from the command line data collection, navigated to the top-down view, and the call stacks appeared there in the GUI with no problems.  So the problem is not in data collection, only reporting.

Quote:

David F. wrote:

Now this is interesting:  I started the Amplifier XE GUI, opened the result directory that I produced from the command line data collection, navigated to the top-down view, and the call stacks appeared there in the GUI with no problems.  So the problem is not in data collection, only reporting.

I don't know if you go back to command line, can you see this problem again?

If "yes", it should be a defect of tool - please attach result directory for investigaing, the problem should be fixed. Thank you.

If "no", GUI might find associate pdb files, such as do "amlpxe-cl -finalize --search-dir all:rp=pdb-path -r result-directory" in command line (probably you saved different pdb path from executable path?) 

Something changed in the val1_data directory after every command, so I have included four versions:

  1. Original, immediately after data collection.
  2. After first failed attempt to generate a top-down report from the command line.
  3. After successful viewing of top-down view in the GUI.
  4. After subsequent second failed attempt from the command line.

Anlagen: 

AnhangGröße
Herunterladen val1-data.zip7.16 MB

Thank you for result directory.

I can repeat this problem, only "-report hw-events" can be supported.

However if you use "amplxe-cl -collect lightweight-hotspots -- val1.exe " instead of "amplxe-cl -collect runsa -- val1.exe ",

"amplxe-cl -report top-down -r result-dir" should work.

Anyway, I will post the update after investigating. 

Hi Peter,

I am having similar problem.  Any update on this ?

Thanks,

Rohith

This is a very old issue for 2013 version early, stack sampling is not supported for event-based sampling.

Please try latest product 2015 version update 1, and post your command line with test case if failed. I will investigate. 

 

Please use the new syntax to collect staks with VTune Amplifier XE 2015:

amplxe-cl -collect-with runsa -knob collection-detail=stack-sampling -knob event-config=CPU_CLK_UNHALTED.THREAD_P:sa=1000000 -inline-mode=on -result-dir=val1_data -- val1.exe

When i execute,

amplxe-cl -collect-with runsa -knob collection-detail=stack-sampling -knob event-config=CPU_CLK_UNHALTED.THREAD_P:sa=1000000 -inline-mode=on -result-dir=val1_data -- <*.exe>

I get this error,

amplxe: Error: Cannot find knob collection-detail. Use -knob-list to see available knobs.

I have VTune 2015 Update 1 installed on my linux box

Thanks,

Rohith

For the 'collect-with' form, please use '-knob enable-stack-collection=true'.

Alternatively, you can use '-collect advanced-hotspots -knob collection-detail=stack-sampling''.  So, the simplified command is:

amplxe-cl -collect advanced-hotspots -knob collection-detail=stack-sampling -result-dir=val1_data -- <*.exe>

Regards,
MrAnderson

Mr.Anderson is right, using advanced-hotspots is a simple way to solve the issue.

For using "collect-with", use option "-knob enable-call-counts=true" besides option "-knob enable-stack-collection=true" (if you like to see call counts data)

If you use advanced-hotspots, and want to see call stack info with call counts, please use option "-knob collection-detail=stack-and-callcount" instead of option "-knob  collection-detail=stack-sampling" 

I want to get the hardware events.  So i tried,

%To profile

amplxe-cl -collect-with runsa -knob enable-stack-collection=true -knob event-config=CPU_CLK_UNHALTED.THREAD_P:sa=1000000 -inline-mode=on -result-dir=dummy2015 -- <*exe>

%To report (CSV file)
amplxe-cl -R top-down -call-stack-mode all -report-output 'dummy.csv' -filter "Function Stack" -format csv -csv-delimiter comma -r dummy2015
amplxe: Using result path `/../../dummy2015'
amplxe: Executing actions 75 % Generating a report                             
Result directory does not contain data applicable to this report.
amplxe: Executing actions 100 % done                                           
amplxe: Error: 0x40000027 (Reporter error)

I get this error in VTune 2013 and VTune 2015(update 1)

Thanks,

Rohith

First, advanced hotspots *does* include hardware events! ;)

Second, try getting the report to work *without* all the CSV stuff *before* you add it.  Also, you *can* export data from the GUI in CSV (right-click in Bottom-up view and select "Export to CSV").  For example, what is the output of 'amplxe-cl -R callstacks -r <results-dir>'?

Then, incrementally add options to figure out where there is a conflict, if there is one.

Regards,
MrAnderson

(1)%First, advanced hotspots *does* include hardware events! ;)

True.  There are few hardware events that are defined by default with advanced hotspots.  If i want to get cache misses, how do i do that for advanced hotspots from command line.

--------------------------------------------------------------------------------

(2)%amplxe-cl -collect-with runsa -knob enable-stack-collection=true -knob event-config=CPU_CLK_UNHALTED.THREAD_P:sa=1000000 -inline-mode=on -result-dir=dummy2015 -- <*exe>

amplxe-cl -R callstacks -r dummy2015 

Result directory does not contain data applicable to this report.
amplxe: Executing actions 100 % done                                           
amplxe: Error: 0x40000027 (Reporter error)

So, it is failing in the initial step (getting callstack information from the result)

----------------------------------------------------------------------------------------

 

Thanks,

Rohith

Basically, it is telling you there is no callstack info to display.

Is there some reason you are using the command line?  It is much easier to configure the collection with the graphical UI.  :\

The "General Exploration" analysis type includes all relevant events, including cache activity.  See the VTune Amplifier tuning guides for advice on how to analyze the results for various generations of microarchitectures.

So, I recommend you try the simpler command line using 'amplxe-cl -collect advanced-hotspots -knob collection-detail=stack-sampling' and see if you can't get the call stacks using that method.  Note: a result directory does not even need to be specified; it will generate a unique dir name and save the results.  Any "report" command that follows will use the last result directory created.  Therefore, you can do:

$ amplxe-cl -c advanced-hotspots -knob collection-detail=stack-sampling -- <exe>
$ amplxe-cl -R callstacks

 

Regards,
MrAnderson

I am using the command-line because i am building some automation and working with the GUI is not feasible(because we want to run several usecases and post process the data) 

Using a simpler command-line works,

$ amplxe-cl -c advanced-hotspots -knob collection-detail=stack-sampling -- <exe>
$ amplxe-cl -R callstacks

But, i want to get hw-events with call-stacks reported. 

So, reporting callstacks for hw-events seems to be an issue (profiling does work).  Am i right ?

Thanks,

Rohith

You are basically talking about two different reports.  It appears you cannot "have your cake and eat it, too." :(  But, let me check with some others and get back to you.

Regards,
MrAnderson

Hello,

Currently reports with call stack work for collections that contains events for CPU time calculation (for moder processors it is based on ,CPU_CLK_UNHALTED.REF_TSC event).

"Reporter error" for this case actually an unsupported functuionality - will improve the messaging.

Thansk & Regards, Dmitry

Just clarify - if you use "collect-with runsa" instead of advanced-hotspots, there is no CPU time calclulation in report, so

You cannot use "amplxe-cl -R callstacks" & "amplxe-cl -R hotspots", please use "amplxe-cl -R hw-events".

Thank you, Peter and Dmitry.

Kommentar hinterlassen

Bitte anmelden, um einen Kommentar hinzuzufügen. Sie sind noch nicht Mitglied? Jetzt teilnehmen