5

像MXCSR这样的东西的最佳设置是什么?哪种舍入模式最快?在什么处理器上?启用信号 NaN 是否更快,以便我在计算导致 nan 时得到通知,或者这是否会导致非 NaN 计算速度变慢?

总之,您如何从紧密的内部 SSE 循环中获得最大速度?

也欢迎任何相关的 x87 浮点速度建议。

4

2 回答 2

6

使用清零和非正规为零模式:它们旨在以您可能不会注意到的精度成本提高速度。

我怀疑不同的舍入模式有不同的成本。从理论上讲,四舍五入是最难的,但在硬件实现中,我猜想在相同数量的周期内完成它的额外晶体管可能无论如何都存在,并且只是未用于定向舍入。

信号 NaN 不会减慢非 NaN 计算。

在计算之前只设置一次控制标志字:在计算期间更改它将使您获得的任何节省相形见绌。

于 2011-07-30T16:52:18.047 回答
3

如果您的计算可能会遇到非规范化,并且非常小的值的准确性对您的计算并不重要,那么请务必打开 FZ 和 DAZ(一次,在您的计算开始时;不要过多地触摸 MXCSR )。如果您的计算不涉及非规范值,它们不会有任何区别,但如果涉及,则差异可能非常显着。

其他 MXCSR 位对性能没有任何影响。

唯一与 x87 相关的性能建议是:不要使用 x87 单元。尽可能在 SSE 中进行计算。

于 2011-07-30T17:50:50.917 回答