- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Marcel, some key points to note in addition to what Tim pointed out. 1) Make sure the app works without -ipo. That said, try ipo only on performance critical files/libs instead of the entire large project which will give you the ROI and reduce build time drastically. SInce IPO is indeed very memory bound process it's very important to remember that memory is a bottle neck. Use /QipoN switch to generate true object files for link time compilations but also specify /Qipo-jobs<n> where n is equal to the number of processors so that that many jobs can be executed simultaneously during the link phase and thus speeding up build time especially on multi-systems with sufficient memory. The user reference manual at: https://software.intel.com/en-us/node/522666
_Kittur
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
If you wish to use ICL IPO on a large project, you must read the ICL documentation index>compiler reference>optimization>IPO>IPO for large programs.
/Qip works on functions in a single file. If a project is organized appropriately (not easy), it may be capable of optimizing better than /Qipo, but it still consumes lots of memory and may not run if compiling for 32-bit target.
You didn't give enough particulars on your use of Advisor, but I believe the current one expects compile options like /Qparallel-source-info:2 -debug:inline-debug-info -O. There is a separate forum for Advisor.
My experience with Advisor is that it misses legacy looping (more specifically loops without a pre-determined count), even possibly while() and do..while(). If you don't agree with Intel's terminology excluding those from "code modernization," I sympathize.
I guess Visual Studio 2012 qualifies as an "old Microsoft compiler." That one appears to have more instances than newer ones where it can out-perform ICL in the absence of __restrict and #pragma insertion. __restrict enables different optimizations with CL and ICL.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Marcel, some key points to note in addition to what Tim pointed out. 1) Make sure the app works without -ipo. That said, try ipo only on performance critical files/libs instead of the entire large project which will give you the ROI and reduce build time drastically. SInce IPO is indeed very memory bound process it's very important to remember that memory is a bottle neck. Use /QipoN switch to generate true object files for link time compilations but also specify /Qipo-jobs<n> where n is equal to the number of processors so that that many jobs can be executed simultaneously during the link phase and thus speeding up build time especially on multi-systems with sufficient memory. The user reference manual at: https://software.intel.com/en-us/node/522666
_Kittur
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
While VTune may identify the critical files, you may have to run Find in Files to locate the files which call the critical files. These would be the files that would benefit from multi-file IPO with these critical files. Your end solution would then have three levels, with the middle level being multi-file IPO'd with the lowest level, but not between middle levels nor with upper most level.
Jim Dempsey
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
>>if I knew how to ask for it.
I run into that a lot. A nice feature may be there, but the documentation does not lend itself to discovery of the feature without a full re-read of the complete documentation. Too often I have to resort to an external search tool to find topics in the documentation.
Jim Dempsey
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Marcel, Jim's comment is right on. BTW, you can find more details at PGO If using PGO helped with MS then your code is a good candidate for optimizing with pgo. Obviously you'll have to use that feature with Intel compiler as well 'cause you want the compiler to optimize more frequently executed paths in your code. If you still think there's a performance issue then you'll have to attach a reproducer so we can file the issue with the developers, appreciate much.
_Kittur
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Understood, Marcel. BTW, try with the latest release as it could be related to the issue at: https://software.intel.com/en-us/forums/topic/557303.
_Kittur
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I forgot to mention that the multi-tier approach permits more parallelization in the build process.
Jim Dempsey
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
@Marcel: I assume the earlier responses helped resolve your issue? Let us know if you need any further clarification, appreciate much.
_Kittur
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thanks Marcell for the feedback. Again, profiling the application with Vtune and applying IPO to critical files/hot spots (instead of whole program optimization) should help. Additionally it should also reduce the build time as well. I assume you filed issues in Premier Support and posted error numbers there? IPO should handle that many and more files per-se but it's hard to decipher what's going on unless the issue is triaged accordingly. Anyways, just letting you know that the latest version 16.0 is out and an update release will happen soon which you can try out to see if those errors you mention gets resolved. Again, thanks for your input which I'll pass on to the product team.
Regards,
Kittur

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page