Intel® C++ Compiler
Community support and assistance for creating C++ code that runs on platforms based on Intel® processors.

How to verify if SSP worked?

schngrg
Beginner
352 Views
I was evaluating Intel C++ compiler 9.0 with VTune 7.2 on windows, and am trying to use SSP (speculative precomputation).

As per the help files, SSP build is a 5 step process, I am using the following options...

1. Build with -Qprof-genx -Qprof-dirc:profdata
2. Test Runs on representative data

.dyn files are created nicely in c:profdata

3. I clean the previous objs and exe, and build again with -O3 -Qipo -Qprof-use -Qprof-gen-sampling -Qprof-dirc:profdata

This compiles all the .dyn files and built a .dpi file. IPO objs are also generated and used.

(I also individually verified both IPO (with pgo) and PGO (with ipo but without prof-gen-sampling) and both result in significant speed ups each.)

Great, everything fine till now.

4. Now for SSP, I ran the executable with "profrun -dcache".

My source files and obj/build files are in different directories. So I use a seperate directory as "current directory" from where I execute all the build/profiling/sampling commands using relative paths. The pgopti.hpi file is generated in current directory and updated after each run.

Everything still seems to be going fine.

5. Now I again clean all the objs, exe and pdb files. And build the source again with -O3 -Qipo -Qprof-use -Qssp -Qprof-dirc:profdata

The build goes fine again, but unlike previous times, their is no visual clue/message on screen indicating if it actually is doing SSP, or if it found the hpi file. I copied the file to c:profdata, but still I get same executable. I tried deleting the hpi file from everywhere and still I get the same executable (strange). I tried building without cleaning the PDB file, still same result.

Performance is also almost same as that of a PGO build without SSP.

When I run the executable and check its status in task-manager, it shows that my executable is still having a single thread. I think after SSP there should be two threads.

I couldnt find a way to specify hpi file's path to compiler. How to verify if compiler could actually do SSP optimizations or not? I tried generating all the opimizations reports but couldnt see in them anything which sounded like SSP. Are SSP optimizations mentioned in the reports, what are they labelled as?

What am I doing wrong with SSP build? And out of everything I have tried, which is the right way to do a proper SSP build?

Thanks
0 Kudos
2 Replies
schngrg
Beginner
352 Views
Regarding my post above, it will be very helpful if anyone can just tell me if...

a) If they have been able to do a successful SSP build.
b) Is the compiler supposed to output on screen any SSP related message when using /Qssp and when it has found the hpi file, or is it silent about this process?

Thanks
0 Kudos
Xinmin_T_Intel
Employee
352 Views
SSP does delinquent loads analysis, program slicing and generate helper thread code. It is profiling and sampling feedback-based optimization, if the compiler didnot find delinquent loads, or the performance benefit via. helper threadng is small vs. cost,then no SSP code is generated. Then no message will give out.
What you did is correct. It could simply due to no code worth to be SSP'ed.
You can use Vtune to see you have delinquent loads in your code.
0 Kudos
Reply