Mono.Simd或Microsoft.Bcl.Simd可以为C#提供确定性浮点运算吗?

时间:2015-02-14 23:08:31

标签: c# floating-point deterministic

C#cannot be coerced into deterministic floating point arithmetic,设计师似乎认为性能开销太大了。

我试图通过仅使用SIMD扩展来评估是否有可能实现确定性浮点运算。 SSE appears to be确定性,within reason

有什么理由不行吗?

1 个答案:

答案 0 :(得分:0)

你的问题的答案是肯定的 - 你需要SSE2,而不仅仅是SSE,才能做到这一点;事实上,Windows和Linux上的x86-64 ABI默认使用SSE2进行浮点运算,这就是.NET 64bit JIT也使用SSE2 FP的原因。

原始SSE的问题(如Pentium III所示)是它只支持单精度,这不足以让你成为一个成熟的浮点环境。尝试在不支持SSE2的处理器上运行使用SSE2的代码应触发非法指令陷阱。