インテル® Fortran コンパイラー 14.0 ユーザー・リファレンス・ガイド
アプリケーションのプロファイルは、次のフェーズで構成されます。
このトピックでは、この 3 つのフェーズ (ステップ) のそれぞれについてサンプルコマンドを使用してアプリケーションをプロファイルする方法を示します。
インストルメント済み情報を含む実行ファイルを生成するには、[Q]prof-gen を使用します。 コードカバレッジ・ツール用の最小限のインストルメンテーションみのを取得するには、/Qcov-gen (Windows*) を使用します。
オペレーティング・システム |
コマンド |
---|---|
Linux* および OS X* |
ifort -prof-gen -prof-dir/usr/profiled a1.f90 a2.f90 a3.f90 ifort -oa1 a1.o a2.o a3.o |
Windows* |
ifort /Qprof-gen /Qprof-dirc:\profiled a1.f90 a2.f90 a3.f90 ifort a1.obj a2.obj a3.obj |
Windows* |
ifort /Qcov-gen /Qcov-dirc:\cov_data a1.f90 a2.f90 a3.f90 ifort a1.obj a2.obj a3.obj |
複数のディレクトリーにソースファイルがあるアプリケーションの場合は、[Q]prof-dir オプションまたは /Qcov-dir オプション (Windows*) を使用します。このオプションを使用すると、プロファイル情報が一定の場所に作成されます。 サンプルコマンドでは、複数のソースファイルでこれらのオプションを組み合わせる方法を説明します。
-prof-gen=srcpos オプション (Linux* および OS X*) または /Qprof-gen:srcpos オプション (Windows*) を使用すると、コンパイラーは補足情報を収集します。収集した補足情報は、コードカバレッジ・ツールなど、特定のツールで使用できます。 このようなツールを使用する予定がない場合は、-prof-gen=srcpos (Linux* および OS X*) または /Qprof-gen:srcpos (Windows*) を指定しないでください。拡張オプションを使用しても、最適化の向上は見込めず、また並列コンパイル時間が遅くなる可能性があります。 コードカバレッジ・ツールにのみインストルメンテーションを使用する場合は、/Qprof-gen:srcpos オプション (Windows*) の代わりに、/Qcov-gen オプション (Windows*) を使用してインストルメンテーション・オーバーヘッドを最小限にしてください。
対応するデータセットを使用してインストルメント済みプログラムを実行し、1 つ以上の動的情報ファイルを作成します。
インストルメント済みプログラムを実行すると、一意の名前で拡張子が .dyn の動的情報ファイルが生成されます。インストルメント済みプログラムを実行するたびに、新しい動的情報ファイルが作成されます。
入力データを変更して、プログラムを複数回実行できます。
このステップに入る前に、すべての .dyn ファイルと .dpi ファイルを同じディレクトリーにコピーします。[Q]prof-use オプションを使用してソースファイルのコンパイルとリンクを行います。このオプションにより、コンパイラーは動的情報を使用して、そのプロファイルに従ってプログラムを最適化します。
オペレーティング・システム |
例 |
---|---|
Linux* および OS X* |
ifort -prof-use -ipo -prof-dir/usr/profiled a1.f90 a2.f90 a3.f90 |
Windows* |
ifort /Qprof-use /Qipo /Qprof-dirc:\profiled a1.f90 a2.f90 a3.f90 |
最後のフェーズでは、インストルメント済みプログラムの実行中 (フェーズ 2) に生成された動的情報を使用して、ソースファイルのコンパイルとリンクを行います。
実行ファイルの最適化に加えて、コンパイラーは pgopti.dpi ファイルを生成します。
通常、フェーズ 1 ではデフォルトの最適化オプション、O2 を指定し、最終 (フェーズ 3) コンパイルではさらに高度な最適化オプション [Q]ipo を指定します。 例えば、上記の例では、ステップ 1 で O2、ステップ 3 で [Q]ipo を使用しています。
コンパイラーはフェーズ 1 で [Q]prof-gen が使用されている場合、[Q]ipo オプションや [Q]ip オプションを無視します。