インテル® C++ コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス
パフォーマンス上の利点がある場合、複数の機能固有の自動ディスパッチ・コードを生成するようにコンパイラーに指示します。
インテル® グラフィックス・テクノロジーをターゲットとするインテル® 64 アーキテクチャー、または IA-32 アーキテクチャーで実行するインテル® グラフィックス・テクノロジーをターゲットとする場合は利用できません。
Linux* および macOS*: | -axcode |
Windows*: | /Qaxcode |
code |
生成する命令セットを含む、ターゲット機能セットをコンパイラーに指示します。次の説明は、インテル® ストリーミング SIMD 拡張命令 (インテル® SSE) およびインテル® ストリーミング SIMD 拡張命令補足命令 (インテル® SSSE) についてです。設定可能な値は以下のとおりです。
|
オフ |
ディスパッチ・コードは生成されません。機能固有のコードが生成され、次のコンパイラー・オプションの設定で制御されます。
|
このオプションは、パフォーマンス上の利点がある場合、複数の機能固有の自動ディスパッチ・コードを生成するようにコンパイラーに指示します。また、汎用コードも生成します。通常、インテルの機能固有の自動ディスパッチ・コードは汎用コードよりも最適化されます。O3 などのその他のオプションは、汎用コードでどの程度の最適化を行うかを制御します。
汎用コードは、-m または -x (Linux* および macOS*) や /arch または /Qx (Windows*) で指定されたアーキテクチャーにより決まります。[Q]x オプションのデフォルトは使用しているオペレーティング・システムに依存しますが、デフォルトよりも上位または下位のアーキテクチャーと最適化レベルを指定することもできます。指定されるアーキテクチャーは、汎用コード向けの最小アーキテクチャーとなります。
[Q]ax オプションと [Q]x オプションの両方を指定すると、[Q]x オプションで指定された設定と互換性のあるインテル® プロセッサーでのみ実行できる汎用コードが生成されます。
-ax と -m オプション (Linux* および macOS*) または /Qax と /arch オプション (Windows*) の両方を指定すると、-m または /arch オプションで指定された設定と互換性のあるインテル以外のプロセッサーで実行できる汎用コードが生成されます。
-ax と -march オプション (Linux* および macOS*) または /Qax と /arch オプション (Windows*) をの両方を指定すると、コンパイラーはインテル固有の命令を生成しません。
[Q]ax オプションは、指定した命令セットの機能を活用できる別の関数バージョンを生成できるかどうか検出するように、コンパイラーに指示します。
機能固有の関数バージョンを生成できることが判明した場合、コンパイラーはそれがパフォーマンスの向上につながるかどうかをチェックします。パフォーマンスが向上すると判明した場合、コンパイラーは機能固有バージョンと汎用バージョンの関数を生成します。プログラムの実行時に、使用されているインテル® プロセッサーに応じて、この 2 つのバージョンのどちらを実行するかが選択されます。この方法により、プログラムは従来のプロセッサーやインテル以外のプロセッサーとの互換性を保ちながら、最新のインテル® プロセッサー上でパフォーマンスを大幅に向上できます。インテル以外のプロセッサーは、常に汎用コードを実行します。
2 つ以上の機能の値を組み合わせて使用できます。例えば、-axSSE4.1,SSSE3 (Linux* および macOS*) または /QaxSSE4.1,SSSE3 (Windows*) のように指定することができます。ただし、以前のスタイル、古いオプション、および新しいオプションを組み合わせることはできません。例えば、-axSSE4.1,T (Linux* および macOS*) または /QaxSSE4.1,T (Windows*) のように指定することはできません。
Visual Studio*: [Optimization (最適化)] > [Generate Alternate Code Paths (指定された命令セットの専用及び汎用コード生成)]
Eclipse*: [Optimization (最適化)] > [Generate Alternate Code Paths (指定された命令セットの専用及び汎用コード生成)]
Xcode*: [Optimization (最適化)] > [Generate Alternate Code Paths (指定された命令セットの専用及び汎用コード生成)]
なし
最適化に関する注意事項 |
---|
インテル® コンパイラーでは、インテル® マイクロプロセッサーに限定されない最適化に関して、他社製マイクロプロセッサー用に同等の最適化を行えないことがあります。これには、インテル® ストリーミング SIMD 拡張命令 2、インテル® ストリーミング SIMD 拡張命令 3、インテル® ストリーミング SIMD 拡張命令 3 補足命令などの最適化が該当します。インテルは、他社製マイクロプロセッサーに関して、いかなる最適化の利用、機能、または効果も保証いたしません。本製品のマイクロプロセッサー依存の最適化は、インテル® マイクロプロセッサーでの使用を前提としています。インテル® マイクロアーキテクチャーに限定されない最適化のなかにも、インテル® マイクロプロセッサー用のものがあります。この注意事項で言及した命令セットの詳細については、該当する製品のユーザー・リファレンス・ガイドを参照してください。 注意事項の改訂 #20110804 |