首页 > 解决方案 > 浮点非确定性的原因?包括 NumPy?

问题描述

IEEE 浮点运算是确定性的,但请参阅如何使浮点计算成为确定性?对于整体浮点计算可能是不确定的一种方式:

...并行计算在执行浮点计算的顺序方面是不确定的,这可能导致跨运行的结果不精确。

两部分问题:

假设:

另请参阅: 哈希值在 Python 3 中被加盐,并且每个 dict 保留插入顺序。这可能会随着运行的不同而改变操作的顺序。[我在 Python 2.7.15 中解决这个问题。]

标签: numpyblasintel-mklatlasnon-deterministic

解决方案


我发现我遇到的大多数(不是全部)非确定性问题似乎在 OpenBLAS 0.3.5 的代码中得到了修复。

OpenBLAS 早期版本中的一堆线程问题已在 0.3.4 版本中修复,但该版本有一个 macOS 兼容性错误,该错误已在 0.3.5 版本的代码中修复。苹果的 Accelerate 框架版本 1.1 和英特尔的 MKL 也会出现这些错误mkl==2019.0

了解如何安装 OpenBLAS 并在其上编译 NumPy 和 SciPy

也许我遇到的其余问题是由于链接到 Accelerate 的其他库引起的?

注意:我仍然愿意接受这个问题的更多答案。


推荐阅读