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

ガイド付き自動並列化の使用

インテル® C++ コンパイラーのガイド付き自動並列化機能は、シリアルコードのアプリケーション・パフォーマンスを向上させるためのアドバイスを提供します。コンパイラーの自動ベクトル化および並列化機能を利用し、データ操作の効率を向上させるための変更を提案します。実行パフォーマンスを向上するためにスレッド化されたコードを実装する必要はありません。また、コードがスレッド化または並列化されている必要もありません。

このツールを起動するには、[Q]guide[=n] コンパイラー・オプションを使用します。このオプションを使用すると、コンパイラーはメッセージを出力し、アプリケーションのパフォーマンスを最適化する方法を推奨します。また、[Q]guide-vec[Q]guide-par[Q]guide-data-trans などの特定のコンパイラー・オプションを使用して、アプリケーションのベクトル化、並列化、データ変換についての各アドバイスを得ることもできます。

ガイド付き自動並列化オプションが使用されると、コンパイラーは診断アドバイスのみを出力します。オブジェクト・ファイルや実行ファイルはこのモードでは作成されません。オプションの説明については、次の表を参照してください。

構文

説明

[Q]guide

自動ベクトル化とデータ変換解析のアドバイスのレベルを設定します。

自動ベクトル化のアドバイスを得るには、[Q]parallel オプションを [Q]guide オプションと一緒に使用してください。

[Q]guide-par

自動並列化解析のみのアドバイスのレベルを設定します。

このアドバイスを得るには、[Q]parallel オプションを [Q]guide-par オプションと一緒に使用してください。

[Q]guide-vec

自動ベクトル化解析のアドバイスのレベルを設定します。

[Q]guide-data-trans

データ変換解析のアドバイスのレベルを設定します。

上記のすべてのオプションで、オプション引数 n はアドバイスのレベルを指定します。n には、1-4 の値を指定します。n が指定されない場合のデフォルトは 4 です。n=1 または 2 を指定した場合、標準レベルのアドバイスが提供されます。

n=3 または n=4 を指定すると、詳細なメッセージが得られます。例えば、特定のループの入れ子構造を最適化する方法についてのメッセージや、ループの入れ子構造内で例外処理が最適化に与える影響に関するメッセージが出力されます。あるいは、コストモデリングに関する追加情報をコンパイラーに提供する方法についてメッセージが得られることもあります (反復回数などの予想値)。

[Q]guide オプションでアドバイスのレベルを指定し、個々のガイドオプションで異なるアドバイスのレベル (n の値) を設定すると、各ガイドオプションの値が [Q]guide オプションに指定された設定よりも優先されます。

[Q]guide オプションでアドバイスのレベルを指定せず、個々のガイドオプションでアドバイスのレベルを指定した場合、個々のガイドオプションで渡されたアドバイスのレベルのうち最も高い値で [Q]guide オプションが有効になります。

アドバイスメッセージの保存

ガイド付き自動並列化ツールは、シリアルコードのすべて、またはコードの各部分を解析し、アドバイスメッセージを生成します。デフォルトでは、生成されたこのメッセージは stderr に出力されます。

ファイルに保存するには、次の表に示すオプションを使用してください。

この表のオプションは、[Q]guide[Q]guide-par[Q]guide-vec[Q]guide-data-trans オプションとともに使用する必要があります。そうでない場合、オプションは無視されます。

構文

説明

[Q]guide-file

ガイド付き自動並列化のコンパイルで生成されたすべてのメッセージを指定したファイルに保存します。

[Q]guide-file-append

ガイド付き自動並列化の実行中に生成されたすべてのメッセージを追加するファイルを指定します。

上記のオプションでは、file_name 引数にパスを含めることもできます。パスを指定しない場合、ファイルは現在の作業ディレクトリーに作成されます。file_name と同じ名前のファイルがすでに存在する場合、[Q]guide-file オプションを使用するとファイルは上書きされます。file_name に拡張子を含めない場合は、拡張子 .guide が追加されます。

GAP メッセージのコード領域の設定

ガイド付き自動並列化の解析をアプリケーションの特定の領域 (hotspot) に制限する場合は、以下の表に示すオプションを使用します。

構文

説明

[Q]guide-opts

string で識別される指定したコード要素を解析します。

[Q]guide-profile

[Q]guide オプションと一緒に使用すると、ループ・プロファイラーのデータファイル (1 つまたは複数) を指定できます。

[Q]guide-opts オプションを、[Q]guide[Q]guide-vec[Q]guide-par[Q]guide-data-trans のようなガイド付き自動並列化オプションとともに使用してください。string 引数を使用して、特定の領域 (hotspot) の情報を提供します。string 引数には、次の変数を複数指定できます: filenameroutinerange。コンパイラーは string 引数を解析して、エラーがあれば構文エラーを出力します。

Windows* 構文

/Qguide-opts:string

Linux* および macOS* 構文

-guide-opts=string

string 引数を使用する場合は次のガイドラインに従ってください。

あるいは、[Q]guide-profile オプションと [Q]guide オプションを一緒に使用して、自動でアプリケーション・コード中の特定の hotspot に対象領域を絞ることができます。

Windows* 構文

/Qguide-profile:filename | dir [, [filename|dir]...]

Linux* および macOS* 構文

-guide-profile=filename | dir [ , [ filename | dir ] ... ]

[Q]guide-profile オプションと一緒に使用した場合に [Q]guide オプションによって絞り込まれる領域は、ループ・プロファイラーのインストルメント済み実行により生成される XML データファイルを処理して設定されます。ループ・プロファイラーの結果ファイルには、実際のループ・プロファイラーのデータファイル、またはループ・プロファイラーのデータファイルを格納するディレクトリー名を指定できます。

関連情報