インテル® MKL 11.3 ユーザーズガイド

非正規化数の演算

IEEE 754-2008 規格「An IEEE Standard for Binary Floating-Point Arithmetic」では、浮動小数点形式で最も小さな正規化数よりも小さな非ゼロの数を、denormal (または subnormal) 数として定義しています。本書では、どちらも非正規化数として訳しています。 非正規化オペランドと結果は、通常ハードウェアで直接処理されるのではなく、ソフトウェアで処理されるため、非正規化数の浮動小数点演算は正規化オペランドよりも遅くなります。このソフトウェア処理により、インテル® MKL 関数で非正規化数を使用する場合、正規化された浮動小数点数を使用する場合よりも実行が遅くなります。

このパフォーマンス問題に対応する方法として、MXCSR 浮動小数点制御レジスターの適切なビット・フィールドを設定する方法があります。FTZ は非正規化数をゼロにフラッシュし、DAZ はメモリーからロードされた非正規化数をゼロに置換します。コンパイラーで FTZ および DAZ を制御するオプションが用意されているかどうかは、コンパイラーのドキュメントを参照してください。これらのコンパイラー・オプションを使用すると精度に影響する可能性があることに注意してください。