最適化機構レポートの作成

ここでは、最適化レポートの作成に関連するコンパイラー・オプション、代表的なレポート生成構文、およびレポートで利用可能な最適化フェーズについて説明します。

インテル(R) コンパイラーは、最適化レポートを生成、管理する次のオプションを提供します。

Windows*

Linux*

説明

/Qopt-report

-opt-report

最適化レポートを生成して stderr に送ります。デフォルトでは、コンパイラーは最適化レポートを生成しません。

詳細は、次のトピックを参照してください。

/Qopt-report-phase

-opt-report-phase

レポートを生成する際に使用する最適化フェーズを指定します。サポートしているフェーズに関する詳細は、この後の「レポートを作成する最適化の指定」を参照してください。

細は、次のトピックを参照してください。

/Qopt-report-file

-opt-report-file

最適化レポートを作成し、指定されたファイル名にレポート出力を送ります。ファイルがローカル・ディレクトリーにない場合、出力ファイルへのフルパスを指定します。

このオプションは、opt-report オプションよりも優先されます。

詳細は、次のトピックを参照してください。

/Qopt-report-level

-opt-report-level

最適化レポートの詳細レベルを指定します。min 引数は概要レポートを、max 引数は完全なレポートを作成します。

詳細は、次のトピックを参照してください。

/Qopt-report-routine

-opt-report-routine

名前の一部に文字列を含むすべてのルーチンからレポートを生成し、その文字列を引数としてこのオプションへ渡します。指定されない場合、コンパイラーはすべてのルーチンからレポートを作成します。

詳細は、次のトピックを参照してください。

最適化レポートを生成するには次のような構文を使用します。

プラットフォーム

構文例

Linux

icc -opt-report -opt-report-phase all prog.cpp

Windows

icl /Qopt-report /Qopt-report-phaseall prog.cpp

これらのコマンド例は、レポートを生成して stderr に送るようにコンパイラーに指示し、レポートにすべての利用可能な最適化機構に関する情報を含めるように指定します。

ほとんどの場合、フェーズとして all を指定すると、非常に多くの情報が生成されます。

レポートを stderr ではなく出力ファイルに送る場合、-opt-report-file (Linux) または /Qopt-report-file (Windows) を使用し、出力ファイル名を指定します。-c (Linux) または /c (Windows) を指定し、リンカーを起動しないようコンパイラーに指示すると、オブジェクト・コードを生成後、コンパイラーは停止します。

レポートを作成する最適化の指定

コンパイラーは、-opt-report-phase オプション (Linux) または /Qopt-report-phase オプション (Windows) の phase 引数で指定される最適化機構のレポートを作成できます。次の最適化機構がサポートされています。

最適化機構フェーズ

高レベルのカテゴリー

all

すべてのフェーズ

ecg

Itanium(R) コンパイラー・コード・ジェネレーター

Mac OS*: このフェーズはサポートされていません。

hlo

高水準言語最適化機構

ilo

中間言語スカラー最適化機構

ipo

プロシージャー間の最適化機構

pgo

プロファイルに基づく最適化機構

これらの最適化レポートの使用例は、「プロシージャー間の最適化 (IPO) レポート」「高レベルな最適化 (HLO) レポート」および「ソフトウェアのパイプライン化 (SWP) レポート」を参照してください。

(上記の表のように) 論理名の 1 つが指定されると、その最適化機構からのすべてのレポートが作成されます。複数の最適化機構のレポートを作成するために同じコマンドライン上に複数回、オプションを使用できます。例えば、-opt-report-phase ipo -opt-report-phase hlo (Linux) または /Qopt-report-phase ipo /Qopt-report-phase hlo (Windows) を指定した場合、コンパイラーは、プロシージャー間の最適化機構と高レベルな最適化機構からのレポートを生成します。

次の表に、アーキテクチャー別の利用可能な最適化を示します。

アーキテクチャー

サポートされている最適化機構

IA-32、インテル(R) EM64T、および Itanium ベース・システム

  • ilo および pgo

  • hlo: -O3 オプション (Linux) または /O3 オプション (Windows) が指定された場合のみサポートされます。

  • ipo: プロシージャー間の最適化機構が -ip または -ipo (Linux) あるいは /Qip または /Qipo (Windows) を使用して起動された場合のみサポートされます。

  • all: -O3 (Linux)、/O3 (Windows) と -ip または -ipo (Linux)、/Qip または /Qipo (Windows) が指定された場合、上記の最適化機構がサポートされます。

Itanium ベース・システムのみ

  • all: -O3 (Linux)、/O3 (Windows) と -ip または -ipo (Linux)、/Qip または /Qipo (Windows) が指定された場合、上記の最適化機構がサポートされます。

  • hlo および ipo: hlo または ipo のいずれが指定されても、制御オプション (-O3 (Linux)、/O3 (Windows) あるいは -ip-ipo (Linux)、/Qip/Qipo (Windows)) が有効でない場合、コンパイラーは空のレポートを生成します。

  • ecg

各最適化機構の論理名は、特定のプロセッサーを対象にした多くの最適化をサポートします。しかし、これらの最適化では、最適化機構の論理名がプリフィックスとして使用されています。サポートされている最適化機構の名前をリストするには、-opt-report-help (Linux) または /Qopt-report-help (Windows) を入力します。次の表に、いくつかの例を示します。

最適化機構の最適化

説明

ipo_inl

プロシージャー間の最適化機構、関数のインライン展開

ipo_cp

プロシージャー間の最適化機構、定数伝播

hlo_unroll

高レベルな最適化機構、ループのアンロール

hlo_prefetch

高レベルな最適化機構、プリフェッチ

ecg_swp

Itanium コンパイラー・コード・ジェネレーター、ソフトウェアのパイプライン化

最適化機構内の特定の最適化のフルネームを指定する必要はありません。多くの場合、レポートの生成には数個の文字だけで十分です。一致するすべての最適化レポートが作成されます。

最適化レポートのグラフィカル表示 (Linux)

テキストベースの最適化レポートに加えて、インテル・コンパイラーは、インテル(R) VTune(TM) Linux 8.x の OptReport 機能を使用して最適化レポートをグラフィカルに表示するために必要な情報を生成できるようになりました。詳細は、VTune アナライザーのドキュメントを参照してください。

グラフィカル・レポート表示を生成するには、次のことを行う必要があります。

  1. VT_ENABLE_OPTIMIZATION_REPORT 環境変数を ON に設定します。
    (これは VTune アナライザーの環境設定です。コンパイラーがテキストベースの最適化レポートを生成する場合は必要ありません。)

  2. 最低でも、最適化レポートオプション -opt-report-phase および -opt-report-file を使用してアプリケーションをコンパイルします。

テキストベースのレポートと同じように、グラフィカル・レポート情報はすべてのアーキテクチャーで生成することができます。しかし、グラフィカル・レポートの表示は、インテル EM64T および IA-32 アーキテクチャーでのみ行うことができます。