< 目次

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

コンパイラーは、ソース行の境界を越えて最適化できる場合、インライン展開などの追加の最適化を実行することができます。インライン展開は、-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: ループがベクトル化されました。
      ループの終了
   ループの終了
ループの終了 

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

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