浮動小数点演算のセマンティクスを制御します。
Linux*: | -fp-model=keyword |
macOS*: | -fp-model=keyword |
Windows*: | /fp:keyword |
keyword |
使用するセマンティクスを指定します。設定可能な値は以下のとおりです。
|
-fp-model=fast |
浮動小数点の演算時に、より強力な最適化を行います。 |
浮動小数点演算のセマンティクスを制御します。
keywords は次のグループに分けられます。
グループ A: precise、fast、strict
グループ B: source
グループ C: except (あるいは否定形 -no-except または /except-)
グループ D: consistent
複数の keywords を指定できます。ただし、次の規則が適用されます。
同じコンパイル処理で fast と except を一緒に指定することはできません。その他のグループ A、B、C の組み合わせは指定できます。
fast はデフォルトなので、グループ A や B の keywords を指定しないで except を指定することはできません。
グループ A とグループ B から keywords を 1 つずつ指定します。グループ A またはグループ B から複数の keywords を指定すると、最後 (右端) の keywords だけが有効になります。
複数回、except を指定した場合は、最後 (右端) の except だけが有効になります。
consistent と別のグループのほかのキーワードを一緒に指定すると、最後の (一番右側の) キーワードは consistent によって設定されるヒューリスティックを完全にオーバーライドしない可能性があります。
fp-model=fast (または /fp:fast) オプションと fp-model=fast=2 (または /fp:fast=2) オプションは、ifx と ifort で動作が異なります。
ifort では、浮動小数点の比較は IEEE 浮動小数点規格で指定されているとおりに行われ、生成されるコードシーケンスは比較が NaN を含むことができると仮定します。
ifx は NaN オペランドのチェックを生成しません。ifx で fp-model=fast (または /fp:fast) または fp-model=fast=2 (または /fp:fast=2) を使用し、NaN の比較を ifort の動作と一致させる場合、コマンドラインで assume nan_compares オプションを指定します。
浮動小数点 (FP) 環境とは、FP 機械語命令の動作を制御するレジスターの集合で、現在の FP の状態を指します。浮動小数点環境には、丸めモード制御、例外マスク、FTZ (Flush-to-Zero) 制御、例外ステータスフラグ、およびその他の浮動小数点関連の機能が含まれます。
オプション |
説明 |
---|---|
-fp-model=precise または /fp:precise |
浮動小数点の演算時に、厳密に精度に影響しない最適化を行うようにコンパイラーに指示します。浮動小数点演算の結果を変更してしまう最適化は無効になります。 これらのセマンティクスは、シリアルコードおよびコンパイラーによりベクトル化または自動並列化されたコードの浮動小数点演算の再現性 (結果の一貫性) を保証しますが、パフォーマンスを低下させる可能性があります。その他の並列コードの値の安全性や実行ごとの再現性は保証しません。 OpenMP* コードにおける浮動小数点リダクション操作の実行ごとの再現性は、KMP_DETERMINISTIC_REDUCTION 環境変数を使用してスレッド数を固定することで得られる可能性があります。この環境変数に関する詳細は、「サポートされる環境変数」を参照してください。 コンパイラーはデフォルトの浮動小数点環境を想定します。変更はできません。 fp-model precise オプションは fp-model source を意味し、fp:precise オプションは fp:source を意味します。 浮動小数点セマンティクスはデフォルトで無効です。これらのセマンティクスを有効にするには、-fp-model except または /fp:except を指定しなければなりません。 |
-fp-model=fast[=1|2] または /fp:fast[=1|2] |
浮動小数点の演算時に、より強力な最適化を行うようにコンパイラーに指示します。これらの最適化で速度は向上しますが、浮動小数点演算の精度と再現性に影響する可能性があります。 fast を指定することは fast=1 を指定するのと同じです。fast=2 を指定するとより早く結果を生成できますが、精度が落ちます。 fast=2 は、ifx では assume nonan_compares を設定し、ifort では設定しません。ifx で fast=2 を使用し、ifort の動作と一致させるには、assume nan_compares を明示的に設定します。 浮動小数点セマンティクスはデフォルトで無効です。これらのセマンティクスを有効にするには、-fp-model except または /fp:except を指定しなければなりません。 |
-fp-model=consistent または /fp:consistent (ifort のみ) |
コンパイラーは、デフォルトのヒューリスティックを使用して、異なる最適化レベルや同じアーキテクチャーの異なるプロセッサーの結果を決定するコードを生成します。 詳細は、『インテル® コンパイラーの浮動小数点演算における結果の一貫性』 (https://www.isus.jp/products/c-compilers/consistency-of-floating-point-results/) を参照してください。 |
-fp-model=strict または /fp:strict |
浮動小数点の演算時に、厳密に精度に影響しない最適化を行うようにコンパイラーに指示し、浮動小数点例外セマンティクスを有効にします。これは最も厳密な浮動小数点モデルです。 コンパイラーはデフォルトの浮動小数点環境を想定しません。変更することが可能です。 浮動小数点例外セマンティクスは、明示的に -fp-model no-except または /fp:except- を指定することで無効にできます。 |
-fp-model=source または /fp:source (ifort のみ) |
このオプションは、中間結果をソースコードで定義された精度に丸めます。また、グループ A の keyword で上書きされない限り、precise の keyword を意味します。 コンパイラーはデフォルトの浮動小数点環境を想定します。変更はできません。 |
-fp-model=except または /fp:except (ifort のみ) |
厳密な浮動小数点例外セマンティクスを使用するようにコンパイラーに指示します。 |
次のオプションのいずれも指定されない場合 (次のオプションは ifort でのみ利用可能)、-fp-model オプションと /fp オプションは、数学ライブラリー関数の結果における相対誤差の最大限許容値 (max-error) を定義します。
-fimf-accuracy-bits (Linux* および macOS*) または /Qimf-accuracy-bits (Windows*)
-fimf-max-error (Linux* および macOS*) または /Qimf-max-error (Windows*)
-fimf-precision (Linux* および macOS*) または /Qimf-precision (Windows*)
[Q]fast-transcendentals
-fp-model fast (および /fp:fast) オプションは -fimf-precision=medium (/Qimf-precision:medium) オプションを設定し、-fp-model precise (および /fp:precise) オプションは -fimf-precision=high (および /Qimf-precision:high) オプションを意味します。-fp-model fast=2 (および /fp:fast2) オプションは -fimf-precision=medium (および /Qimf-precision:medium) と -fimf-domain-exclusion=15 (および /Qimf-domain-exclusion=15) を設定します。
このオプションは、中間結果計算のデフォルト (source) 精度の変更には使用できません。
Microsoft* Visual Studio* で Visual Studio* の Fortran プロジェクトを作成する場合、デフォルトで /fp:fast オプションが設定されます。このオプションは、浮動小数点の演算時により強力な最適化を行う浮動小数点モデルを使用します。これらの最適化で速度は向上しますが、浮動小数点演算の精度と再現性に影響する可能性があります。/fp:fast は、IDE プロジェクト・プロパティーの [Floating Point Model] の一般的なデフォルトです。
Visual Studio*: [Floating point] > [Floating Point Model]
[Floating point] > [Reliable floating-point exceptions model]
なし
製品および性能に関する情報 |
---|
性能は、使用状況、構成、その他の要因によって異なります。詳細については、http://www.intel.com/PerformanceIndex/ (英語) を参照してください。 注意事項の改訂 #20201201 |
『インテル® コンパイラーの浮動小数点演算における結果の一貫性』 (https://www.isus.jp/products/c-compilers/consistency-of-floating-point-results/) も参考になります。