我使用线性方程组的求解器库实现了一个数值算法。当我测试它时,我在不同的计算机上得到的结果略有不同。
我使用具有不完整 LU 预处理的 bicgstab 算法。在 2 台计算机上进行测试时,大约 20 次迭代后,结果(相对误差)开始相差 E-10。最后,一台计算机需要比另一台更多的迭代才能收敛到 E-7 的误差。
两台机器都使用 Intel Xeon E-5 处理器。编译器版本相同。操作系统是不同版本的 Linux。Boost 和 Intel MKL 的版本不一定相同。
我现在想知道的是:
- 在不同但相似的机器上运行这样的算法时,有轻微的数值差异是否正常。
- 如果不正常,可能导致差异的原因是什么?我应该在哪里以及如何开始进一步调查?