- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I use Intel C++ Compiler 8.1 with Visual Studio 6.0 (Enterprise version). I do not wish to use IPO and PGO from the command line. How can I tell Visual C++ 6.0 to invoke IPO and PGO by adding option to the Project's setting?
After I compile my source code, it should be able to save file to debug or release directory.
I looked at User's Guide under Intel directory, but it does not provide a full detail. Can you please help by providing step by step instruction? I appreciate this.
Bryan Parkoff
Link Copied
7 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
For using IPO:
Open the "project setting"under "C/C++" tab, add "/Qipo" to the "Project Options" field.under "Link" tab, add "/Qipo" to the "Project Options" field too.Now rebuild your application. It usually takes a long time for linking.It's better to try -Qipo with "-QxP -O2" together.
For using PGO:
Step1: instrument your appOpen the "project setting"under "C/C++" tab, add "/Qprof_gen" to the "Project Options" field.Now rebuild your applicationStep2: run your app to generate the dataStep3: optimize your app with the generated data from Step2Open the "project setting"under "C/C++" tab, add "/Qprof_use" to the "Project Options" field.Now rebuild your applicationNote: if Step3 couldn't find the data, use "/Qprof_dir" tospecify the directory wherethe data file (*.dynor *.dpi) located.
Please check the User's Guide for more detail information about PGO's stages.
Thanks,
Jennifer
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Jennifer,
Thank you very much for the information. I have created *.dyn and *.dpi. How do I find the program like Profiler to read *.dpi?
Bryan Parkoff
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
When the compiler is invoked with -prof_use, it looks for the corresponding .dpi and .dyn files and extracts data from them.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I'm using IPO and PGO at the same time (but on Linux.)
Now I wonder whether when I use PGO, IPO is really effective or not. When PGO is enabled, in phase 3, does IPO really help optimization? PGO does all the optimization (relocate procedures in the assumedly best places,) so I suspect IPO shouldn't help at all or just a little bit.....but since IPO is available along with PGO according to the manual and actually icc/icpc accept them at the same time in phase 3, so IPO is supposed to work "effectively" with PGO. What is the truth? And if both work at the same time, how do they work mutually?
Making a testcase for this looks difficult (it will need large files with many functions and many branches) so I am reluctant to make a testcase. If anyone provides an easy way to make a testcase or an example, it will be highly appreciated.
Optimization of ICC is very strong along with vectorization;the best for Intel processors, so still more I am interested in these features.
Thanks in advance.
Now I wonder whether when I use PGO, IPO is really effective or not. When PGO is enabled, in phase 3, does IPO really help optimization? PGO does all the optimization (relocate procedures in the assumedly best places,) so I suspect IPO shouldn't help at all or just a little bit.....but since IPO is available along with PGO according to the manual and actually icc/icpc accept them at the same time in phase 3, so IPO is supposed to work "effectively" with PGO. What is the truth? And if both work at the same time, how do they work mutually?
Making a testcase for this looks difficult (it will need large files with many functions and many branches) so I am reluctant to make a testcase. If anyone provides an easy way to make a testcase or an example, it will be highly appreciated.
Optimization of ICC is very strong along with vectorization;the best for Intel processors, so still more I am interested in these features.
Thanks in advance.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
The combination of IPO and PGO can typically be better than using one of the advanced optimizations alone. IPO enables inlining and with PGO, the compiler will know the most frequently called functions so that it can make a bang for buck tradeoff between inlining to reduce call return overhead and the code size increase associated with inlinine. No point inlining functions that are rarely called.
Max
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thank you and sorry if it sounded argumentative.
Actually I usually use IPO when it's available (I mean, I use IPO except for in phase 1 of PGO.)
As you say, IPO determines inlining, and reading optimization documentation, I found it does more than PGO (alias analysis(I don't know what it means yet) for better vectorization, besides interprocedural optimization. PGO simply predicts branching, and analyzes code utilizations, relocates procedures to utilize cache/paging effectively.
regards,
Actually I usually use IPO when it's available (I mean, I use IPO except for in phase 1 of PGO.)
As you say, IPO determines inlining, and reading optimization documentation, I found it does more than PGO (alias analysis(I don't know what it means yet) for better vectorization, besides interprocedural optimization. PGO simply predicts branching, and analyzes code utilizations, relocates procedures to utilize cache/paging effectively.
regards,
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I did quite a lot of test with IPO, PGO, and vectorization.
My experience is that vectorization (/QxN) does a great job, but IPO and PGO brings nothing on top of that. Frankly, IPO and/or PGO slows down the code a bit.
My conclusion is that every software project is different. You have to find out yourself what the best optimization options are for your project.
Turning on some (or all) optimization features does not necessarily mean faster code.
Regards
Martin
My experience is that vectorization (/QxN) does a great job, but IPO and PGO brings nothing on top of that. Frankly, IPO and/or PGO slows down the code a bit.
My conclusion is that every software project is different. You have to find out yourself what the best optimization options are for your project.
Turning on some (or all) optimization features does not necessarily mean faster code.
Regards
Martin
Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page