【发布时间】:2011-07-30 13:39:39
【问题描述】:
MXCSR 等内容的最佳设置是什么?哪种舍入模式最快?在什么处理器上?启用信号 NaN 是否会更快,以便在计算导致 nan 时通知我,或者这是否会导致非 NaN 计算速度变慢?
总之,您如何从紧密的内部 SSE 循环中获得最大速度?
也欢迎任何相关的 x87 浮点速度建议。
【问题讨论】:
标签: optimization assembly x86 sse x87
MXCSR 等内容的最佳设置是什么?哪种舍入模式最快?在什么处理器上?启用信号 NaN 是否会更快,以便在计算导致 nan 时通知我,或者这是否会导致非 NaN 计算速度变慢?
总之,您如何从紧密的内部 SSE 循环中获得最大速度?
也欢迎任何相关的 x87 浮点速度建议。
【问题讨论】:
标签: optimization assembly x86 sse x87
使用清零和非正规为零模式:它们旨在以您可能不会注意到的精度成本提高速度。
我怀疑不同的舍入模式有不同的成本。从理论上讲,四舍五入是最难的,但在硬件实现中,我猜想在相同数量的周期内执行此操作的额外晶体管可能无论如何都存在,只是未用于定向舍入。
信号 NaN 不会减慢非 NaN 计算。
在计算之前只设置一次控制标志字:在计算期间更改它将使您节省的任何费用都相形见绌。
【讨论】:
如果您的计算可能会遇到非规范化,并且非常小的值的准确性对您的计算并不重要,那么请务必打开 FZ 和 DAZ(一次,在您的计算开始时;不要触摸 MXCSR超过必要)。如果您的计算不涉及非规范值,它们不会产生任何影响,但如果涉及,则差异可能非常显着。
其他 MXCSR 位对性能没有任何影响。
唯一与 x87 相关的性能建议是:不要使用 x87 单元。尽可能在 SSE 中进行计算。
【讨论】: