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


9

我从不同的资源和研究中得到的印象是,对数值偏微分方程的高精度计算的需求不断增长。在这里,高精度意味着比标准的64位双精度更高的精度。

我想知道这个话题的最新状态。通过比较的方式,数字PDE中存在一些共性,它们专门针对多核方法,大规模并行化或GPU计算。我想知道在数值PDE中是否存在类似社区或正在使用高精度方法发展这种方法,我会特别感兴趣(这是问题的实质)在介绍性或调查性高精度论文中,这也给人留下了深刻的印象。主题的实际相关性。

Answers:


16

连续PDE的离散化通常会比有限精度带来更多的误差。我发现大约90%的要求更高精确度的人只是懒于解决问题,并尝试使用不良的缩放比例,不良的离散化或不良的连续性建模来解决问题。剩下的10%可能拥有病情合理的系统,对于这些系统而言,提高精度确实是有意义的。即使在那种情况下,我们也大多使用四精度作为调试工具(特别是与使用有限差分Frechet导数的方法结合使用,并调查“虚假”数字零空间的原因)或局部地针对非常敏感的操作而不是在大规模生产。

GCC __float128自4.6版开始提供,因此非常容易尝试。(较早的实现通常更具侵入性和便携性。)--with-precision=__float128自3.2版以来,PETSc就已受支持,因此只需重新编译即可。


对。而且Fortran具有real(dp),可以将dp = 16(对于gfortran)设置为四精度,因此也很容易尝试。
昂德里杰·塞蒂克

9

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

我认为事实恰恰相反:例如,当您使用单精度存储矩阵或前置条件元素时,人们会思考(并研究)会发生什么。通常,这不会显着降低它们的准确性,但是可以将性能提高大约两倍,因为从内存到处理器的数据量只需一半。

因此,我的感觉是四精度(或更高)可能与ODE求解器社区有关,而与PDE社区无关。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.