一阶微分方程的最佳并行数值求解器

计算科学 并行计算 模拟 龙格库塔 量子力学
2021-11-29 17:07:04

我有一个由 256 个微分方程组成的系统,我想用数值求解。该系统表示刘维尔方程,它是具有复数的一阶线性微分方程。

并行求解这个方程的最佳方法是什么?请指教。

我是一名物理学家,所以我熟悉基本的求解器(Euler 和 Runge-Kutta),它们基本上是按定义顺序排列的。

4个回答

256 个方程是一个相对较小的数字。所有常见的积分器,例如 Matlab、Maple 或 Mathematica 中包含的积分器,对于这种大小的方程应该没有真正的问题,并且应该能够在您自己实现算法所需的一小部分时间内返回答案,因为他们使用复杂的显式/隐式和自适应时间步进方法。

在大多数情况下,ODE 求解器是一个已解决的问题。不要浪费你的时间自己去实现——只要使用别人在你之前做过的事情。

我不同意你关于 Euler 和 Runge-Kutta 必须是顺序的说法。我知道您这么说是因为您不能跨时间步(或在 RK4 之类的情况下跨内部时间步)并行化,但是只要您在一个时间步内这样做,两者都可以并行。您只需并行评估 256 个变量的导数。

根据您的系统特性,RK 方法可能最适合您,或者可能是一个简单的刚性求解器。我个人不熟悉并行实现,所以我会将建议留给比我更有经验的人。除非您的系统非常特别,否则您将使用您很可能熟悉的算法。

从评论中,听起来您的问题很棘手,使用隐式积分器比尝试并行化更有帮助。但是如果有人来这里寻找有关并行时间积分的信息,您可以在我的这个预印本中找到一些简单的并行外推和延迟校正方法的讨论。这不是一个新话题。您可以从那里的参考书目开始向后追溯参考文献。有关更复杂的方法,请参阅此问题的答案。

时间上的并行性是可能的,但只有在您需要高精度时才有用(相对于便宜的稳定积分器会给您带来什么)。

您可能想查看超现实方法,即一种实时并行方法。加速可能会有巨大的收益,但稳定性存在一些问题。如果您不熟悉该方法,Lions, Maday & Turinici (2001) 的论文将是一个很好的起点。