インテル® C++ コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス
インテル® C++ コンパイラーのガイド付き自動並列化 (GAP) 機能は、コンパイラーの自動ベクトル化および並列化機能を利用してデータ操作の効率を向上させるための変更内容についてアドバイスを提供し、シリアルコードのアプリケーション・パフォーマンスの向上を支援します。ツールの名前には「自動並列化」という言葉が含まれていますが、実行パフォーマンスを向上するためにスレッド化されたコードを実装する必要はありません。また、コードがスレッド化または並列化されている必要もありません。
この機能を使用するのに、プロシージャー間の解析やプロファイルに基づくフィードバックのような高度な最適化手法を使用する必要はありません。通常使うコンパイラー・オプションに加えて、[Q]guide オプションを使用するだけで、この GAP 機能を有効にできます。ただし、O2 以上の最適化オプションを指定してコンパイルしてください。GAP 実行時は、オブジェクト・ファイルや実行ファイルは生成されません。
デバッグモード (Windows*: /Zi、Linux*: -g) では、最適化レベルのデフォルトは /Od (Windows*) または -O0 (Linux* および macOS*) です。このため、O2 (またはより高い最適化レベル) をコマンドラインで明示的に指定する必要があります。
例えば、/Qguide, /Qdiag-disable:30534 (Windows*) と -guide, -diag-disable:30534 (Linux* および macOS*) を指定すると、コンパイラーは診断メッセージ 30534 を出力しません。[Q]diag-disable はコンパイラーの警告に対するのと同じように動作します。
推奨されたコード変更を行うか、推奨されたコンパイラー・オプションを使用して、GAP ツールのアドバイスに従う場合は、[Q]guide オプションを使用しないでプログラムを再コンパイルしてください。
GAP ツールにより提供されるアドバイスはオプションです。取り入れても、取り入れなくてもかまいません。通常、アドバイスは次の 3 つのカテゴリーに分けられます。
GAP オプションを [Q]parallel とともに使用すると、さらなる並列化を推奨するオプションが表示されることがあります。また、ベクトル化のようなアプリケーションの最適化を有効にするアドバイスが表示されることもあります。
GAP を有効にせずに ([Q]parallel オプションを使用しないで) ガイド付き自動並列化オプションを使用すると、ベクトル化のような最適化を有効にするアドバイスのみ表示されます。このアプローチは、並列化を使用せずにシングルスレッド・コードのパフォーマンスを向上したい場合や、コンパイラーの自動並列化に依存しないマルチスレッド・アプリケーションのパフォーマンスを向上したい場合に推奨します。