-x (Linux* および Mac OS* X) オプションまたは /Qx (Windows*) オプションでは、IA-32 アーキテクチャーおよびインテル® 64 アーキテクチャーをベースにした特定のインテル® プロセッサー向けのアプリケーションの最適化を自動で行うことができます。
自動で行う最適化では、それぞれのアーキテクチャーの特長、新しい命令セットやプロセッサー・デザインの新機能を活かすことができます。ただし、作成された最適化コードには、ほかのプロセッサーや以前のプロセッサーではサポートされていない機能が含まれていることがあります。そのため、これらのオプションを使用することで、アプリケーションの最小ハードウェア要件を効率良く設定することができます。
最適化では、インテル® ストリーミング SIMD 拡張命令 4 (SSE4)、ストリーミング SIMD 拡張命令 3 補足命令 (SSSE3)、ストリーミング SIMD 拡張命令 3 (SSE3)、ストリーミング SIMD 拡張命令 2 (SSE2)、またはストリーミング SIMD 拡張命令 (SSE) の各命令セットが生成されます。
IA-32 アーキテクチャーまたはインテル® 64 アーキテクチャーをベースとした複数のプロセッサーでプログラムを実行する場合は、このオプションは使用しないでください。代わりに -ax (Linux および Mac OS X) オプションまたは /Qax (Windows) オプションを使用すると、プロセッサー固有のパフォーマンス・ゲインと、異なるプロセッサー間の移植性の両方を確保することができます。
Linux および Mac OS X |
Windows |
説明 |
---|---|---|
コンパイルを行うホスト・プロセッサーで利用可能な最上位の命令セット向けのコードを生成します。 |
||
インテル® Advanced Vector Extensions (インテル® AVX) をサポートするインテル® プロセッサー向けに最適化します。 |
||
SSE4 ベクトル化コンパイラー命令およびメディア・アクセラレーター命令をインテル® プロセッサー向けに生成します。インテル® SSSE3、SSE3、SSE2、および SSE 命令を生成します。また、インテル® 45nm Hi-k 次世代 インテル® Core™ マイクロアーキテクチャー・プロセッサー向けに最適化します。このオプションは、推奨されていない値 S の代わりに使用します。 |
||
インテル® Core™ i7 プロセッサーでサポートされているインテル® SSE4 高効率および高速な文字列処理命令を生成します。インテル® SSE4 ベクトル化コンパイラー命令およびメディア・アクセラレーター命令、インテル® SSSE3、SSE3、SSE2、SSE 命令を生成します。また、インテル® Core™ プロセッサー・ファミリー向けに最適化します。 |
||
インテル® プロセッサー向けにインテル® SSSE3、SSE3、SSE2、および SSE 命令を生成します。また、インテル® Core™2 Duo プロセッサー・ファミリー向けに最適化します。このオプションは、推奨されていない値 T の代わりに使用します。 |
||
インテル® Atom™ プロセッサーとインテル® Centrino® Atom™ プロセッサー・テクノロジー向けに最適化します。-minstruction オプション (Linux および Mac OS) または /Qinstruction オプション (Windows) の設定に応じて、MOVBE 命令を生成します。 Mac OS X: IA-32 アーキテクチャーでサポートされています。 |
||
インテル® プロセッサー向けにインテル® SSE3、SSE2、および SSE 命令を生成します。また、インテル® Core™ マイクロアーキテクチャーおよび Intel NetBurst® マイクロアーキテクチャーをベースとするインテル® プロセッサー向けに最適化します。このオプションは、推奨されていない値 P の代わりに使用します。 Mac OS X: IA-32 アーキテクチャーでサポートされています。 |
||
インテル® プロセッサー向けにインテル® SSE2 および SSE 命令を生成します。また、インテル® Pentium® 4 プロセッサー、インテル® Pentium® M プロセッサー、およびインテル® SSE2 対応インテル® Xeon® プロセッサー向けに最適化します。 Mac OS X: サポートされていません。 |
コンパイラー・オプション -m と /arch の特定のキーワードを使用して生成されるバイナリーは、対象となるインテル® プロセッサーと同じ機能を実装したインテル以外のプロセッサーでも動作します。詳細は、「コンパイラー・オプション」を参照してください。
プログラム実行中の不正な命令や、同様の予期しない実行エラーを防ぐために、コンパイラーは正しいプロセッサーが使用されていることをチェックするコードをメインルーチンに挿入します。このオプションを指定すると、最小プロセッサー・レベルに制限します。例えば、インテル® Core™ マイクロアーキテクチャー・ベースのインテル® Xeon® プロセッサーで実行されるアプリケーションを対象にすると、それ以前のインテル® プロセッサーでは正常に動作しないでしょう。
複数の processor 値をターゲットにすると、コンパイラーにより利点があると判断された場合に最も性能の高いプロセッサー向けにコードが生成されます。性能の高い processor 値から順に以下に示します。
SSE4.1
SSSE3
SSE3
SSE2
サポートされていないプロセッサーで、processor 値 SSE4.1、SSSE3、SSE3、または SSE2 でコンパイルされたプログラムを実行すると、ランタイムエラーが表示されます。例えば、processor 値に SSSE3 を指定してアプリケーションをコンパイルし、インテル® Pentium® 4 プロセッサーでアプリケーションを実行すると、次のようなエラーメッセージが表示されます。
ランタイムエラー |
---|
致命的なエラー: このプログラムは現在のシステムのプロセッサーで実行するようにビルドされていません。 許可されているプロセッサーは、インテル® Core™ Duo プロセッサーおよびストリーミング SIMD 拡張命令 3 補足命令 (SSSE3) に対応した互換性のあるインテル® プロセッサーです。 |
次の例は、インテル® Core™2 Duo プロセッサーと互換性のあるプロセッサー向けにアプリケーションをコンパイルする方法を示します。生成されるバイナリーは以前のプロセッサーまたはインテル製以外の IA-32 プロセッサーでは正しく実行されないことがあります。
オペレーティング・システム |
例 |
---|---|
Linux および Mac OS X |
ifort -xSSSE3 sample.f90 |
Windows |
ifort /QxSSSE3 sample.f90 |