对 n > 1 的椭圆 PDE 进行并行化 FEM

计算科学 有限元 并行计算
2021-12-23 05:21:29

对于一个小小的个人项目,我又开始学习我的 FEM 技能了。我在大学里学到了很多关于这个理论的知识,我能够针对特定问题实现一个简单的 FEM 求解器,但我对不同的并行化可能性感到好奇,因为我们从未深入探讨过这些问题。

为了简单起见,让我们关注泊松方程,在 n > 1 的一些“好”域中。据我所见,可以

  • 并行化刚度矩阵的组装。对于较大的问题,这需要相当长的时间,并且可以很容易地并行化。
  • 并行化线性求解器。在这里,有很多可能性可以为基于 CG、多重网格或基于 Krylov 的方法的稀疏系统构建特定的求解器。也有可能,但有点难。
  • 域分解。如果我正确理解了该主题,则可以解决该领域的某些子领域并将其解决方案划分为多个处理器。

我不是该主题的研究人员,但希望对该主题有更深入的了解——主要不是通过使用一些可用的库(我非常了解 FEniCS 等人),而是手动编写第一个简单的并行化示例。例如,我一直在阅读 DG FEM 应该在并行级别上更好地扩展,从一些幻灯片中我可以猜到原因——你对连续性的假设较小,所以你的元素的面不需要强耦合. 然而,我很难找到一些关于这个的相关例子的广泛讨论。

我也找不到关于最后一个主题的解释得很好的材料,我知道它存在,但我也找不到关于该主题的全面材料。大多数从离散化的公式跳转到“……然后我使用 METIS 加 xyz 来解决。这里有三个显示收敛的图表”。当然,尝试对在某处“似乎”做我认为的事情的代码进行逆向工程也很累。

问题

  • 从那些知道的人那里,我可以阅读关于该主题的已知书籍吗?

  • 有人能指出我正确的方向吗?

  • 或者在这些主题上有一些经验的人会对该主题进行简短的介绍吗?

1个回答

我认为您已经确定了一些主要问题。是的,有限元方法非常并行,因为您拥有所有这些通常可以并行处理的元素,但魔鬼在细节中。为了解决您的一些观点:

  1. 组装是一个有趣的点。对于有限差分方法,您几乎可以并行完美地组装整个事物。使用 FE,您会发现两个元素对其共享节点/边/面贡献积分的现象。如果两个元素由不同的处理器评估呢?然后你必须解决同时访问。
  2. 求解器。除了有限的收敛条件外,一个简单的 Jacobi 方法是完全并行的。诸如 CG 之类的方法收敛速度更快,而且在更多情况下,但它们包含内积,这是需要担心的,尤其是当您使用数十万个处理器/内核时。有大量关于这方面的文献。通常,首先要担心的问题是矩阵向量积。对于易于并行化的规则网格,对于不规则网格,编程变得令人头疼,尤其是在分布式内存中。
  3. 域分解。这既是“域划分”的隐喻术语,也是依赖于更好地调节接口系统的某种数学方法的名称。随意阅读泛函分析中的迹定理。所以让我来谈谈分区部分:是的,富有成效的并行方法基于解决子问题。例如,有 Block Jacobi 和 Additive Schwarz 方法。这两种方法通常用作 CG(或 BiCGstab 或 GMRES)方法中的预处理器。

我的 HPC 书中讨论了很多这些主题:http: //pages.tacc.utexas.edu/~eijkhout/istc/istc.html