インテル® C++ コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス
プロファイルに基づく最適化 (PGO) API は、PGO のインストルメント済み実行フェーズ中にプロファイル情報の生成を制御できます。
関数のセットおよび環境変数が PGO API を構成します。このセクションの残りのトピックでは、関連する関数および環境変数について説明します。
[Q]prof-gen オプションによるコンパイルの際、コンパイラーは _PGO_INSTRUMENT プリプロセッサー・マクロに define を設定し、コードをインストルメントします。インストルメンテーションがされていないと、PGO API 関数は PGO API サポートを提供できません。
通常、プロファイル情報は、インストルメント済みアプリケーションが、標準的な exit() 関数を呼び出してアプリケーションを終了したときにインストルメント済みアプリケーションによって生成されます。
プロファイル情報の生成を確実にするには、このセクションで説明される関数が必要となる場合があり、また次の状況で役立ちます。
PGO API 関数は、関数が使用されるソースファイルの先頭に pgouser.h ヘッダーファイルを挿入することによりアプリケーションで使用できます。
例 |
---|
#include <pgouser.h> |
インストルメンテーション・ステップを完了した際、PGO API 関数をコードから削除する必要はありません。この段階でソースコードを変更すると、修正されたルーチンのプロファイル・データ・フィードバックの取得を妨げることがあります。インストルメンテーション・ステップでは ([Q]prof-gen または [Q]prof-gen:<aug> オプションを使用、<aug> は srcpos、globdata、または default)、_PGO_INSTRUMENT マクロの定義は自動的に設定され、インストルメンテーション・ライブラリー・ルーチンが使用されるようになります。プロダクション・ステップでは ([Q]prof-use オプション使用)、_PGO_INSTRUMENT マクロの定義は削除され、プロファイル・データがフィードバックされるようになります。
PGO API の環境変数は INTEL_PROF_DUMP_INTERVAL です。この環境変数は、インストルメント済みのユーザー・アプリケーションでインターバル・プロファイル・ダンプに使用されることがあります。
INTEL_PROF_DUMP_CUMULATIVE 環境変数を使用して、内部のプロファイル・ダンプ動作を制御できます。
INTEL_PROF_DYN_PREFIX 環境変数は、.dyn ファイル名のプリフィクスに使用する文字列を指定します。この環境変数を定義すると、.dyn ファイルの名前は、デフォルトの <timestamp>_<pid>.dyn ではなく、<prefix>_<timestamp>_<pid>.dyn になります。これは、特定のトレーニング・セットにより生成される .dyn ファイルを識別するのに役立ちます。