この記事は、インテル® デベロッパー・ゾーンに掲載されている「Dianostic 15476: scalar loop cost: xxxx」(https://software.intel.com/en-us/articles/cdiag15476) の日本語参考訳です。
このベクトル診断メッセージは、インテル® C++ コンパイラー 15.0 以降で生成されます。
原因:
このベクトル化診断メッセージは、レポートレベル 3 以上で生成されます。この診断メッセージは、ループ本体の各反復がスカラーオペランドで実行された場合のサイクル数の静的予測値を示します。以下は、このメッセージを生成するコードの例です。
例:
#include<stdio.h> #include<math.h> #define SIZE 100 int main(){ float a[SIZE], x; a[:] = __sec_implicit_index(0); x = __sec_reduce_all_zero(a[:] == 1 ? 0 : 1); printf("%fn",x); return 0; }
$ icl 15476.c /Qqopt-report:3 /Qopt-report-phase:vec /Qopt-report-file:stderr
以下の診断メッセージは、インテル® C++ コンパイラー for Windows* 19.1.0.166 (ビルド 20191121) で生成しました。
最適化レポート開始: main()
レポート: ベクトルの最適化 [vec]
ループの開始 D:\15476.c(6,12)
リマーク #15300: ループがベクトル化されました。
リマーク #15449: マスクなしアライン・ユニット・ストライド・ストア: 1
リマーク #15475: --- ベクトルのコストサマリー開始 ---
リマーク #15476: スカラーのコスト: 4
リマーク #15477: ベクトルのコスト: 1.000
リマーク #15478: スピードアップの期待値: 4.000
リマーク #15487: 型変換: 1
リマーク #15488: --- ベクトルのコストサマリー終了 ---
ループの終了
ループの開始 D:\15476.c(7,9)
リマーク #15300: ループがベクトル化されました。
リマーク #15448: マスクなしアライン・ユニット・ストライド・ロード: 1
リマーク #15475: --- ベクトルのコストサマリー開始 ---
リマーク #15476: スカラーのコスト: 165
リマーク #15477: ベクトルのコスト: 43.250
リマーク #15478: スピードアップの期待値: 3.810
リマーク #15488: --- ベクトルのコストサマリー終了 ---
ループの終了
コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。