ランタイム・パフォーマンス用に複数の IA-32 およびインテル(R) 64 アーキテクチャー・プロセッサーを対象にする

-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