自動で IA-32 およびインテル(R) 64 アーキテクチャー・プロセッサーを対象にする

-x (Linux* および Mac OS* X) オプションまたは /Qx (Windows*) オプションでは、IA-32 アーキテクチャーおよびインテル(R) 64 アーキテクチャーをベースにした特定のインテル(R) プロセッサー向けのアプリケーションの最適化 を自動で行うことができます。

自動で行う最適化では、それぞれのアーキテクチャーの特長、新しい命令セットやプロセッサー・デザインの新機能を活かすことができます。ただし、作成された最適化コードには、ほかのプロセッサーや以前のプロセッサーではサポートされていない機能が含まれていることがあります。そのため、これらのオプションを使用することで、アプリケーションの最小ハードウェア要件を効率良く設定することができます。

最適化では、インテル(R) ストリーミング SIMD 拡張命令 4 (SSE4)、ストリーミング SIMD 拡張命令 3 補足命令 (SSSE3)、ストリーミング SIMD 拡張命令 3 (SSE3)、ストリーミング SIMD 拡張命令 2 (SSE2)、またはストリーミング SIMD 拡張命令 (SSE) の各命令セットが生成されます。

IA-32 アーキテクチャーまたはインテル(R) 64 アーキテクチャーベースとした複数のプロセッサーでプログラムを実行する場合は、このオプションは使用しないでください。代わりに -ax (Linux および Mac OS X) オプションまたは /Qax (Windows) オプションを使用すると、プロセッサー固有のパフォーマンス・ゲインと、異なるプロセッサー間の移植性の両方を確保することができます。

Linux OS および Mac OS X

Windows OS

説明

-xHost

/QxHost

コンパイルを行うホスト・プロセッサーで利用可能な最上位の命令セット向けのコードを生成します。

-xAVX

/QxAVX

インテル(R) Advanced Vector Extensions (インテル(R) AVX) をサポートするインテル(R) プロセッサー向けに最適化します。(11.0 では未サポート)

-xSSE4.1

/QxSSE4.1

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

-xSSE4.2

/QxSSE4.2

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

-xSSE3_ATOM

/QxSSE3_ATOM

インテル(R) プロセッサー向けに MOVBE 命令を生成します。また、インテル(R) Atom(TM) プロセッサーとインテル(R) Centrino(R) Atom(TM) プロセッサー・テクノロジー向けに最適化します。

-xSSSE3

/QxSSSE3

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

-xSSE3

/QxSSE3

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

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

-xSSE2

/QxSSE2

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

Mac OS X: サポートされていません。

コンパイラー・オプション -m と /arch の特定のキーワードを使用して生成されるバイナリーは、対象となるインテル(R) プロセッサーと同じ機能を実装したインテル以外のプロセッサーでも動作します。詳細は、「コンパイラー・オプション」を参照してください。

プログラム実行中の不正な命令や、同様の予期しない実行エラーを防ぐために、コンパイラーは正しいプロセッサーが使用されていることをチェックするコードをメインルーチンに挿入します。このオプションを指定すると、最小プロセッサー・レベルに制限します。例えば、インテル(R) Core(TM) マイクロアーキテクチャー・ベースのインテル(R) Xeon(R) プロセッサーで実行されるアプリケーションを対象にすると、それ以前のインテル(R) プロセッサーでは正常に動作しないでしょう。

複数の processor 値をターゲットにすると、コンパイラーにより利点があると判断された場合に最も性能の高いプロセッサー向けにコードが生成されます。性能の高い processor 値から順に以下に示します。

  1. SSE4.1

  2. SSSE3

  3. SSE3

  4. SSE2

サポートされていないプロセッサーで、processor 値 SSE4.1、SSSE3、SSE3、または SSE2 でコンパイルされたプログラムを実行すると、ランタイムエラーが表示されます。例えば、processor 値に SSSE3 を指定してアプリケーションをコンパイルし、インテル(R) Pentium(R) 4 プロセッサーでアプリケーションを実行すると、次のようなエラーメッセージが表示されます。

ランタイムエラー

致命的なエラー: このプログラムは現在のシステムのプロセッサーで実行するようにビルドされていません。

許可されているプロセッサーはインテル(R) Core(TM) Duo プロセッサーおよび SSE3 補足命令 (Supplemental Streaming SIMD Extensions 3) に対応した互換性のあるインテル(R) プロセッサーです。
 

次の例は、インテル(R) Core(TM)2 Duo プロセッサーと互換性のあるプロセッサー向けにアプリケーションをコンパイルする方法を示します。生成されるバイナリーは以前のプロセッサーまたはインテル製以外の IA-32 プロセッサーでは正しく実行されないことがあります。

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

Linux および Mac OS X

ifort -xSSSE3 sample.f90

Windows

ifort /QxSSSE3 sample.f90