浮動小数点演算のセマンティクスを制御します。
Windows: [Floating point (浮動小数点)] > [Floating Point Model (浮動小数点モデル)]
[Floating point (浮動小数点)] > [Reliable floating-point exceptions model (信頼性のある浮動小数点例外モデル)]
Linux: なし
Mac OS X: [Floating point (浮動小数点)] > [Floating Point Model (浮動小数点モデル)]
[Floating point (浮動小数点)] > [Reliable floating-point exceptions model (信頼性のある浮動小数点例外モデル)]
IA-32、インテル® 64 アーキテクチャー
Linux* および Mac OS* X: | -fp-model keyword |
Windows: | /fp:keyword |
keyword |
使用するセマンティクスを指定します。設定可能な値は以下のとおりです。
|
-fp-model fast=1 |
浮動小数点の演算時に、より強力な最適化を行います。 |
浮動小数点演算のセマンティクスを制御します。
keyword は次のグループに分けられます。
グループ A: precise、fast、strict
グループ B: source
グループ C: except (または否定形)
複数の keyword を使用できます。ただし、次の規則が適用されます。
同じコンパイル処理で fast と except を一緒に指定することはできません。その他のグループ A、B、C の組み合わせは指定できます。
fast はデフォルトなので、グループ A や B の keyword を指定しないで except を指定することはできません。
グループ A とグループ B から keyword を 1 つずつ指定します。グループ A またはグループ B から複数の keyword を指定すると、最後 (右端) の keyword だけが有効になります。
複数回、except を指定した場合は、最後 (右端) の except だけが有効になります。
浮動小数点 (FP) 環境とは、FP 機械語命令の動作を制御するレジスターの集合で、現在の FP の状態を指します。浮動小数点環境には、丸めモード制御、例外マスク、FTZ (Flush-to-Zero) 制御、例外ステータスフラグ、およびその他の浮動小数点関連の機能が含まれます。
オプション |
説明 |
---|---|
-fp-model precise または /fp:precise |
浮動小数点の演算時に、厳密に精度に影響しない最適化を行うようコンパイラーに指示します。浮動小数点演算の結果を変更してしまう最適化は無効になります。これらのセマンティクスは、浮動小数点演算の精度を保証しますが、パフォーマンスを低下させる可能性があります。 コンパイラーはデフォルトの浮動小数点環境を想定します。変更はできません。 浮動小数点セマンティクスはデフォルトで無効です。これらのセマンティクスを有効にするには、-fp-model except または /fp:except を指定しなければなりません。 |
-fp-model fast[=1|2] または /fp:fast[=1|2] |
浮動小数点の演算時に、より強力な最適化を行うようコンパイラーに指示します。これらの最適化で速度は向上しますが、浮動小数点演算の精度を変更してしまう可能性があります。 fast を指定することは fast=1 を指定するのと同じです。fast=2 を指定するとより早く結果を生成できますが、精度が落ちます。 浮動小数点例外セマンティクスはデフォルトでは無効です。同じコンパイル処理で fast と except を一緒に指定できないため、有効にすることはできません。例外セマンティクスを有効にするには、別の keyword (詳細は、ほかの keyword の説明を参照してください) を明示的に指定する必要があります。 |
-fp-model strict または /fp:strict |
浮動小数点の演算時に、厳密に精度に影響しない最適化を行うようコンパイラーに指示し、浮動小数点例外セマンティクスを有効にします。これは最も厳密な浮動小数点モデルです。 コンパイラーはデフォルトの浮動小数点環境を想定しません。変更することが可能です。 浮動小数点例外セマンティクスは、明示的に -fp-model no-except または /fp:except- を指定することで無効にできます。 |
-fp-model source または /fp:source |
このオプションは、中間結果をソースコードで定義された精度に丸めます。また、グループ A の keyword で上書きされない限り、precise の keyword を意味します。 コンパイラーはデフォルトの浮動小数点環境を想定します。変更はできません。 |
次のいずれも指定されない場合、このオプションは、算術ライブラリー関数の結果における相対誤差の最大限許容値を定義します (max-error)。
-fimf-accuracy-bits (Linux* OS および Mac OS* X) または /Qimf-accuracy-bits (Windows* OS)
-fimf-max-error (Linux* OS および Mac OS* X) または /Qimf-max-error (Windows* OS)
-fimf-precision (Linux* OS および Mac OS* X) または /Qimf-precision (Windows* OS)
-[no-]fast-transcendentals (Linux* OS および Mac OS* X) または /Qfast-transcendentals[-] (Windows* OS)
このオプションは、中間結果計算のデフォルト (source) 精度の変更には使用できません。
IA-32 アーキテクチャーの Windows* および Linux* システムでは、コンパイラーは、デフォルトで SSE2 と SSE 命令を使用して、浮動小数点 (FP) 演算を実装します。このため、以前の x87 と比較する際、浮動小数点結果に差異が生じる可能性があります。
このオプションは、インテル® プロセッサーにのみ適用される追加の最適化を有効にします。
最適化に関する注意事項 |
---|
インテル® コンパイラー、関連ライブラリーおよび関連開発ツールには、インテル製マイクロプロセッサーおよび互換マイクロプロセッサーで利用可能な命令セット (SIMD 命令セットなど) 向けの最適化オプションが含まれているか、あるいはオプションを利用している可能性がありますが、両者では結果が異なります。また、インテル® コンパイラー用の特定のコンパイラー・オプション (インテル® マイクロアーキテクチャーに非固有のオプションを含む) は、インテル製マイクロプロセッサー向けに予約されています。これらのコンパイラー・オプションと関連する命令セットおよび特定のマイクロプロセッサーの詳細は、『インテル® コンパイラー・ユーザー・リファレンス・ガイド』の「コンパイラー・オプション」を参照してください。インテル® コンパイラー製品のライブラリー・ルーチンの多くは、互換マイクロプロセッサーよりもインテル製マイクロプロセッサーでより高度に最適化されます。インテル® コンパイラー製品のコンパイラーとライブラリーは、選択されたオプション、コード、およびその他の要因に基づいてインテル製マイクロプロセッサーおよび互換マイクロプロセッサー向けに最適化されますが、インテル製マイクロプロセッサーにおいてより優れたパフォーマンスが得られる傾向にあります。 インテル® コンパイラー、関連ライブラリーおよび関連開発ツールは、互換マイクロプロセッサー向けには、インテル製マイクロプロセッサー向けと同等レベルの最適化が行われない可能性があります。これには、インテル® ストリーミング SIMD 拡張命令 2 (インテル® SSE2)、インテル® ストリーミング SIMD 拡張命令 3 (インテル® SSE3)、ストリーミング SIMD 拡張命令 3 補足命令 (SSSE3) 命令セットに関連する最適化およびその他の最適化が含まれます。インテルでは、インテル製ではないマイクロプロセッサーに対して、最適化の提供、機能、効果を保証していません。本製品のマイクロプロセッサー固有の最適化は、インテル製マイクロプロセッサーでの使用を目的としています。 インテルでは、インテル® コンパイラーおよびライブラリーがインテル製マイクロプロセッサーおよび互換マイクロプロセッサーにおいて、優れたパフォーマンスを引き出すのに役立つ選択肢であると信じておりますが、お客様の要件に最適なコンパイラーを選択いただくよう、他のコンパイラーの評価を行うことを推奨しています。インテルでは、あらゆるコンパイラーやライブラリーで優れたパフォーマンスが引き出され、お客様のビジネスの成功のお役に立ちたいと願っております。お気づきの点がございましたら、お知らせください。 改訂 #20110307 |
なし
MSDN が提供する記事『Microsoft Visual C++ Floating-Point Optimization』では、このオプションの概念が説明されています。
© 1996-2011 Intel Corporation. 無断での引用、転載を禁じます。