是所有英特尔/AMD CPU的浮点数学确定性?

问题描述 投票:0回答:1

)?在所有类型的X86_64cpus上,二进制是否总是为每个指令(addps,fmadd ...或其他SSE/AVX浮动说明)产生确定结果? 如果没有,任何指令/拱形示例? 它取决于您的二进制可执行文件。 软件开发人员和/或编译器可以选择根据实际CPU和/或OS(运行时CPU调度)的指令集支持使用不同的代码路径。 X86-64仅授权SSE和SSE2支持。现代CPU可能会支持AVX2/FMA和AVX-512等指导集。这些指令集可能有助于提高浮点操作的性能和/或准确性。但是,例如,通过单独的

vfmadd132ss
x86 floating-point x86-64 precision sse
1个回答
0
投票
add

指令(

mul

vmulss
)的结果,使用单个指令计算A*B+C的结果不一定是相同的。 。 请注意,库呼叫也可能情况(意外)运行时CPU调度。
在AMD和Intel处理器中,诸如近似平方根的更多说明不相同。
基本的浮点指令,例如
vaddss
vrsqrtss
add

sub

mul

div

是确定性的。对于相同的代码路径,结果应相同。

	
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.