インテル® Fortran コンパイラー 19.1 デベロッパー・ガイドおよびリファレンス
サブノーマル結果を 0 にフラッシュします。
Linux* および macOS*: | -ftz -no-ftz |
Windows*: | /Qftz /Qftz- |
なし
-ftz または /Qftz |
サブノーマル結果は 0 にフラッシュされます。 最適化オプション O レベル (O0 を除く) を指定すると、[Q]ftz が設定されます。 [Q]fpe 0 オプションは、[Q]ftz を設定します。 |
このオプションは、アプリケーションが漸次アンダーフロー・モードの場合に、サブノーマル結果をゼロにフラッシュします。サブノーマル値がアプリケーションの動作に影響を与えない場合、アプリケーションのパフォーマンスが向上する場合があります。
[Q]ftz オプションは、コンパイル時の最適化には影響しません。
[Q]ftz オプションは、FTZ ハードウェア・フラグと DAZ ハードウェア・フラグをセットまたはリセットします。FTZ をオンにすると、浮動小数点演算からサブノーマル結果は、値 0 にセットされます。FTZ がオフの場合、サブノーマル結果はそのままになります。DAZ をオンにすると、浮動小数点への入力として使用されるサブノーマル値は、ゼロとして扱われます。DAZ がオフの場合、サブノーマルの命令入力はそのままになります。インテル® 64 アーキテクチャー・ベースのシステムでは、FTZ と DAZ の両方を利用できます。FTZ および DAZ は、すべての IA-32 アーキテクチャーでサポートされているわけではありません。
IA-32 アーキテクチャー・ベースのシステムでは、[Q]ftz オプションがインテル® SSE を有効にするオプション ([Q]xSSE2 オプションなど) とともに使用されると、コンパイラーはメインルーチンにコードを挿入し、FTZ および DAZ をセットします。このようなオプションなしに [Q]ftz を使用すると、コンパイラーは、ランタイム・プロセッサー・チェックに基づいて条件付きで FTZ/DAZ をセットするコードを挿入します。
-no-ftz (Linux* および macOS*) または /Qftz- (Windows*) オプションを指定すると、コンパイラーは FTZ/DAZ をセットするコードを挿入しません。
[Q]ftz オプションは、メインプログラムをコンパイルするときにのみ効果があります。このオプションは、プロセスに FTZ/DAZ モードをセットします。初期スレッドおよびそのプロセスによってその後に作成されるあらゆるスレッドは、FTZ/DAZ モードで動作します。
このオプションがプログラムの数値動作で好ましくない結果を出力した場合、コマンドラインで -no-ftz または /Qftz- を指定することで、O3 最適化の利点を活用したままで、FTZ/DAZ モードをオフにできます。
[Q]ftz はパフォーマンス・オプションです。このオプションを設定しても、プログラム中のすべてのサブノーマル値がゼロにフラッシュされるとは限りません。ランタイム時に生成されるサブノーマル値をゼロにフラッシュするだけです。
Visual Studio*: IA-32 アーキテクチャー: [Floating point (浮動小数点)] > [Flush Subnormal Results to Zero (サブノーマル結果のフラッシュ)]
インテル® 64 アーキテクチャー: なし
Eclipse*: なし
Xcode*: [Floating point (浮動小数点)] > [Flush Subnormal Results to Zero (サブノーマル結果のフラッシュ)]
なし