コンパイラーは、ソース行の境界を越えて最適化できる場合、インライン展開などの追加の最適化を実行することができます。インライン展開は、-ipo オプションで有効になります。
-ipo オプションを使用してプログラムを再コンパイルし、プロシージャー間の最適化を有効にします。
ifort -real-size 64 -qopt-report=2 -qopt-report-phase=vec -D ALIGNED -ipo matvec.f90 driver.f90 -o MatVector
ベクトル化メッセージは driver.f90 (行 70) のインライン展開の場所を示していることに注目してください。これは、ipo_out.optrpt で確認できます。
ループの開始 driver.f90(73,16) リマーク #15541: ループはベクトル化されませんでした: 内部ループがすでにベクトル化されています。 ループの開始 matvec.f90(32,3) インライン展開後 driver.f90(70,14) リマーク #15398: ループはベクトル化されませんでした: ループは memset または memcpy に変換されました。 ループの終了 ループの開始 matvec.f90(33,3) インライン展開後 driver.f90(70,14) リマーク #15541: ループはベクトル化されませんでした: 内部ループがすでにベクトル化されています。 ループの開始 matvec.f90(38,6) インライン展開後 driver.f90(70,14) リマーク #15399: ベクトル化のサポート: アンロールファクターが 4 に設定されます。 リマーク #15300: ループがベクトル化されました。 ループの終了 ループの終了 ループの終了
ここで、実行ファイルを開始して、実行時間を記録してください。