IA-32 アーキテクチャと Itanium® アーキテクチャのオプション

このセクションで説明されているオプションはすべて、IA-32 および Itanium® アーキテクチャの浮動小数点 (FP) 演算のさまざまな精度での最適化を提供します。

-mp1 (IA-32 のみ) および -mp オプションは、浮動小数点精度を向上しますがアプリケーションのパフォーマンスに影響します。  これらのオプションについての詳細は、「浮動小数点演算の精度の向上と制限」を参照してください。

FP オプションは、浮動小数点演算のさまざまな精度の最適化を提供します。これらの最適化を無効にするには、-O0 オプションを指定します。

-mp オプション

-mp オプションで、最適化を制限し、宣言された精度を維持します。例えば、インテル® Fortran コンパイラでは、分母の逆数によって浮動小数点数の除算計算を乗算に変えられます。ただし、これによって、浮動小数点数の除算計算の結果が多少変わることがあります。-mp スイッチを使用すると、実行速度が多少遅くなる場合があります。詳細は、「浮動小数点演算の精度の向上と制限」を参照してください。

-mp1 オプション

-mp1 オプションは、-mp オプションよりもパフォーマンスへの影響が少なく、浮動小数点精度を宣言された精度に近づけるために制限します。このオプションでは、超越関数のオペランドの範囲外チェックを実現し、浮動小数点演算の比較精度を向上させます。

デノーマル値をゼロにフラッシュする (-ftz[-])

-ftz[-] オプションは、アプリケーションが漸次アンダーフロー・モードの場合に、デノーマル結果をゼロにフラッシュします。-ftz でデノーマル値をフラッシュすると、アプリケーションのパフォーマンスが向上する場合があります。

デフォルトの状態では、-ftz- はオフです。デフォルトでは、コンパイラは結果を漸次アンダーフローにします。デフォルトの -O2 オプションでは、-ftz[-] がオフになっています。

Itanium ベース・システム上の -ftz[-]

Itanium ベース・システムの場合のみ、-O3 オプションを使用すると -ftz がオンになります。

-ftz オプションにより、プログラムの数値動作で好ましくない結果が出力された場合、次のようにコマンドラインで -ftz- を使用して FTZ (ゼロ・フラッシュ) モードをオフに設定できます。これにより、-O3 最適化の利点をそのまま活用できます。

ifort -O3 -ftz- myprog.f

使用方法:

-ftz[-] オプションは浮動小数点アンダーフローの結果に対して次のような影響を与えます:

IA-32 システムでは、-ftz で突発アンダーフロー (abrupt underflow) を設定すると SSE/SSE2 命令のパフォーマンスが向上することがありますが、x87 命令のパフォーマンスや数値的動作には影響を与えません。したがって -ftz は、比較的新しい IA-32 インテル・プロセッサの命令を有効にする -x または -ax オプションを選択しない限り効果がありません。

Itanium ベース・プロセッサでは、ゼロへの漸次アンダーフロー (gradual underflow) が発生するとパフォーマンスが低下します。高い最適化レベルを使用してデフォルトを突発アンダーフロー (abrupt underflow) にするか、明示的に、-ftz を設定することで、パフォーマンスを改善することができます。
-ftz
を使用すると、特に単精度のコードの場合、実際にアンダーフローが発生しなくても、Itanium 2 プロセッサのパフォーマンスが向上することがあります。

浮動小数点例外処理の使用 (-fpen)

-fpen オプションを使用して、例外の処理を制御します。 -fpen オプションは、n の値に応じて浮動小数点例外を制御します。

浮動小数点例外には次のような種類があります。

-fpen オプションを使用すると、メイン・プログラムのランタイム時に処理される浮動小数点例外の結果をある程度制御することができます。

-fpen オプションは、Fortran メイン・プログラムにのみ影響します。Fortran メイン・プログラムによって設定された浮動小数点例外動作は、全プログラムの実行に影響します。メイン・プログラムが Fortran ではない場合、ユーザは Fortran 組込み関数 FOR_SET_FPE を使用して浮動小数点例外動作を設定することができます。

プログラムに含まれる各ルーチンを別々にコンパイルする際は、-fpen オプションで同じ n 値を使用してください。

詳細については、『Linux* 版インテル® Fortran コンパイラ・ユーザーズ・ガイド Vol I』の「浮動小数点例外の制御」を参照してください。