-ax (Linux*) または /Qax (Windows*) オプションは、指定されたインテル(R) プロセッサー固有の機能を利用する関数バージョンを生成できるかどうかを確認するようコンパイラーに指示します。
固有の関数バージョンを生成できることが判明した場合、コンパイラーはそれがパフォーマンスの向上につながるかどうかをチェックします。パフォーマンスの向上につながると判断した場合、コンパイラーはプロセッサー固有のバージョンと汎用バージョンの両方の関数を生成します。汎用バージョンは、あらゆる IA-32 プロセッサー上で実行できます。
実行時に、使用しているインテル・プロセッサーに応じて、この 2 つのバージョンのいずれかが実行されます。この手法を使用することで、プログラムは従来の IA-32 プロセッサーとの互換性を保ちながら、最新のインテル・プロセッサー上でパフォーマンスを大幅に向上できます。
Windows |
Linux |
最適化の対象となるプロセッサー |
---|---|---|
/QaxK |
-axK |
インテル(R) Pentium(R) III プロセッサーおよび互換性のあるインテル・プロセッサー |
/QaxW |
-axW |
インテル Pentium 4 プロセッサーおよび互換性のあるインテル・プロセッサー |
/QaxN |
-axN |
インテル Pentium 4 プロセッサーおよび互換性のあるインテル・プロセッサー |
/QaxB |
-axB |
インテル Pentium M プロセッサーおよび互換性のあるインテル・プロセッサー |
/QaxP |
-axP |
インテル(R) Core(TM) Duo プロセッサーおよびインテル Core Solo プロセッサー、ストリーミング SIMD 拡張命令 3 (SSE3) をサポートするインテル Pentium 4 プロセッサーおよび互換性のあるインテル・プロセッサー |
インテル EM64T 対応システムでは、有効な processor 値は W および P のみです。Mac OS* を実行しているインテル・プロセッサー・ベースのシステムでは、有効な processor 値は P のみです。
次のコンパイル例では、以下の 3 つの実行ファイルを生成する方法を説明します。
パフォーマンスが向上する場合、インテル Pentium 4 プロセッサー用に最適化されたバージョン
パフォーマンスが向上する場合、インテル Pentium M プロセッサー用に最適化されたバージョン
すべての IA-32 プロセッサーで使用できる汎用バージョン
プラットフォーム |
例 |
---|---|
Linux |
icpc -axNB prog.cpp |
Windows |
icl /QaxNB prog.cpp |
上の表のオプションに関する詳細は、次のトピックを参照してください。
-ax コンパイラー・オプション
-ax (Linux) または /Qax (Windows) オプションを使用した場合、次のような欠点があります。
プロセッサー固有のコードバージョンと汎用のコードバージョンの両方が含まれるため、コンパイルされたバイナリーのサイズが大きくなります。
パフォーマンスは、使用するコードを決定するランタイムチェックによって多少影響を受けます。
このオプションでコンパイルするアプリケーションは、すべての IA-32 プロセッサー上で実行できます。-x (Linux)、/Qx (Windows) と -ax (Linux)、/Qax (Windows) オプションの両方を指定した場合、-x (Linux)、/Qx (Windows) オプションで指定されたプロセッサーの種類と互換性のあるプロセッサーでのみ実行できる汎用コードが生成されます。