基本的なPGOオプション

オプション 説明
-prof_gen[x]  

インストルメント済み実行の準備として、インストルメント済みコードをオブジェクト・ファイル内に生成するようにコンパイラに命令するオプションです。

-prof_use

プロファイルによって最適化された実行ファイルを生成し、利用可能な動的情報( .dyn )ファイルをいくつかマージして pgopti.dpi ファイルを1個作成するようにコンパイラに命令するオプションです。

コードの動作が実行ごとに大きく異なる場合は、プロファイル情報によって得られるメリットが、最新のプロファイルを維持する作業に見合うものであるかどうか検討する必要があります。基本となるプロファイルに基づく最適化には、次のオプションが PGO フェーズで使用されます。

インストルメント済みコードの作成

-prof_gen[x] オプションは、各基本ブロックの実行カウントを取得するために、プロファイル用プログラムをインストルメントします。インストルメント済みのプログラムを実行する準備として、PGO の第1フェーズ で、インストルメント済みコードをオブジェクト・ファイルに生成するようにコンパイラに指示します。 -prof_genx コンパイルでは、並列化 make を自動的にサポートします。

プロファイルによって最適化された実行ファイルの生成

-prof_use オプションは、PGO の第3フェーズ で使用され、プロファイルによって最適化された実行ファイルを生成し、利用可能な動的情報(.dyn) ファイルをいくつかマージして pgopti.dpi ファイルを1個作成するようにコンパイラに指示します。

動的情報ファイルは、インストルメント済み実行ファイルを実行する第2フェーズで生成されます。

インストルメント済みプログラムを何回か実行する場合は、-prof_use を指定すると、実行するたびに同じ動的情報ファイル同士がマージされ、その前の pgopti.dpi ファイルは上書きされます。

関数分割の無効(Itanium® コンパイラのみ)

-fnsplit-は関数分割を無効にします。フェーズ3で-prof_useにより関数分割は有効になります。これは、ルーチンを異なるセクションに分割することによって、コードの局所性を向上させるためです。異なるセクションとは、コールドまたは、あまり実行されないコードを含むセクションと、残りのコード(ホットコード)を含むセクションです。

次のような理由により、-fnsplit-を使用して、関数分割を無効にできます。

 

Itanium ベース・アプリケーションの場合、-O3 レベルの最適化で -prof_use オプションを使用する場合、 -O3 オプションが必要です。 -O2 またはより低いレベルの最適化で -prof_use オプションを使用する場合、デフォルトのオプションでプロファイル・データを生成できます。