数値再現性#
同じ入力で BLAS ルーチンを実行すると、実行ごとに結果が若干異なることがあります。これは基本的に、浮動小数点演算の精度が限られていることに起因します。特に、浮動小数点加算は結合的でないため、合計
\[a_0 + a_1 + \cdots + a_n\]
の結果は演算の順序に依存します。この非結合的な動作のため、oneMKL BLAS ルーチンで使用される一部のアルゴリズムでは、内部操作の順序によって若干異なる結果が生成される場合があります。
場合によっては、決定論的な (実行ごとにビット単位の再現性のある) 結果を保証することが望ましいことがあります。oneMKL は、特定の状況下でビット単位の再現性を保証する条件付き数値再現性 (CNR) モードをサポートしています。CNR モードは、すべての BLAS DPC++ API が CPU で、レベル 3 ルーチンとレベル 3 拡張が GPU で使用できます。
CNR モードの詳細については、oneMKL デベロッパー・ガイド (Windows*、Linux*) を参照してください。