プロセッサ固有のランタイム・チェック (IA-32 システム)

インテル® Fortran コンパイラの最適化はランタイム時に効果を発揮します。IA-32 システムでは、コンパイラはメインルーチン中に記述されているランタイム・チェックを実行するコード・セグメントを挿入して、プロセッサ固有の最適化を強化します。

-xB-xB、または -xP による対応プロセッサのチェック

実行エラーを防ぐために、コンパイラはメインルーチン中に正しいプロセッサが使用されていることをチェックするコードを挿入します。-xN-xB、または -xP オプションを使用してコンパイルされたプログラムは、インテル® Pentium® 4 プロセッサ、インテル Pentium M プロセッサ、ハイパー・スレデッィング (HT) テクノロジ インテル Pentium 4 プロセッサ (SSE3 対応)、またはこれらと互換性のあるインテル® プロセッサ上で実行されているかどうか、ランタイム時にチェックされます。プログラムがこれらのいずれかのプロセッサ上で実行されていない場合、プログラムはエラーを出力して終了します。

プログラム foo.f90 を HT テクノロジ インテル Pentium 4 プロセッサ (SSE3 対応) 用に最適化するには、次のコマンドを使用します。

ifort -xP foo.f90 -o foo.exe

foo.exe が HT テクノロジ インテル Pentium 4 プロセッサ (SSE3 対応) と互換性のないプロセッサ (例えば、インテル Pentium 4 プロセッサ) 上で実行されると、プログラムは終了します。

プログラムを複数の IA-32 プロセッサ上で実行する場合は、プロセッサ固有の最適化を行う -x オプションではなく、プロセッサ固有のコードと汎用コードを生成する -ax オプションを使用してください。

FTZ と DAZ フラグの設定

これまで、IA-32 プロセッサでは FTZ (ゼロ・フラッシュ) と DAZ (denormals are zeros) フラグはデフォルトでオフになっていました。これらのフラグをオンにすると、IEEE 準拠ではなくなりますが、最新の IA-32 プロセッサ上で実行される漸次アンダーフロー・モードでデノーマルな浮動小数点値が使用され、プログラムのパフォーマンスが大幅に向上します。このため、インテル Pentium III プロセッサ、インテル Pentium 4 プロセッサ、インテル Pentium M プロセッサ、HT テクノロジ インテル Pentium 4 プロセッサ (SSE3 対応)、および互換性のある IA-32 プロセッサの場合、コンパイラはデフォルトでこれらのフラグをオンにするように変更されました。コンパイラは、プログラムがこれらのインテル・プロセッサのいずれかで実行されていることを確認するため、プロセッサのランタイム・チェックを実行するコードをプログラム中に挿入します。

これらのフラグは、サポートが確認されたインテル・プロセッサによってのみオンにされます。

インテル以外のプロセッサの場合、次のインテル Fortran 組込み関数を使用してフラグを手動で設定することができます:

RESULT = FOR_SET_FPE (FOR_M_ABRUPT_UND)