ベクトル化レポートは、コード中のベクトル化されたループおよびされなかったループとその理由を示します。ベクトル化レポートを生成するには、qopt-report-phase=vec コンパイラー・オプションを qopt-report=1 または qopt-report=2 とともに使用します。
qopt-report-phase=vec とともに qopt-report=1 を指定すると、コード中のベクトル化されたループを示すレポートを生成され、qopt-report-phase=vec とともに qopt-report=2 を指定すると、コード中のベクトル化されたループおよびされなかったループとその理由を示すレポートが生成されます。
O1 オプションを指定するとベクトル化が無効になるため、コンパイラーはベクトル化レポートを生成しません。ベクトル化レポートを生成するには、O2、qopt-report-phase=vec、および qopt-report=1 オプションを指定してプロジェクトをコンパイルしてください。
icc -std=c99 -O2 -D NOFUNCCALL -qopt-report=1 -qopt-report-phase=vec Multiply.c Driver.c -o MatVector
注: -D NOFUNCCALL で Matvec 関数の呼び出しをインライン展開された同等のコードに置き換えます。
プログラムを再コンパイルし、MatVector を実行します。新しい実行時間を記録します。短縮された時間は主に、ベクトル化レポート Driver.optrpt で示されているように、行番号 145 の内部ループの自動ベクトル化によるものです。
ループの開始 Driver.c(140,5) リマーク #25460: ループの最適化はレポートされていません。 ループの開始 Driver.c(143,9) リマーク #25460: ループの最適化はレポートされていません。 ループの開始 Driver.c(145,13) リマーク #15300: ループがベクトル化されました。 ループの終了 ループの開始 Driver.c(145,13) <ベクトル化の剰余ループ> ループの終了 ループの終了 ループの終了
行番号および列番号は異なる場合があります。
qopt-report-phase=vec,loop とともに qopt-report=2 を指定すると、生成されるリストにベクトル化されなかったまたはマルチバージョンが生成されなかったループとその理由も含まれます。
qopt-report-phase=vec,loop とともに qopt-report=2 オプションを指定してプロジェクトを再コンパイルします。
icc -std=c99 -O2 -D NOFUNCCALL -qopt-report-phase=vec,loop -qopt-report=2 Multiply.c Driver.c -o MatVector
ベクトル化レポート Multiply.optrpt は、Multiply.c の行番号 37 のループが、ループの入れ子の最内ループではないためにベクトル化しなかったことを示しています。行番号 49 の最内ループの 2 つのバージョンが生成され、1 つのバージョンはベクトル化されました。
ループの開始 Multiply.c(37,5) リマーク #15542: ループはベクトル化されませんでした: 内部ループがすでにベクトル化されています。 ループの開始 Multiply.c(49,9) <ベクトル化のピールループ、マルチバージョン v1> ループの終了 ループの開始 Multiply.c(49,9) <マルチバージョン v1> リマーク #25228: データの依存関係のループをマルチバージョンにしました。 リマーク #15300: ループがベクトル化されました。 ループの終了 ループの開始 Multiply.c(49,9) <代替アライメントでベクトル化されたループ、マルチバージョン v1> ループの終了 ループの開始 Multiply.c(49,9) <ベクトル化の剰余ループ、マルチバージョン v1> ループの終了 ループの開始 Multiply.c(49,9) <マルチバージョン v2> リマーク #15304: ループはベクトル化されませんでした: マルチバージョンのベクトル化できないループ・インスタンスです。 リマーク #25439: 剰余ありアンロール - 2 ループの終了 ループの開始 Multiply.c(49,9) <剰余、マルチバージョン v2> ループの終了 ループの終了
行番号および列番号は異なる場合があります。
qopt-report および qopt-report-phase コンパイラー・オプションの詳細については、『インテル® C++ コンパイラー・デベロッパー・ガイドおよびリファレンス』の「コンパイラー・オプション」を参照してください。