数值 PDE 中的高精度浮点运算

计算科学 参考请求 精确
2021-12-19 01:59:15

从非常不同的资源和与研究的谈话中,我有一个印象,即对数值偏微分方程的高精度计算的需求越来越大。在这里,高精度意味着比标准 64 位双精度更高的精度。

我想知道这个主题的最新状态。作为比较,数值偏微分方程中有专门针对例如多核方法、大规模并行化或 GPU 计算的社区。我想知道对于数值 PDE 中的高精度方法是否存在或正在发展类似的社区,并且我会对关于高精度的介绍性或调查论文特别感兴趣(这是问题的实际意义),这也提供了一个印象主题的实际相关性。

2个回答

连续 PDE 的离散化通常比有限精度产生更多的误差。我发现大约 90% 要求更高精度的人只是懒于问题表述,并试图使用糟糕的缩放、糟糕的离散化或糟糕的连续体建模来解决问题。剩下的 10% 可能有正当的病态系统,提高精度确实有意义。即使在那些情况下,我们也大多使用四精度作为调试工具(尤其是与使用有限差分 Frechet 导数的方法结合,并调查“虚假”数字零空间的原因)或局部用于非常敏感的操作,而不是在大规模生产。

GCC__float128从 4.6 版本开始提供,所以很容易尝试。(早期的实现通常更具侵入性且更不便携。)PETSc--with-precision=__float128从 3.2 版开始支持,因此只需重新编译即可。

在我们以 deal.II 项目 ( http://www.dealii.org/ )的形式提供 FEM 软件的 15 年中,我认为我们从来没有真正要求解决 PDE精度高于双精度。原因正如 Jed 在另一个答案中所建议的那样:离散 PDE 的误差远大于从双精度浮点运算中获得的 16 位精度。因此,您必须拥有非常精细的网格才能达到需要更高算术精度以影响整体误差的程度。

我认为实际上恰恰相反:人们正在考虑(并致力于)当您使用单精度存储矩阵或预条件子的元素时会发生什么。一般来说,这不会显着降低它们的准确性,但它会将性能提高大约两倍,因为您只需将一半的数据从内存移动到处理器中。

所以,我的感觉是四倍精度(甚至更高)可能与 ODE 求解器社区相关,但与 PDE 社区无关。