What does vectorization mean?

vehomzzz picture vehomzzz · Oct 4, 2009 · Viewed 23.2k times · Source

Is it a good idea to vectorize the code? What are good practices in terms of when to do it? What happens underneath?

Answer

Zed picture Zed · Oct 4, 2009

Vectorization means that the compiler detects that your independent instructions can be executed as one SIMD instruction. Usual example is that if you do something like

for(i=0; i<N; i++){
  a[i] = a[i] + b[i];
}

It will be vectorized as (using vector notation)

for (i=0; i<(N-N%VF); i+=VF){
  a[i:i+VF] = a[i:i+VF] + b[i:i+VF];
}

Basically the compiler picks one operation that can be done on VF elements of the array at the same time and does this N/VF times instead of doing the single operation N times.

It increases performance, but puts more requirement on the architecture.