診断 15476: スカラーのコスト: xxxx

同カテゴリーの次の記事

診断 15517: インライン・アセンブリーで EBX/RBX レジスターが使用されているため、このサブルーチンのループはベクトル化できません。

この記事は、インテル® デベロッパー・ゾーンに掲載されている「Dianostic 15476: scalar loop cost: xxxx」の日本語参考訳です。


このベクトル診断メッセージは、インテル® 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: --- ベクトルのコストサマリー終了 ---
ループの終了

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

関連記事