-ax{K|W| N|B|P} オプションは、指定されたインテル® プロセッサ固有の機能を利用する関数バージョンを生成できるかどうかを確認するようにコンパイラに命令します。コンパイラはこのような箇所を検出すると、プロセッサ固有に生成する関数がパフォーマンスを向上するかどうかを検証します。パフォーマンスが向上すると判明した場合、コンパイラはプロセッサ固有のバージョンと汎用バージョンの関数を生成します。汎用バージョンは、どの IA-32 プロセッサ上でも実行することができます。
プログラムの実行時に、使用しているインテル・プロセッサに応じて、この 2 つのバージョンのどちらを実行するか選択されます。このため、プログラムは以前の IA-32 プロセッサでも正常に動作しながら、新しいインテル・プロセッサにおいてパフォーマンスの大幅な向上を実現できます。
ただし、-ax{K|W|N|B|P} を使用した場合には、次のような欠点があります:
プロセッサ固有のコード・バージョンと汎用のコード・バージョンの両方が含まれるため、コンパイルされたバイナリのサイズが大きくなります。
使用するコードを決定するランタイム・チェックによって、パフォーマンスに影響があります。
注
この方法で特定のプロセッサ向けに最適化したアプリケーションは、あらゆるインテル IA-32 プロセッサ上で実行できます。-x と -ax オプションの両方を指定した場合、-x オプションで指定されたプロセッサの種類と互換性のあるプロセッサでのみ実行できる汎用コードが生成されます。
オプション |
最適化の対象となるプロセッサ |
-axK |
インテル® Pentium® III プロセッサおよび互換性のあるインテル・プロセッサ。 |
-axW |
インテル Pentium 4 プロセッサおよび互換性のあるインテル・プロセッサ。 |
-axN |
インテル Pentium 4 プロセッサおよび互換性のあるインテル・プロセッサ。このオプションは、インテル・プロセッサ固有の最適化に加えて、新しい最適化も有効にします。 |
-axB |
インテル Pentium M プロセッサおよび互換性のあるインテル・プロセッサ。このオプションは、インテル・プロセッサ固有の最適化に加えて、新しい最適化も有効にします。 |
-axP |
ストリーミング SIMD 拡張命令 3 (SSE3) をサポートするインテル Pentium 4 プロセッサ。このオプションは、インテル・プロセッサ固有の最適化に加えて、新しい最適化も有効にします。 |
例
下記のコンパイルは、次のような 1 つの実行ファイルを生成します:
すべての IA-32 プロセッサで使用できる汎用バージョン
パフォーマンスが向上する場合、Pentium 4 プロセッサ用に最適化されたバージョン
パフォーマンスが向上する場合、Pentium M プロセッサ用に最適化されたバージョン
ifort -axNB prog.f90