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

-ax (Linux* および Mac OS* X) オプションまたは /Qax (Windows*) オプションを指定すると、IA-32 アーキテクチャーおよびインテル® 64 アーキテクチャー・ベースの新しいインテル® プロセッサーのパフォーマンスと機能を活用できる、複数の専用コードを生成できるかどうかが判断されます。このオプションでは、同じアプリケーションを多くのプロセッサーで実行できるように汎用的な (基準) コードも生成されます。ただし、汎用コードは、専用コードに比べると一般的に実行速度は遅くなります。

コンパイラーは、どのバージョンのコードを実行するかを決定するランタイム・チェック・コードを挿入します。プロセッサー固有のコードと汎用コードの両方が含まれるため、コンパイルされたバイナリーのサイズは大きくなります。アプリケーション・パフォーマンスは、使用するコードを決定するランタイムチェックによって多少変わります。実行されるコードは、実行時に検出されるプロセッサーによって決まります。

汎用コードのプロセッサー・サポートは、-m または -x (Linux および Mac OS X) や /arch または /Qx (Windows) オプション (各アーキテクチャーのデフォルト値が含まれる) によって決定されます。

これにより、汎用コードにさらに厳密なプロセッサーまたは命令セットの要件を課すことができます。ただし、そのような汎用基準コードは、プロセッサーまたは命令セットの最小要件に合致していないプロセッサー上では正しく実行されません。IA-32 アーキテクチャーの場合、-mia32 (Linux) または /arch:IA32 (Windows) オプションを使用して、すべての IA-32 互換プロセッサー上で動作する汎用コードを指定することができます。その場合、アーキテクチャーのデフォルトに頼るのではなく、汎用コードに対して常に明示的にプロセッサーや命令セット要件を指定する必要があります。

専用コードの最適化では、インテル® ストリーミング SIMD 拡張命令 4 (SSE4)、ストリーミング SIMD 拡張命令 3 補足命令 (SSSE3)、ストリーミング SIMD 拡張命令 3 (SSE3)、またはストリーミング SIMD 拡張命令 2 (SSE2) の各命令セットが生成されます。ただし、そのような専用コードは、コードがランタイム・ホスト・プロセッサーでサポートされていることが確認された後でのみ、実行されます。

特に記述がない限り、次の processor 値が IA-32 アーキテクチャーとインテル® 64 アーキテクチャーで有効です。

Linux および Mac OS X

Windows

説明

-axSSE4.2

/QaxSSE4.2

インテル® Core™ i7 プロセッサーでサポートされているインテル® SSE4 高効率および高速な文字列処理命令を生成します。インテル® SSE4 ベクトル化コンパイラー命令およびメディア・アクセラレーター命令、インテル® SSSE3、SSE3、SSE2、SSE 命令を生成します。また、インテル® Core™ プロセッサー・ファミリー向けに最適化します。

-axSSE4.1

/QaxSSE4.1

SSE4 ベクトル化コンパイラー命令およびメディア・アクセラレーター命令をインテル® プロセッサー向けに生成します。インテル® SSSE3、SSE3、SSE2、および SSE 命令を生成します。また、インテル® 45nm Hi-k 次世代 インテル® Core™ マイクロアーキテクチャー・プロセッサー向けに最適化します。このオプションは、推奨されていない値 S の代わりに使用します。

Mac OS X: IA-32 アーキテクチャーとインテル® 64 アーキテクチャー。

-axSSSE3

/QaxSSSE3

インテル® プロセッサー向けにインテル® SSSE3、SSE3、SSE2、および SSE 命令を生成します。また、インテル® Core™2 Duo プロセッサー・ファミリー向けに最適化します。このオプションは、推奨されていない値 T の代わりに使用します。

Mac OS X: IA-32 アーキテクチャー。

-axSSE3_ATOM

/QaxSSE3_ATOM

インテル® Atom™ プロセッサーとインテル® Centrino® Atom™ プロセッサー・テクノロジー向けに最適化します。-minstruction オプション (Linux および Mac OS) または /Qinstruction オプション (Windows) の設定に応じて、MOVBE 命令を生成します。

Mac OS X: IA-32 アーキテクチャーでサポートされています。

-axSSE3

/QaxSSE3

インテル® プロセッサー向けにインテル® SSE3、SSE2、および SSE 命令を生成します。また、インテル® Core™ マイクロアーキテクチャーおよび Intel NetBurst® マイクロアーキテクチャーをベースとするインテル® プロセッサー向けに最適化します。このオプションは、推奨されていない値 P の代わりに使用します。

Mac OS X: IA-32 アーキテクチャー。

-axSSE2

/QaxSSE2

インテル® プロセッサー向けにインテル® SSE2 および SSE 命令を生成します。また、インテル® Pentium® 4 プロセッサー、インテル® Pentium® M プロセッサー、およびインテル® SSE2 対応インテル® Xeon® プロセッサー向けに最適化します。

Linux および Windows: IA-32 アーキテクチャー。

Note icon

-diag-disable cpu-dispatch (Linux および Mac OS X) または /Qdiag-disable:cpu-dispatch (Windows) を指定して、CPU ディスパッチの複数のコードに関するリマークの表示を無効にすることができます。

IA-32 またはインテル® 64 アーキテクチャー対応のアプリケーションで、複数のプロセッサーで実行する必要がない場合は、このオプションの代わりに、-x (Linux および Mac OS X) または /Qx (Windows) オプションを使用することを検討してください。

次のオプション例は、インテル® Core™2 Duo プロセッサー (パフォーマンス・ゲインがある限り) の最適化バージョン、インテル® Core™ Duo プロセッサー (パフォーマンス・ゲインがある限り) の最適化バージョン、および IA-32 アーキテクチャー・プロセッサーで実行される汎用基準バージョンを生成する方法を示します。

Note icon

引数を組み合わせる場合は、カンマ (",") を各引数の間に追加する必要があります。

オペレーティング・システム

Linux

ifort -axSSSE3,SSE3 -mia32 sample.f90

Windows

ifort /QaxSSSE3,SSE3 /arch:IA32 sample.f90