パフォーマンス上の利点がある場合、複数の機能固有の自動ディスパッチ・コードを生成するようにコンパイラーに指示します。この機能は ifort でのみ利用できます。
Linux*: | -axcode |
macOS*: | -axcode |
Windows*: | /Qaxcode |
code |
生成する命令セットを含む、ターゲット機能セットをコンパイラーに指示します。次の説明は、インテル® ストリーミング SIMD 拡張命令 (インテル® SSE) およびインテル® ストリーミング SIMD 拡張命令補足命令 (インテル® SSSE) についてです。設定可能な値は以下のとおりです。
|
複数の code 値を指定できます。複数の code 値を指定する場合は、各値をカンマで区切る必要があります。以下の例を参照してください。
オフ |
ディスパッチ・コードは生成されません。機能固有のコードが生成され、次のコンパイラー・オプションの設定で制御されます。
|
このオプションは、パフォーマンス上の利点がある場合、複数の機能固有の自動ディスパッチ・コードを生成するようにコンパイラーに指示します。また、汎用コードも生成します。通常、インテルの機能固有の自動ディスパッチ・コードは汎用コードよりも最適化されます。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 オプションで指定された設定と互換性のあるインテル以外のプロセッサーで実行できる汎用コードが生成されます。
インテルとインテル以外のベースラインでは同じ最適化が有効であり、どちらもデフォルトは x86 ベースのアーキテクチャーではインテル® SSE4.2 です。
-ax と -march オプション (Linux* および macOS*) または /Qax と /arch オプション (Windows*) をの両方を指定すると、コンパイラーはインテル固有の命令を生成しません。これは、-march を指定すると -ax は無効になり、/arch を指定すると/Qax は無効になるためです。
[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]
なし
以下は、このオプションの使用例です。
ifort -axSKYLAKE file.cpp ! Linux* および macOS* ifort /QaxSKYLAKE file.cpp ! Windows*
以下は、複数の code 値の使用例です。
ifort -axSKYLAKE,BROADWELL file.cpp ! Linux* および macOS* ifort /QaxBROADWELL,SKYLAKE file.cpp ! Windows*
カンマ区切りのリストでは、各値の間にスペースを含めてはなりません。
製品および性能に関する情報 |
---|
性能は、使用状況、構成、その他の要因によって異なります。詳細については、http://www.intel.com/PerformanceIndex/ (英語) を参照してください。 注意事項の改訂 #20201201 |