インテル® C++ コンパイラー 14.0 ユーザー・リファレンス・ガイド
"#pragma ivdep" を指定されたループの前に追加します。 このプラグマは、いくつかの想定されるループの繰り返し間のデータ依存を無視して、指定された行のループのベクトル化を有効にします。
次の例について考えてみます。
void foo(float *a, int x, int n) {
int i;
for (i=0; i<n; i++) {
a[i] = a[i+x]+1;
}
return;
}この例では、各反復がその前の反復に依存しており、x が -1 になる可能性があるため、コンパイラーはこのループをベクトル化できません。 x が正の数であることが分かっている場合は、このループをベクトル化できます。
安全であることが分かっている場合は、次のようにプラグマを追加できます。
void foo(float *a, int x, int n) {
int i;
#pragma ivdep
for (i=0; i<n; i++) {
a[i] = a[i+x]+1;
}
return;
}