プロファイルに基づく最適化の例

次に、基本 PGO フェーズでの具体例を示します。

  1. インストルメンテーション・コンパイルとリンク
    -prof_gen を使用して、インストルメント済み情報付きの実行ファイルを生成します。特に複数のディレクトリにソースファイルを含むアプリケーションの場合には、ほとんどの場合に -prof_dir オプションの使用が推奨されます。-prof_dir は、プロファイル情報が 一定の場所に作成されるようにします。次に例を示します。

    ifort -prof_gen -prof_dir/usr/profdata -c a1.f a2.f a3.f
    ifort -oa1 a1.o a2.o a3.o

    2 番目のコマンドの代わりに、リンカ (ld) を使用して、インストルメント済みのプログラムを直接生成もできます。このような場合、必ず libirc.a ライブラリとリンクしなければなりません。

  2. インストルメント済みのプログラムの実行
    対応するデータセットを使用してインストルメント済みのプログラムを実行し、動的情報ファイルを作成します。

    prompt> a1

    作成される動的情報ファイルには、a1 を実行するたびに別個の名前と .dyn 拡張子が付けられます。また、このインストルメント済みファイルは、特定のデータセットでこのプログラムを実行したときの振舞いを予測するのに役立ちます。このプログラムは、入力データを変えて何度でも実行できます。

  3. フィードバック・コンパイル
    -prof_use を指定してソースファイルのコンパイルとリンクを行い、動的情報を使用して、そのプロファイルに従ってプログラムを最適化します。

    ifort -prof_use -prof_dir/usr/profdata -ipo a1.f a2.f a3.f

    最適化のほかに、コンパイラは pgopti.dpi ファイルを生成します。一般に、フェーズ 1 ではデフォルトの最適化オプション (-O2) を指定し、フェーズ 3 ではさらに高度の最適化オプション (-ip または -ipo) を指定します。この例では、フェーズ 1 で -O2 オプションを指定し、フェーズ 3 で -ipo オプションを指定しています。


-ip または -ipo オプションは、-prof_gen オプションとともに使用すると、コンパイラによって無視されます。

詳細は、「基本的な PGO オプション」を参照してください。