リマーク #15319: ループ はベクトル化されませんでした: novector ディレクティブが使用されています。

同カテゴリーの次の記事

診断 15331: xxxx はベクトル化されませんでした: コンパイラー・オプションまたはディレクティブによる暗黙の precise FP モデルがベクトル化を妨げています。fast FP モデルの使用を検討してください。

この記事は、インテル® デベロッパー・ゾーンに掲載されている「Diagnostic 15319: loop was not vectorized: novector directive used」の日本語参考訳です。


このベクトル診断メッセージは、インテル® C++ コンパイラー 15.0 以降で生成されます。

原因:

このベクトル化診断メッセージは、#pragma novector が指定されているためループがベクトル化されないことを示します。

例:

void foo(double *a, int N){
  int i; 
#pragma novector 
  for(i=0;i<N;i++){ 
    a[i] *= 2; 
  } 
}

$ icl 15319.c /c /Qopt-report:2 /Qopt-report-phase:vec

以下の診断メッセージは、インテル® C++ コンパイラー for Windows* 19.1.0.166 (ビルド 20191121) で生成しました。

最適化レポート開始: foo(double *, int)

    レポート: ベクトルの最適化 [vec]

ループの開始 D:\15319.c(4,3)
   リマーク #15319: ループ はベクトル化されませんでした: novector ディレクティブが使用されています。
ループの終了

ループの開始 D:\15319.c(4,3)
<剰余>
ループの終了

コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。

関連記事