5

MXCSRのようなものに最適な設定は何ですか? どの丸めモードが最速ですか? どのプロセッサで?シグナル NaN を有効にして、計算結果が nan になったときに通知を受け取る方が高速ですか?それとも、非 NaN 計算で速度が低下しますか?

要約すると、タイトな内部 SSE ループから最大の速度を得るにはどうすればよいでしょうか?

関連する x87 浮動小数点速度のアドバイスも歓迎します。

4

2 に答える 2

6

Flush-to-zero モードと Denormals-are-zero モードを使用してください。これらは、おそらく気付かない精度のコストで速度を上げることを目的としています。

丸めモードごとにコストが異なるとは思えません。理論的には最も近い値への丸めは最も困難ですが、ハードウェアの実装では、同じサイクル数でそれを行うための追加のトランジスタがおそらくそこにあり、有向丸めには使用されていないと思います。

NaN のシグナリングは、非 NaN 計算の速度を低下させません。

制御フラグ ワードは、計算の前に 1 回だけ設定してください。計算中に変更すると、達成した節約が小さくなります。

于 2011-07-30T16:52:18.047 に答える
3

計算で非正規化が発生する可能性が高く、非常に小さな値の精度が計算にとって重要でない場合は、必ず FZ と DAZ をオンにしてください (計算の開始時に一度、必要以上に MXCSR に触れないでください)。 )。計算に非正規化値が含まれていない場合は違いはありませんが、含まれている場合、その違いは非常に大きくなる可能性があります。

他の MXCSR ビットは、パフォーマンスにまったく影響しません。

x87 関連のパフォーマンスに関する唯一のアドバイスは、x87 ユニットを使用しないことです。可能な限り、代わりに SSE で計算を行ってください。

于 2011-07-30T17:50:50.917 に答える