プロファイルに基づく最適化 (PGO) レポート

PGO レポートは、コンパイラーがソースコードの最適化で使用したプロファイル情報の場所と方法を特定するのに役立ちます。PGO レポートは、「アプリケーションのプロファイル」で説明されている PGO のコンパイルステップと組み合わせて使用すると非常に役立ちます。アプリケーションのプロファイル処理中に、プロファイル・データが生成されていないと、あまり有益な情報はレポートされません。

-prof-use (Linux* および Mac OS* X) や /Qprof-use (Windows*) を含めて、PGO ステップでレポートオプションとあわせて使用します。次の構文例は、オプションを組み合わせてレポートを実行する方法を示します。

オペレーティング・システム

構文例

Linux および Mac OS X

icpc -prof-use -opt-report -opt-report-phase=pgo pgotools_sample.c

Windows

icl /Qprof-use /Qopt-report /Qopt-report-phase:pgo pgotools_sample.c

デフォルトでは、中レベルの詳細が含まれる PGO レポートが生成されます。-opt-report-file (Linux および Mac OS X) または /Qopt-report-file (Windows) を使用して、レポート結果をキャプチャーする出力ファイルを指定します。結果をキャプチャーするファイルを指定することで、結果の解析に費やす時間を短縮でき、後に行うテスティングの基本ラインをつかむことができます。

出力ファイル

PGO レポートの詳細レベルを最大限に設定すると、多くの詳細な結果が生成されます。プロファイルされるソースによっては、レポートの解析に非常に時間がかかります。次のサンプルレポートは、デフォルトの出力での典型的な結果と要素フォーマットです。

サンプル PGO レポート

<pgotools_sample.c;-1:-1;PGO;_main;0>

  DYN-VAL:  pgotools_sample.c  _main

<pgotools_sample.c;-1:-1;PGO;_three_args;0>

  DYN-VAL:  pgotools_sample.c  _three_args

<pgotools_sample.c;-1:-1;PGO;_two_args;0>

  NO-DYN:   pgotools_sample.c  _two_args

<pgotools_sample.c;-1:-1;PGO;_one_arg;0>

  DYN-VAL:  pgotools_sample.c  _one_arg

<pgotools_sample.c;-1:-1;PGO;_decide;0>

  DYN-VAL:  pgotools_sample.c  _decide

<pgotools_sample.c;-1:-1;PGO;;0>

      4 関数に有効なダイナミック・プロファイルが含まれています。

      1 関数にダイナミック・プロファイルが含まれていません。

  ファイル現在の品質メトリック:  90.0%

  ファイル可能な品質メトリック:  90.0%

  ファイル品質メトリック比率:   100.0%

次の表は、一般的なレポート要素と結果の解釈に役立つ説明をまとめたものです。

レポート要素

説明

レポートされる関数についての情報です。次の形式で示されます。

<source name>;<start line>;<end line>;<optimization>; <function name>;<element type>

ここでは、次の情報が含まれます。

  • <source name>: 検証されるソースファイルの名前です。

  • <start line>: 検証される関数の開始行番号です。値が 1 の場合、関数全体がレポートされます。

  • <end line>: 検証される関数の終了行番号を示します。

  • <optimization>: 最適化フェーズを示します。このレポートの場合は、PGO 最適化フェーズです。

  • <function name>: 関数名を示します。

  • <element type>: レポート要素の型を示します。0 は要素がコメントであることを示します。

DYN-VAL

関数の有効なプロファイリング・データが生成されたことを示します。関数が含まれるソースファイルもリストされます。

NO-DYN

関数のプロファイリング・データが生成されなかったことを示します。関数が含まれるソースファイルもリストされます。

関数に有効なダイナミック・プロファイルが含まれています。

有効なプロファイル情報を持つ関数の数を示します。

関数にダイナミック・プロファイルが含まれていません。

有効なプロファイル情報を持たない関数の数を示します。この要素は、インストルメント済み実行ファイルの実行中に、関数が実行されなかったことを示します。

関数に有効なスタティック・プロファイルが含まれています。

静的プロファイルが生成された関数の数を示します。

0 以外の数が示される理由として最も考えられるのは、動的プロファイリングが行われず、すべての関数で静的プロファイルが生成されたことです。

IPO 現在の品質メトリック

全体的な質が 50% から 100% までの比率で表現されます。50% は動的プロファイルが生成された関数がないことを意味し、100% はすべての関数で動的プロファイルが生成されたことを意味します。数値が大きいほど、動的プロファイルが生成された関数の比率が高いことを示します。

IPO 可能な品質メトリック

可能性のある動的プロファイルの数を示します。この数は、現在の品質で可能性のある値のうち、最も高いものを % で表します。この数値は、可能性のある最高値で、データセットとインストルメント済み実行ファイルに対して最も理想的な質を表します。

IPO 品質メトリック比率

可能な品質現在の品質の比率を表します。100% は、すべての動的プロファイルが受け入れられたことを示します。100% よりも少ない値はプロファイルが拒否されたことを示します。