インテル® C++ コンパイラー 17.0 デベロッパー・ガイドおよびリファレンス
最適化レポートを生成する 1 つ以上の最適化フェーズを指定します。 -qopt-report-phase は、古いオプション -opt-report-phase の後継オプションです。
Linux* および OS X*: | -qopt-report-phase[=list] |
Windows®: | /Qopt-report-phase[:list] |
list |
(オプション) レポートを生成する 1 つ以上のフェーズを指定します。 複数のフェーズを指定する場合は、カンマで区切ります。 次の値を指定できます。
|
オフ |
最適化レポートは生成されません。 |
このオプションは、最適化レポートを生成する 1 つ以上の最適化フェーズを指定します。
offload フェーズは、ホストからオフロードのターゲットに送信された変数とホストがターゲットから受信した変数の入出力のレポートを出力します。
特定のフェーズでは、ほかのオプションも一緒に指定する必要があります。
cg フェーズを指定する場合、O1、O2 (デフォルト)、または O3 オプションも指定する必要があります。
ipo フェーズを指定する場合、[Q]ipo オプションも一緒に指定する必要があります。
loop フェーズを指定する場合、O2 (デフォルト) または O3 オプションも指定する必要があります。
openmp フェーズを指定する場合、[q または Q]openmp オプションも指定する必要があります。
par フェーズを指定する場合、[Q]parallel オプションも一緒に指定する必要があります。
pgo フェーズを指定する場合、[Q]prof-use オプションも一緒に指定する必要があります。
tcollect フェーズを指定する場合、[Q]tcollect オプションも一緒に指定する必要があります。
vec フェーズを指定する場合、O2 (デフォルト) または O3 オプションも指定する必要があります。 OpenMP* SIMD による明示的なベクトル化を行う場合、[q または Q]openmp も一緒に指定する必要があります。
利用可能なすべてのフェーズを表示するには、[q または Q]opt-report-help オプションを使用します。
このオプションを使用する場合、[q または Q]opt-report オプションを指定する必要はありません。
ただし、各フェーズの詳細な情報を得るには、このオプションと [q または Q]opt-report=n オプションを一緒に指定し、必要な詳細レベルに応じて n を適切な値に設定します。 (以下の例を参照。)
最適化レポートが有効な場合、デフォルトは -qopt-report-phase=all (Linux* および OS X*) または /Qopt-report-phase:all (Windows®) です。
Visual Studio®: [Diagnostics (診断)] > [Optimization Diagnostic Phase (最適化診断フェーズ)]
Eclipse*: [Compilation Diagnostics (コンパイル診断)] > [Optimization Diagnostic Phase (最適化診断フェーズ)]
Xcode*: [Diagnostics (診断)] > [Optimization Diagnostic Phase (最適化診断フェーズ)]
なし
以下に、1 つ以上の最適化フェーズと特定のレベル (n) の [q または Q]opt-report オプションを指定した場合の出力例を示します。 出力内容は、将来のリリースで変更される可能性があります。
最適化フェーズ |
[q または Q]opt-report で指定されたレベル |
説明 |
---|---|---|
cg |
1 |
下位レベルにマップされた組込み関数と memcall の最適化のリストを生成します。 |
ipo |
1 |
コンパイルされる各ルーチンごとに、その内部で直接呼び出されるルーチンのうちインライン展開され、呼び出しが削除されたもののリストを出力します。 |
2 |
レベル 1 の詳細、重要なインライン展開コマンドライン・オプションの値、排除された不要なルーチンのリストを出力します。 |
|
3 |
レベル 2 の詳細、プログラム全体の情報、インライン展開されたルーチンのサイズ、ルーチンがインライン展開されなかった理由を出力します。 |
|
4 |
レベル 3 の詳細、ルーチンがインライン展開されなかった詳細な理由とインライン展開されるようにするための処理を出力します。 |
|
loop |
1 |
ループの入れ子構造に対して実行された最適化について高レベルの詳細 (および行番号) を出力します。 ほとんどのループの最適化 (融合、アンロール/ジャム、ループ結合、リロールなど) は、このレベルの詳細のみサポートします。 |
2 |
レベル 1 の詳細に加えて、最適化で使用されたメトリックと参照タイプ (プリフェッチの距離、間接プリフェッチなど) についてより詳細な情報を提供します。 一部の最適化 (プリフェッチ、ループ分類フレームワークなど) のみこれらの詳細をサポートします。 |
|
offload |
1 |
各 CPU オフロード、オフロード領域、for _Cilk_offload のファイルと行を出力します。 |
2 |
CPU とオフロード・アーキテクチャー間で転送される変数の情報を出力します。 |
|
3 |
length、alloc_if、free_if、align 節の評価とメモリー位置への割り当てに関する情報を出力します。 コンパイラーは、使用方法に応じてデフォルトの inout 変数を in または out 変数に変更します。 |
|
openmp |
1 |
正常に並列化されたループ、領域、セクション、タスクを出力します。 |
2 |
レベル 1 の詳細に加えて、正常に処理された master 構造、single 構造、critical 構造、ordered 構造、atomic プラグマなどを示す診断メッセージを出力します。 |
|
par |
1 |
並列化されたループを出力します。 |
2 |
レベル 1 の詳細に加えて、並列化されなかったループとその簡単な理由を出力します。 |
|
3 |
レベル 2 の詳細に加えて、private、shared、reduction として分類されているメモリー位置を出力します。 |
|
4 |
レベル 3 を指定した場合と同じです。 |
|
5 |
レベル 4 の詳細に加えて、並列化を妨げている依存関係を出力します。 |
|
pgo |
1 |
プロファイル・フィードバック中、コンパイルされたルーチンごとにフィードバックのレポートステータス (使用されたプロファイル、利用可能なプロファイルなし、プロファイルに使用不可など) を出力します。 |
2 |
レベル 1 の詳細に加えて、間接呼び出しと算術演算に適用した値のプロファイル情報を出力します。 |
|
3 |
レベル 2 の詳細に加えて、プロファイル・データはあるものの、比率または実行カウントの内部しきい値制限に満たなかった間接呼び出しを出力します。 |
|
tcollect |
1 |
ルーチンのリストと各ルーチンがトレース収集用に選択されたかどうかを示します。 |
vec |
1 |
ベクトル化されたループを出力します。 |
2 |
レベル 1 の詳細に加えて、ベクトル化されなかったループとその簡単な理由を出力します。 |
|
3 |
レベル 2 の詳細に加えて、ベクトル化機能によるループのサマリー情報を出力します。 |
|
4 |
レベル 3 の詳細に加えて、ベクトル化されたループとされなかったループの詳細な情報を出力します。 |
|
5 |
レベル 4 の詳細に加えて、判明した依存関係または想定される依存関係の詳細な情報を出力します。 |