0

如果我在两种不同类型的 CPU 上运行完全相同的浮点计算序列(例如在 C 程序中),它们都实现了IEEE 浮点算术标准(IEEE 754),那么期望两个 CPU 都返回相同的浮点数?

我问这个是因为不同的 CPU 包含具有不同中间大小的不同浮点单元(例如某些 x86 架构中的 80 位 FPU),我需要确保跨多个不同 CPU 架构运行的模拟是确定性的,即在相同的情况下产生相同的结果无论架构如何,都是起点。

4

1 回答 1

1

C 标准没有充分指定浮点语义来保证不同 C 实现之间的可重复性。(如果 C 实现采用 Annex F 会有所帮助,但仍然不够,尤其是使用数学库中的各种超越函数时。)

获得可重现结果的技术包括限制对 C 实现的可移植性,这些实现提供超出 C 标准的保证,包括使用代码而不是使用本机库的必要数学库例程,用汇编语言编写,以及限制使用的语言特性。

于 2013-06-12T19:13:41.807 回答