インテル® C++ コンパイラー XE 13.1 ユーザー・リファレンス・ガイド
指定されたファイルのコンパイル時に -opt-subscript-in-range (Linux* および OS X*) または /Qopt-subscript-in-range (Windows*) を使用します。
このオプションは、コンパイラーが指定された行のループをベクトル化/並列化するのを助けます。ファイル中のループで大きな整数が使用されていないこと、および中間演算で大きな整数が生成されないことを確認する必要があります。大きな整数は n ビットのマシンでは通常 2n-2 以上の整数のことです。例えば、32 ビットのマシンでは 230 以上が大きな整数となります。
次の例について考えてみます。
int f(int* A, int upper1, int upper2){
long extra = 100.0;
int return_val = 0;
int val;
for(int j=0; j < upper1; j++){
for(int i = 0; i < upper2; i++){
val = A[i*extra];
return_val += val;
}
}
return return_val;
}
このループを安全にベクトル化/並列化できることが分かっている場合は、-opt-subscript-in-range (Linux* および OS X*) または /Qopt-subscript-in-range (Windows*) を使用してこの例をコンパイルすると、最内ループがベクトル化されます。