ベクトル化レポートは、コード中のベクトル化されたループおよびされなかったループとその理由を示します。ベクトル化レポートを生成するには、-vec-report1 または -vec-report2 コンパイラー・オプションを使用します。 これらのオプションは、コード中のベクトル化されたループおよびされなかったループとその理由を示すレポートを生成します。
-vect-report1 オプションは、コード中のベクトル化されたループを示すレポートを生成し、-vec-report2 オプションはコード中のベクトル化されたループおよびされなかったループとその理由を示すレポートを生成します。
-O1 オプションを指定するとベクトル化が無効になるため、コンパイラーはベクトル化レポートを生成しません。 ベクトル化レポートを生成するには、-O2 オプションと -vec-report1 オプションを指定してプロジェクトをコンパイルしてください。
ifort -real-size 64 -O2 -vec-report1 matvec.f90 driver.f90 -o MatVector
プログラムを再コンパイルし、MatVector を実行します。 新しい実行時間を記録します。短縮された時間は主に、ベクトル化レポートで示されているように、行番号 32 の内部ループの自動ベクトル化によるものです。
matvec.f90(32) (列 3): リマーク: ループがベクトル化されました。 matvec.f90(38) (列 6): リマーク: ループがベクトル化されました。 driver.f90(59) (列 5): リマーク: ループがベクトル化されました。 driver.f90(61) (列 5): リマーク: ループがベクトル化されました。 driver.f90(80) (列 29): リマーク: ループがベクトル化されました。
-vec-report2 オプションにより生成されるリストには、ベクトル化されなかったループとその理由も含まれます。
-vec-report2 オプションを指定してプロジェクトを再コンパイルします。
ifort -real-size 64 -O2 -vec-report2 matvec.f90 driver.f90 -o MatVector
ベクトル化レポートは、matvec.f90 の行番号 33 のループが、ループの入れ子の最内ループではないためにベクトル化しなかったことを示しています。
matvec.f90(32) (列 3): リマーク: ループがベクトル化されました。 matvec.f90(33) (列 3): リマーク: ループはベクトル化されませんでした: 内部ループではありません。 matvec.f90(38) (列 6): リマーク: ループがベクトル化されました。 driver.f90(59) (列 5): リマーク: ループはベクトル化されませんでした: 内部ループではありません。 driver.f90(59) (列 5): リマーク: ループはベクトル化されませんでした: ベクトル化は可能ですが非効率です。 driver.f90(59) (列 5): リマーク: ループはベクトル化されませんでした: 内部ループではありません。 driver.f90(59) (列 5): リマーク: ループはベクトル化されませんでした: 添字が複雑すぎます。 driver.f90(59) (列 5): リマーク: ループはベクトル化されませんでした: 内部ループではありません。 driver.f90(59) (列 5): リマーク: ループがベクトル化されました。 driver.f90(61) (列 5): リマーク: ループはベクトル化されませんでした: ベクトル化は可能ですが非効率です。 driver.f90(61) (列 5): リマーク: ループがベクトル化されました。 driver.f90(80) (列 29): リマーク: ループがベクトル化されました。 driver.f90(74) (列 7): リマーク: ループはベクトル化されませんでした: 非標準のループはベクトル化候補ではありません。