科学计算需要四倍精度吗?

计算科学 浮点 精确 计算机算术
2021-12-14 17:04:04

即使大多数 CPU 不直接支持四精度,但许多编译器(GNU、英特尔)都支持它们。还有一些软件包允许以四精度编译,例如 PETSc。但是真的有这个必要吗?几天前我问过关于有限算术中的 Krylov 子空间方法,请参阅浮点算术中的 Krylov 子空间迭代方法我阅读了上述论文,在我看来,这些方法在浮点运算中得到了很好的理解。如果矩阵条件良好,迭代求解器是否会受益于使用更高的精度?即,迭代计数器是否以更高的精度下降?是否有,可能有关于这个主题的一些研究?科学计算中是否存在双精度不足以进行公式化和离散化的问题?

3个回答

我认为这实际上是这个问题的副本: Higherprecision floating-point algorithm in numeric PDE

正如我在那个问题上所说,四精度肯定没有广泛用于科学计算。此外,我不认为在任何大量应用程序中实际上都需要四倍精度。

这不能回答您的问题,但是有些人 - 对大规模模拟的可重复性和可靠性感兴趣,例如气候模拟 - 他们研究双精度浮点算法的实现细节。

已经观察到行为差异,例如,当 CGM 中的标量积不是通过简单求和而是通过更复杂的算法作为补偿求和或按升序求和计算时。这与许多内核上的并行求和特别相关,因为求和(例如,在 MPI 中)通常是黑盒的。

在著名的科学论文搜索引擎中进行类似 ["conjugate gradient" "compensated summation"] 的搜索将给出一些(!)关于此的出版物。据我记得,迭代次数可能会略有不同,甚至在提高数值精度时可能会增加。它可能与您当地的四核工作站不太相关。

高精度通常用于生成精确到双精度的系数。例如,如果您尝试计算 Butcher 画面,您可能会以四元组的形式进行计算,以便双精度代码中的每一位都是正确的。在计算 Gauss-Kronrod 正交节点或 DSP 中的滤波器系数时也会发生类似的情况。

这对库编写者来说比对应用程序开发者更重要。