Sun Studio 12: Fortran ユーザーズガイド

3.4.166 -xprofile={ collect[:name]| use[:name]| tcov}

実行時のプロファイル用データを収集、またはそのデータを使用して最適化を行うか、基本ブロックのカバレージ分析を行います。

高い最適化レベルでのコンパイル (-xO5) が拡張されて、コンパイラには実行時パフォーマンスのフィードバックが提供されます。コンパイラが最良の最適化を実行するために必要なプロファイルフィードバックを生成するには、最初に -xprofile=collect を指定してコンパイルし、標準的なデータセットに対して実行可能ファイルを実行し、次に最高の最適化レベルと -xprofile=use を指定して再コンパイルします。

collect[: name]

あとで -xprofile=use オプションを使用してプログラムをコンパイルするときに、オプティマイザが使用する実行頻度データを収集し保存します。コンパイラは、文の実行頻度を測定するコードを生成します。

name には、解析対象の実行可能ファイル名を指定します。この名前の指定は省略することができます。name が指定されていない場合は、a.out が実行可能ファイル名とみなされます。

-xprofile=collect:name でコンパイルしたプログラムは、デフォルトでは、実行時に name .profile サブディレクトリを作成し、実行時フィードバック情報が保存されます。サブディレクトリのファイル feedback に実行時のプロファイルデータが書き込まれます。プログラムを複数回実行すると、実行頻度データは feedback ファイルに蓄積されていくので、以前の実行頻度データは失われません。

環境変数 SUN_PROFDATA および SUN_PROFDATA_DIR を設定すると、-xprofile=collect でコンパイルされたプログラムが実行時のプロファイルデータを書き込むためのファイルおよびディレクトリを指定できます。これらの変数を設定すると、-xprofile=collect でコンパイルされたプログラムは、プロファイルデータを $SUN_PROFDATA_DIR/$SUN_PROFDATA に書き込みます。

これらの環境変数は、tcov で書き込まれたプロファイルデータファイルのパスと名前も指定します。tcov(1) マニュアルページを参照してください。

プロファイルの収集は「マルチスレッド (MT) 環境で安全」です。すなわち、-mt を指定してコンパイルし、マルチタスクライブラリを直接呼び出すことで独自のマルチタスクを実行するプログラムをプロファイル処理すると、正確な結果が得られます。

コンパイルとリンクを個別に実行する場合、コンパイルで -xprofile=collect を指定するときは、リンクでも指定する必要があります。

use[: nm]

最適化レベル -xO5 で計画的に最適化するために、実行頻度データを使用します。

collect:nm の場合と同じように nm には、実行可能ファイル名を指定します。名前の指定は省略することもできます。

-xprofile=collect オプションを付けてコンパイルしたときに生成され、プロファイルデータファイルに保存された実行頻度データを使用して、プログラムが最適化されます。

ソースファイルおよびその他のコンパイルオプションは、feedback ファイルが生成されるプログラムをコンパイルしたときに使用したものを指定してください。-xprofile=collect:nm でコンパイルするときと、 -xprofile=use:nm で最適化コンパイルをするときのプログラム名 nm は同一のものを指定する必要があります。

収集 (collect) 段階と使用 (use) 段階の間のコンパイル速度を高める方法については、-xprofile_ircache も参照してください。

コンパイラがプロファイルデータファイルを検索するディレクトリを制御する方法については、-xprofile_pathmap も参照してください。

tcov

「新しい」形式の tcov を使った基本ブロックカバレージ解析です。最適化レベルは、-O2 以上を指定してください。

コード計測方法は -a と似ていますが、ソースファイルごとに .d ファイルは生成されません。最終的な実行可能ファイルに基づく名前のファイルが 1 つ生成されます。たとえば、実行可能ファイルが stuff である場合、stuff.profile/tcovd がデータファイルとなります。

tcov を実行するときに、新しい形式のデータを使用させるように -x オプションを渡す必要があります。-x オプションを指定しないと、tcov はデフォルトでは古い .d ファイルがあればそれをデータとして使用し、予測外の結果が生成されます。

-a とは異なり、TCOVDIR 環境変数はコンパイル時には影響しませんが、プログラムの実行時に使用され、プロファイルデータを置くサブディレクトリの位置が決まります。

詳細は、tcov(1) マニュアルページ、『Fortran プログラミングガイド』の「パフォーマンスプロファイリング」の章および『プログラムのパフォーマンス解析 』を参照してください。


注 –

tcov で作成されたレポートは、-O4 または -inline によって副プログラムがインライン化されている場合、信頼性がない可能性があります。インライン化されているルーチンへの呼び出しの範囲は記録されません。