- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
I'm currently using icc version 12.0.4 20110427. I read in the compiler optimization manual that. -O3 option, by default switches on the loop unrolling and loop blocking. I want to turn off these optimizations. How to do it ?
I'm currently using icc version 12.0.4 20110427. I read in the compiler optimization manual that. -O3 option, by default switches on the loop unrolling and loop blocking. I want to turn off these optimizations. How to do it ?
Link Copied
2 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
I will move this to our Intel C++ Compiler forum where our engineers can have a look at your question.
Best regards,
==
Aubrey W.
Intel Software Network Support
I will move this to our Intel C++ Compiler forum where our engineers can have a look at your question.
Best regards,
==
Aubrey W.
Intel Software Network Support
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
There's a documented compiler switch -unroll0 which should turn off unrolling (beyond what is inherent in vectorization). For an individual loop, $pragma unroll(0) or other pragmas may be useful.
In general, -O2 is already fairly aggressive in most situations, and we've had to drop back to it frequently in order to avoid additional optimizations presented by -O3.
If you mean loop distribution and fusion (altering the boundaries of for loops), besides considering -O2, you could consider placing
#pragma distribute point
immediately after the for(), so as to prevent the compiler from splitting the loop, or between loops, to prevent fusion.
In general, -O2 is already fairly aggressive in most situations, and we've had to drop back to it frequently in order to avoid additional optimizations presented by -O3.
If you mean loop distribution and fusion (altering the boundaries of for loops), besides considering -O2, you could consider placing
#pragma distribute point
immediately after the for(), so as to prevent the compiler from splitting the loop, or between loops, to prevent fusion.

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