roberto.alfieri:pub:vectorization
Vectorization
Vectorization and Code Optimization
Processor peak performance includes the speed-up provided by the vector instructions, but in order to exploit it you need specific programming techniques.
Auto-vectorization is the easiest and more portable way to get vectorization.
The compiler recognize several vectiorization options.
Main vectorization options:
Intel compiler | |
---|---|
KNL | -xMIC-AVX512 |
BDW | -xCORE-AVX2 |
Disable | -no-vec |
Not all loops can be vectorized:
Some examples:
- Loop with dependencies between iterations
for (i=1; i<MAX; i++) { d[i] = e[i] – a[i-1]; a[i] = b[i] + c[i]; }
- Complex loops
- Function calls inside the loop:
for (int i = 0; i < N; i++) a[i] = foo(b[i]);
- Loops on data that are not aligned in memory
roberto.alfieri/pub/vectorization.txt · Ultima modifica: 14/06/2017 11:30 da roberto.alfieri