基本的な PGO オプション

基本的な PGO 最適化に使用されるオプションは、次のとおりです。

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

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

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

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

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

動的情報ファイルは、フェーズ 2 でインストルメント済みの実行ファイルを実行した時点で生成します。

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

32 ビットのカウンタの使用、-prof_format_32

デフォルトでは、インテル® Fortran コンパイラは、.dyn および .dpi ファイルにおける多数のイベントを処理するために 64 ビットのカウンタを作成します。旧バージョンのコンパイラとの互換性を維持するには、-prof_format_32 オプションで、32 ビットのカウンタを生成します。.dyn および .dpi ファイルの形式が現在のコンパイルで使用されている形式と非互換の場合、次のメッセージが生成されます。

Error:  xxx.dyn has old or incompatible file format - delete file and redo instrumentation compilation/execution.

.dyn および .dpi ファイル用の64 ビットのカウンタやポインタは、 各種プラットフォームの異なるポインタサイズのために生じる不一致を回避します。

関数分割の無効、-fnsplit-

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

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

Itanium ベース・アプリケーションでは、-prof_use オプションと -O3 レベルの最適化を組み合わせて使用する場合は、-O3 オプションがオンになっていなければなりません。-prof_use オプションと -O2 またはそれ以下のレベルの最適化を組み合わせて使用する場合は、デフォルトのオプションを使用したプロファイル・データを生成できます。

「PGO の使用例」を参照してください。