On this page |
概要 ¶
浮動小数点マッチを使用したエフェクトの生成は、高速でありながら、実行する度にまったく同じ結果(再現性)が得られるというメリットがあります。
再現可能な結果に影響を与える主な要因は、ほとんどの浮動小数点演算の非結合性ですが、色々なランタイム、選択可能な最適化コードパス、非決定論的なスレッド化と並列処理、配列の整列、ハードウェア浮動小数点制御設定どれもがそれに影響を与える要因になります。
いくつかのノードは、IntelのMath Kernel Libraryを使用して、プロセッサまたはSSEやAVXといったプロセッサの拡張を利用して一般的な浮動小数点演算の処理速度を向上させています。
Intelプロセッサやその互換プロセッサでは、MKL_CBWR
環境変数を使用することで、そのライブラリによる速度と再現可能な結果のバランスを制御することができます。
詳細は、IntelのMKLと再現性に関するホワイトペーパー(PDF)を参照してください。
MKL_CBWR
環境変数の設定
¶
-
この環境変数で指定可能な値は、最も遅い/互換性が高いものから最も高速/互換性が低いまであり、
COMPATIBLE
、SSE2
、SSE4_2
、AVX
、AUTO
です。 -
この環境変数に
AUTO
を設定すると、現在のコンピュータで利用可能な最も最適な命令が使用されます。 -
非Intel x86プロセッサ(Ryzen)に関しては、この環境変数には
AUTO
モードまたはCOMPATIBLE
モードのどれかのみ設定可能です。 -
Intelプロセッサに関しては、この環境変数には、特定のISA拡張レベルが選択されるように設定することができます。これによって、プロセッサが異なるコンピュータグループが共通する同じ拡張セットを使用するようにセットアップすることができるので、マシン間での再現性を上げることができます。
Intelのライブラリドキュメント内のコードブランチの指定を参照してください。
-
この環境変数の値の後に
,STRICT
を追加することで、速度よりも再現性を優先させることができます。これは、一部(すべてではなく)のライブラリ関数を、遅い代わりに再現性が高い実装に切り替えます。Intelのライブラリドキュメント内の再現性の条件を参照してください。
See also |