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

qopt-report-phase、Qopt-report-phase

最適化レポートを生成する 1 つ以上の最適化フェーズを指定します。 -qopt-report-phase は、古いオプション -opt-report-phase の後継オプションです。

構文

Linux* および OS X*:

-qopt-report-phase[=list]

Windows®:

/Qopt-report-phase[:list]

引数

list

(オプション) レポートを生成する 1 つ以上のフェーズを指定します。 複数のフェーズを指定する場合は、カンマで区切ります。 次の値を指定できます。

cg

コード生成フェーズ

ipo

プロシージャー間の最適化 (IPO) フェーズ

loop

ループの入れ子構造の最適化フェーズ

offload

インテル® MIC アーキテクチャーまたはインテル® グラフィックス・テクノロジー向けのフェーズ。 -no-qoffload オプションまたは /Qoffload- オプションを指定すると効果がありません。 このフェーズは、インテル® MIC アーキテクチャーまたはインテル® グラフィックス・テクノロジーにのみ適用されます。

openmp

OpenMP* フェーズ

par

自動並列化フェーズ

pgo

プロファイルに基づく最適化 (PGO) フェーズ

tcollect

トレース収集フェーズ

vec

ベクトル化フェーズ

all

すべての最適化フェーズ。list を指定しない場合のデフォルト設定です。

デフォルト

オフ

最適化レポートは生成されません。

説明

このオプションは、最適化レポートを生成する 1 つ以上の最適化フェーズを指定します。

offload フェーズは、ホストからオフロードのターゲットに送信された変数とホストがターゲットから受信した変数の入出力のレポートを出力します。

特定のフェーズでは、ほかのオプションも一緒に指定する必要があります。

利用可能なすべてのフェーズを表示するには、[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®) です。

IDE オプション

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 の詳細に加えて、判明した依存関係または想定される依存関係の詳細な情報を出力します。

関連情報