roberto.alfieri:pub:vectorization
                Differenze
Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
| Entrambe le parti precedenti la revisioneRevisione precedenteProssima revisione | Revisione precedente | ||
| roberto.alfieri:pub:vectorization [13/06/2017 19:43] – roberto.alfieri | roberto.alfieri:pub:vectorization [14/06/2017 11:30] (versione attuale) – roberto.alfieri | ||
|---|---|---|---|
| Linea 1: | Linea 1: | ||
| ====== Vectorization ====== | ====== Vectorization ====== | ||
| + | |||
| + | [[ http:// | ||
| + | |||
| Processor peak performance includes the speed-up provided by the vector instructions,  | Processor peak performance includes the speed-up provided by the vector instructions,  | ||
| Linea 9: | Linea 12: | ||
| + | |||
| + | |||
| + | |||
| + | {{: | ||
| + | |||
| + | |||
| + | |||
| + | Auto-vectorization is the easiest and more portable way to get vectorization. | ||
| + | |||
| + | The compiler recognize several vectiorization options. | ||
| + | |||
| + | Main vectorization options:  | ||
| + | |||
| + | ^      | ||
| + | ^ KNL      | -xMIC-AVX512  | ||
| + | ^ BDW      | -xCORE-AVX2  | ||
| + | ^ Disable  | ||
| + | |||
| + | 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.1497375818.txt.gz · Ultima modifica: 13/06/2017 19:43 da roberto.alfieri
                
                