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

インテル® DPC++/C++ コンパイラー

この記事は、インテル® デベロッパー・ゾーンに掲載されている「Diagnostic 15319: loop was not vectorized: novector directive used」(https://software.intel.com/en-us/articles/cdiag15319) の日本語参考訳です。


このベクトル診断メッセージは、インテル® 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)
<剰余>
ループの終了

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

タイトルとURLをコピーしました