プロシージャー間の最適化を使用してパフォーマンスを向上する

コンパイラーは、ソース行の境界を越えて最適化できる場合、インライン展開などの追加の最適化を実行することができます。インライン展開は、/Qipo オプションで有効になります。

/Qipo オプションを使用してプログラムをリビルドし、プロシージャー間の最適化を有効にします。

[Optimization [Intel C++] (最適化 [インテル® C++])] > [Interprocedural Optimization (プロシージャー間の最適化)] > [Multi-file (マルチファイル) (/Qipo)] を選択します。

ベクトル化レポートは ipo_out.optrpt に出力されます。

ループの開始 Driver.c(152,9)
Driver.c(152,9): リマーク #15542: ループはベクトル化されませんでした: 内部ループがすでにベクトル化されています。

ループの開始 Multiply.c(37,5) インライン展開後 Driver.c(150,9)
Multiply.c(37,5): リマーク #15542: ループはベクトル化されませんでした: 内部ループがすでにベクトル化されています。

ループの開始 Multiply.c(49,9) インライン展開後 Driver.c(150,9)
Multiply.c(50,13): リマーク #15388: ベクトル化のサポート: 参照 a[0][i][j] にアラインされたアクセスが含まれています。
Driver.c(150,9): リマーク #15388: ベクトル化のサポート: 参照 x[j] にアラインされたアクセスが含まれています。
Multiply.c(49,9): リマーク #15305: ベクトル化のサポート: ベクトル長 2
Multiply.c(49,9): リマーク #15399: ベクトル化のサポート: アンロールファクターが 4 に設定されます。
Multiply.c(49,9): リマーク #15309: ベクトル化のサポート: 正規化されたベクトル化のオーバーヘッド 0.594
Multiply.c(49,9): リマーク #15300: ループがベクトル化されました
Multiply.c(49,9): リマーク #15448: マスクなしアライン・ユニット・ストライド・ロード: 2 
Multiply.c(49,9): リマーク #15475: --- ベクトルのコストサマリー開始 ---
Multiply.c(49,9): リマーク #15476: スカラーコスト: 9 
Multiply.c(49,9): リマーク #15477: ベクトルコスト: 4.000 
Multiply.c(49,9): リマーク #15478: スピードアップの期待値: 2.000 
Multiply.c(49,9): リマーク #15488: --- ベクトルのコストサマリー終了 ---
LOOP END

ループの開始 Multiply.c(49,9) インライン展開後 Driver.c(150,9)
ベクトル化の剰余ループ
Multiply.c(50,13): リマーク #15388: ベクトル化のサポート: 参照 a[0][i][j] にアラインされたアクセスが含まれています。
Driver.c(150,9): リマーク #15388: ベクトル化のサポート: 参照 x[j] にアラインされたアクセスが含まれています。
Multiply.c(49,9): リマーク #15335: 剰余ループはベクトル化されませんでした: ベクトル化は可能ですが非効率です。オーバーライドするには vector always ディレクティブまたは -vec-threshold0 を使用してください。
Multiply.c(49,9): リマーク #15305: ベクトル化のサポート: vector length 2
Multiply.c(49,9): リマーク #15309: ベクトル化のサポート: 正規化されたベクトル化のオーバーヘッド 2.417
ループの終了
ループの終了
ループの終了

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

ここで、実行ファイルを開始して、実行時間を記録してください。

次へ: 追加の演習