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 ?
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.