インテル® C++ コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス

ハードウェア・カウンターを利用するプロファイルに基づく最適化

簡単なプロファイル・メカニズムを利用して、アプリケーション・バイナリーにインストルメント・コードを挿入する際にオーバーヘッドなしで、多くの利点を得ることができます。これは、コード/データサイズの増加やインストルメンテーションによる実行時のコード変更によって、通常のプロファイルに基づく最適化 (PGO) が実行不可能な場合に役立ちます。このアプローチでは、インテル® VTune™ Amplifier を使用してハードウェア・カウンターから情報を収集する必要があります。情報は最小のオーバーヘッドで収集され、コンパイラーによって生成されるデバッグ情報と合わせて、最適化の主要コードパスを特定します。

このアプローチは、次のステップに従って使用します。

フェーズ 1: prof-gen-sampling オプションを指定してアプリケーションをコンパイルします。

このオプションは、ハードウェア・カウンターから収集された情報を特定のソースコードにマップするのに使用される、追加のデバッグ情報を生成するようにコンパイラーに指示します。インストルメント済み PGO とは異なり、このオプションは生成される命令シーケンスに影響しません。このビルド時に最適化が有効になることがありますが、関数のインライン展開は無効にすることを推奨します。

フェーズ 2: インテル® VTune™ Amplifier で 1 つ以上の代表的なワークロードを使用して生成された実行ファイルを実行します。

<installation-root>/bin64/amplxe-pgo-report.sh <your application and command line>

データ収集オプションに関する詳細は、インテル® VTune™ Amplifier のドキュメントにあります。このステップでは、後続のフェーズの入力として使用される rNNNpgo_icc.pgo 形式のファイルを生成します (NNN は 3 桁の数字)。

フェーズ 3: (オプション) フェーズ 2 で生成されたレポートファイルをマージします。

profmergesampling ツールを使用して、結果のインデックス付きファイルを生成し、次のフェーズでデータを高速に処理することができます。

profmergesampling -file <input-file[:input_file]*> -out <output_name>

フェーズ 4: prof-use-sampling:input-file[:input_file]* オプションを指定してアプリケーションをコンパイルします。

フェーズ 4 では、フェーズ 2 で生成された 1 つ以上の結果ファイル (またはフェーズ 3 で生成されたインデックス付きファイル) をコンパイラーに渡して、最適化を指示することができます。

関連情報