I am using Intel Advisor XE 2013 (build 270011) on Linux. I am using the Survey analysis to profile my program (compiled with gcc and flags: -g and -O3). However, every time that I run the analysis I get different execution percentages for a loop of interest, although everytime I am using the same input data and parameters. The total execution time of my program is around 0.72 s.
I want to ask you:
Is it expected to have different execution percentages when profiling using Advisor?
Are there any needed compiler/linker flags that I forgot?
Should I increase the execution time of my program? Should I decrease the sampling time?
Thank you very much!
In few words:
Your compilation flags are correct. This is expected behavior for applications running in milliseconds range (small execution time). In order to get more stable and representative application profile you need to increase program execution time by either using bigger workload/dataset or perhaps by "looping" the code which you profile.
Simulteneously decreasing sampling interval and specifying "Duration Time Estimate" equal to "Under 1 minute" (under the same Properties tab as the one with "sampling inteval") will also improve things a bit, however I don't expect very significant improvement for <1s runs.
In more details:
Survey analysis is based on statistical sampling profiling technique, which means that loop percentage execution time may a little bit vary from run to run, especially when running small, <1s workloads. On the positive side, sampling profiling approach is "not intrusive", which means it doesn't disturb and doesn't impact your program execution, which is very important for performance analysis.
At the same time, Advisor Suitability and Correctness tools, which I would classify as most important in Advisor XE, don't actually use given statistical approach so you can use small datasets; even more so - for Advisor Correctness it's recommended to use small representative dataset when it's possible. Summaryzing: general recommendation is to profile optimized binary with production (=big) dataset when running Survey and Suitability performance analysis, and to use non-optimized binary on non-production (=small) dataset when running Correctness.
Please let me know if you have any other questions on Advisor side,