インテル® C++ コンパイラー XE 13.1 ユーザー・リファレンス・ガイド
次の例について考えてみます。
void foo(float *a, int m, int n) {
int i;
for (i=0; i<n; i++) {
a[i] = a[i+m]+1;
}
return;
}
この例では、m についてのより詳しい情報がないと、コンパイラーはこのループを並列化できません。例えば、m がマイナスの場合、各反復は前の反復に依存します。m が n よりも大きいことが分かっていれば、ループを並列化できます。
安全であることが分かっている場合は、次のようにプラグマを追加できます。
void foo(float *a, int m, int n) {
int i;
#pragma parallel
for (i=0; i<n; i++) {
a[i] = a[i+m]+1;
}
return;
}