ベクトル化レポートを生成する

ベクトル化レポートは、コード中のベクトル化されたループおよびされなかったループとその理由を示します。ベクトル化レポートを生成するには、/Qvec-report1 または /Qvec-report2 コンパイラー・オプションを使用します。 これらのオプションは、コード中のベクトル化されたループおよびされなかったループとその理由を示すレポートを生成します。

/Qvec-report1 オプションは、コード中のベクトル化されたループを示すレポートを生成し、/Qvec-report2 オプションはコード中のベクトル化されたループおよびされなかったループとその理由を示すレポートを生成します。

/Qvec-report1 オプションを使用するには、[プロジェクト] > [プロパティ] > [C/C++] > [Diagnostics (診断)] > [Vectorizer Diagnostic Level (ベクトライザー診断レベル)] > [Loops Successefully Vectorized(1)(/Qvec-report1) (ベクトル化に成功したループ (1) (/Qvec-report1))] を選択します。

/O1 オプションを指定するとベクトル化が無効になるため、コンパイラーはベクトル化レポートを生成しません。 ベクトル化レポートを生成するには、/O2 オプションを指定してプロジェクトをビルドしてください。

/O2 オプションを指定するには、[プロジェクト] > [プロパティ] > [C/C++] > [Optimization (最適化)] > [General (全般)] >[Maximize Speed (/O2) (実行速度 (/O2))] を選択します。

プロジェクトをリビルドし、実行ファイルを開始します ([デバッグ] > [デバッグなしで開始])。 新しい実行時間を記録します。短縮された時間は主に、ベクトル化レポートで示されているように、行番号 150 の内部ループの自動ベクトル化によるものです。

Driver.c(150) (列 4): リマーク: ループがベクトル化されました。
Driver.c(164) (列 2): リマーク: ループがベクトル化されました。
Driver.c(81) (列 2): リマーク: ループがベクトル化されました。

注

行番号および列番号は異なる場合があります。

/Qvec-report2 オプションにより生成されるリストには、ベクトル化されなかったループとその理由も含まれます。 /Qvec-report2 オプションを追加するには、[プロジェクト] > [プロパティ] > [C/C++] > [Diagnostics (診断)] > [Vectorizer Diagnostic Level (ベクトライザー診断レベル)] > [Loops Successfully and Unsuccessfully Vectorized (2)(/Qvec-report2) (ベクトル化に成功または失敗したループ (2)(/Qvec-report2))] を選択します。

/Qvec-report2 オプションを指定してプロジェクトをリビルドします。

ベクトル化レポートは、Multiply.c の行番号 45 のループが、ループの入れ子の最内ループではないためにベクトル化しなかったことを示しています。 行番号 55 の 2 つのバージョンの最内ループは生成されましたが、ベクトル化されませんでした。

Multiply.c(45) (列 2): リマーク: ループはベクトル化されませんでした: 内部ループではありません。
Multiply.c(55) (列 3): リマーク: ループはベクトル化されませんでした: ベクトル依存関係が存在しています。
Multiply.c(55) (列 3): リマーク: ループはスキップされました: 複数のバージョンがあります。
Driver.c(140) (列 2): リマーク: ループはベクトル化されませんでした: 内部ループではありません。
Driver.c(140) (列 2): リマーク: ループはベクトル化されませんでした: ベクトル化は可能ですが非効率です。
Driver.c(141) (列 2): リマーク: ループはベクトル化されませんでした: ベクトル化は可能ですが非効率です。
Driver.c(145) (列 2): リマーク: ループはベクトル化されませんでした: 内部ループではありません。
Driver.c(148) (列 3): リマーク: ループはベクトル化されませんでした: 内部ループではありません。
Driver.c(150) (列 4): リマーク: ループがベクトル化されました。
Driver.c(164) (列 2): リマーク: ループがベクトル化されました。
Driver.c(81) (列 2): リマーク: ループがベクトル化されました。
Driver.c(69) (列 2): リマーク: ループはベクトル化されませんでした: ベクトル化は可能ですが非効率です。
Driver.c(54) (列 2): リマーク: ループはベクトル化されませんでした: 内部ループではありません。
Driver.c(55) (列 3): リマーク: ループはベクトル化されませんでした: ベクトル化は可能ですが非効率です。

注

次へ


このヘルプトピックについてのフィードバックを送信