インテル® 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 で生成されたインデックス付きファイル) をコンパイラーに渡して、最適化を指示することができます。