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

3.4.160 –xprofile={collect [:name]| use[:name]| tcov}

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

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

—xprofile および環境変数についての詳細は、f95(1) のマニュアルページを参照してください。

collect[: name]

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

name は、プログラムの実行時にプロファイルデータが保存されるディレクトリのオプション名です。これを指定する場合、name は完全 UNIX パス名である必要があります。name を指定しない場合は、プログラムの実行時に、program という名前のプロファイルされたプログラムのプロファイルデータが、現在の作業ディレクトリの program.profile というディレクトリに保存されます。

-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 でコンパイルする場合、同一のプログラム名 nm が 最適化コンパイル-xprofile=use:nm で表示される必要があります。

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

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

tcov

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

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

tcov を実行する時点で、新しい形式のデータを使用させるように -x オプションを渡さなければいけません。これを渡さないと、古い .d ファイルがまだ存在する場合に、tcov はデフォルトで古いファイルからデータを使用するため、予想に反した出力が生成されます。

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

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


注 –

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