診断 15414: ループはベクトル化されませんでした: 最適化後に xxxx 本体が空になったため、ベクトル化するものがありません。

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

この記事は、インテル® デベロッパー・ゾーンに掲載されている「Diagnostic 15414: loop was not vectorized: nothing to vectorize since xxxx body became empty after optimizations」(https://software.intel.com/en-us/articles/cdiag15414) の日本語参考訳です。


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

原因:

この診断メッセージは、ループ本体が空であると出力されます。次の例では、演算 a = b + 1 はループ外に移動して一度だけ行うことができます。これはループ内の唯一の操作であるため、ループ外に移動するとループ本体は空になります。

例:

int foo(int a, int b, int n){
  int i;
  for(i = 0; i < n; i++)
    a = b + 1;
  return a;
}

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

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

インテル(R) Advisor はベクトル化を支援するため、ソースコードで最適化レポートメッセージを表示します。
詳細は、"https://software.intel.com/en-us/intel-advisor-xe" を参照してください。

インテル(R) 64 対応インテル(R) C++ コンパイラー (インテル(R) 64 対応アプリケーション用) バージョン 19.1.0.166 ビルド 20191121

コンパイラー・オプション: /c /O2 /Qopt-report:2 /Qopt-report-phase:vec

ループ本体が空になったためベクトル化が行われず、レポートには何も表示されません。

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

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