-ax (Linux* および Mac OS* X) オプションまたは /Qax (Windows*) オプションを指定すると、IA-32 アーキテクチャーおよびインテル(R) 64 アーキテクチャー・ベースの新しいインテル(R) プロセッサーのパフォーマンスと機能を活用できる、複数の専用コードを生成できるかどうかが判断されます。このオプションでは、同じアプリケーションを多くのプロセッサーで実行できるように汎用的な (基準) コードも生成されます。ただし、汎用コードは、専用コードに比べると一般的に実行速度は遅くなります。
コンパイラーは、どのバージョンのコードを実行するかを決定するランタイム・チェック・コードを挿入します。プロセッサー固有のコードと汎用コードの両方が含まれるため、コンパイルされたバイナリーのサイズは大きくなります。アプリケーション・パフォーマンスは、使用するコードを決定するランタイムチェックによって多少変わります。実行されるコードは、実行時に検出されるプロセッサーによって決まります。
汎用コードのプロセッサー・サポートは、-m または -x (Linux および Mac OS X) や /arch または /Qx (Windows) オプション (各アーキテクチャーのデフォルト値が含まれる) によって決定されます。
これにより、汎用コードにさらに厳密なプロセッサーまたは命令セットの要件を課すことができます。ただし、そのような汎用基準コードは、プロセッサーまたは命令セットの最小要件に合致していないプロセッサー上では正しく実行されません。IA-32 アーキテクチャーの場合、-mia32 (Linux) または /arch:IA32 (Windows) オプションを使用して、すべての IA-32 互換プロセッサー上で動作する汎用コードを指定することができます。その場合、アーキテクチャーのデフォルトに頼るのではなく、汎用コードに対して常に明示的にプロセッサーや命令セット要件を指定する必要があります。
専用コードの最適化では、インテル(R) ストリーミング SIMD 拡張命令 4 (SSE4)、ストリーミング SIMD 拡張命令 3 補足命令 (SSSE3)、ストリーミング SIMD 拡張命令 3 (SSE3)、またはストリーミング SIMD 拡張命令 2 (SSE2) の各命令セットが生成されます。ただし、そのような専用コードは、コードがランタイム・ホスト・プロセッサーでサポートされていることが確認された後でのみ、実行されます。
特に記述がない限り、次の processor 値が IA-32 アーキテクチャーとインテル(R) 64 アーキテクチャーで有効です。
Linux OS および Mac OS X |
Windows OS |
説明 |
---|---|---|
-axSSE4.2 |
/QaxSSSE4.2 |
インテル(R) Core(TM) i7 プロセッサーでサポートされているインテル(R) SSE4 高効率および高速な文字列処理命令を生成します。インテル(R) SSE4 ベクトル化コンパイラー命令およびメディア・アクセラレーター命令、インテル(R) SSSE3、SSE3、SSE2、SSE 命令を生成します。また、インテル(R) Core(TM) プロセッサー・ファミリー向けに最適化します。 |
-axSSE4.1 |
/QaxSSSE4.1 |
インテル(R) SSE4 ベクトル化コンパイラーとメディア・アクセラレーター命令をインテル(R) プロセッサー向けに生成します。インテル(R) SSSE3、SSE3、SSE2、SSE 命令を生成します。また、インテル(R) 45nm Hi-k 次世代 インテル(R) Core(TM) マイクロアーキテクチャー・プロセッサー向けに最適化します。このオプションは、推奨されていない値 S の代わりに使用します。 Mac OS X: IA-32 アーキテクチャーとインテル(R) 64 アーキテクチャー。 |
-axSSSE3 |
/QaxSSSE3 |
インテル(R) プロセッサー向けにインテル(R) SSSE3、SSE3、SSE2、および SSE 命令を生成します。また、インテル(R) Core(TM)2 Duo プロセッサー・ファミリー向けに最適化します。このオプションは、推奨されていない値 T の代わりに使用します。 Mac OS X: IA-32 アーキテクチャー。 |
-axSSE3 |
/QaxSSE3 |
インテル(R) SSE3、SSE2、および SSE 命令を生成します。また、インテル(R) Core(TM) マイクロアーキテクチャーおよび Intel NetBurst(R) マイクロアーキテクチャーをベースとするインテル(R) プロセッサー向けに最適化します。このオプションは、推奨されていない値 P の代わりに使用します。 Mac OS X: IA-32 アーキテクチャー。 |
-axSSE2 |
/QaxSSE2 |
インテル(R) プロセッサー向けにインテル(R) SSE2 および SSE 命令を生成します。また、インテル(R) Pentium(R) 4 プロセッサー、インテル(R) Pentium(R) M プロセッサー、およびインテル(R) SSE2 対応インテル(R) Xeon(R) プロセッサー向けに最適化します。 Linux および Windows: IA-32 アーキテクチャー。 |
-diag-disable cpu-dispatch (Linux および Mac OS X) または /Qdiag-disable:cpu-dispatch (Windows) を指定して、CPU ディスパッチの複数のコードに関するリマークの表示を無効にすることができます。
IA-32 またはインテル(R) 64 アーキテクチャー対応のアプリケーションで、複数のプロセッサーで実行する必要がない場合は、このオプションの代わりに、-x (Linux および Mac OS X) または /Qx (Windows) オプションを使用することを検討してください。
次のオプション例は、インテル(R) Core(TM)2 Duo プロセッサー (パフォーマンス・ゲインがある限り) の最適化バージョン、インテル(R) Core(TM) Duo プロセッサー (パフォーマンス・ゲインがある限り) の最適化バージョン、および IA-32 アーキテクチャー・プロセッサーで実行される汎用基準バージョンを生成する方法を示します。
注
引数を組み合わせる場合は、カンマ (",") を各引数の間に追加する必要があります。
オペレーティング・システム |
例 |
---|---|
Linux |
ifort -axSSSE3,SSE3 -mia32 sample.f90 |
Windows |
ifort /QaxSSSE3,SSE3 /arch:IA32 sample.f90 |