Decide on wheter parallelize or unroll a loop

How can I instruct the compiler to unroll a loop instead of generating vector instructions?

I’m compiling with -acc=noautopar -ta=multicore -Munroll=c:10

#pragma unroll
for(i=0; i<10; i++)
 do_stuff;

Despite this the compiler “generates sse code for the loop”…

Hi Alga,

Try using “#pragma novector” stop the loop from being vecotrized.

Let us know if that works for you.

  • Mat

Hi Mat,

Yes the loop is not vectorized anymore.
On the other hand it does not get unrolled, not even with

#pragma novector unroll

nor with

#pragma novector unroll(10)

Do you have a reproducing example you can post?

Thanks,
Mat