sdot
単一の正確な浮動小数点ドット操作についてBLASインターフェースをテストしました。Intel MKLライブラリの結果は、 http: //netlib.org/blas/で提供されているBLASFortranコードの結果とは少し異なることがわかりました。MKLのものはより正確に見えます。
MKLによる最適化はあるのだろうか?または、MKLはそれをより正確にするためにどのように実装しますか?
sdot
単一の正確な浮動小数点ドット操作についてBLASインターフェースをテストしました。Intel MKLライブラリの結果は、 http: //netlib.org/blas/で提供されているBLASFortranコードの結果とは少し異なることがわかりました。MKLのものはより正確に見えます。
MKLによる最適化はあるのだろうか?または、MKLはそれをより正確にするためにどのように実装しますか?
MKLは、特定のCPUベンダーによって自社製品用に特別に作成されているため、リファレンス実装よりも、基盤となるマシンに関する知識を少し多く使用できると思います。
最初に考えられるのは、最適化されたアセンブリを使用し、各反復で32ビットに切り捨てることなく、常にx8780ビット浮動小数点スタックの現在の合計を維持することです。または、SSE(2)を使用して、合計を倍精度で計算する場合もあります(これは、パフォーマンスの観点から、加算と乗算に大きな違いはありません)。あるいは、まったく異なる計算を使用したり、黒魔術師がこれまでにトリックしたものを使用したりするかもしれません。
重要なのは、これらのルーチンは、基本的なリファレンス実装よりも特定のハードウェア向けにはるかに最適化されているということですが、それらの実装を確認しないと、どのように言うこともできません。上記のアイデアは単純なアプローチです。