标量拉普拉斯系统的预条件子

计算科学 参考请求 预处理
2021-12-07 17:06:13

假设我有一个大型(大约 10^6 个未知数)3D 标量 Poisson 系统,我想对其进行预处理。边界条件已经过处理,因此系统是 SPD。IE,

(κ(x)u(x))=f

矩阵往往具有以下结构(这是一个非常小的问题,较大的问题确实是稀疏的): 小问题的稀疏模式

是否就如何对此类系统进行预处理(理想情况下以可以并行实施的方式)达成共识?

线性系统是 SPD,因此选择 PCG 方案似乎很自然,但我一直未能就如何选择预条件子达成共识,因为许多论文处理的是更复杂的 Stokes-like 系统。

2个回答

预处理和迭代求解器很酷,但是您是否尝试使用某种稀疏直接求解器来解决您的问题?如果没有,请先尝试。

针对这类问题的最先进的预处理技术是多重网格技术在许多情况下,多重网格允许您在时间内解决您的(椭圆)问题。O(n)

  1. 如果您不想更深入,一个好的开始可能是代数多重网格。您可以将其作为独立求解器和 CG 预处理器进行尝试。例如,它在PETSc中实现。

  2. 如果您确实想更深入,那么本文就是一个好的开始它有一个很好的示例集合,揭示了多重网格的行为,具体取决于问题的几何形状、参数等等。fκ

使用 SPD 矩阵,调用它A,PCG是一个好方法。

预处理器的种类很大程度上取决于您所拥有的矩阵结构(读取矩阵的种类),并且没有唯一的答案。

选择预处理器的基本标准,P, 不止一个。考虑到 PCG,最重要的三个是:

  • AP1I
  • P造价便宜
  • 计算出来的P1rk+1便宜

一般来说,对于像拉普拉斯这样的问题,您可以尝试以下两个。

对角线D1对角线预处理器很容易实现且应用成本低,但效率不高。矩阵包含的诗句A对角线项。如果与矩阵一起使用会更好A 对角占优,但是当额外的对角项很大时,您会发现问题。

不完整的乔列斯基L~LT~怀特ASPD 定义为Cholesky 分解这个预处理器的想法是使用分解但保留稀疏模式A,即您仅将分解计算的术语用于A不同于零。这种不完全分解的存在取决于结构A,例如,如果A是一个M矩阵没问题。如果您重新排序节点,这种预处理器可以改进A所以小胡子A更短(在这里你可以看到一个例子,它的结构A很重要)。此预处理适用于 forward 和 back 方法(至于LU分解)

当您在这里谈论并行执行时,了解硬件类型很重要。无论如何,您必须并行化预处理器应用程序,例如D1你并行化vidi整个向量的操作。

既然你提到了斯托克斯的问题,我添加了一些关于并行的行。如果您的目标是使用重度并行化,因为 gpu 很重要,那么使用预处理器和 gpu 的简单应用程序很重要,如乘积矩阵向量稀疏 (SpMV)。在 Li 和 Saad [1] 的文章中,对 gpu 的各种预处理器进行了比较。

在 gpu多项式预处理器的情况下是好的。我个人使用这种对其他传统 gpu 预处理器具有良好性能的方法,请参阅指向 CUSP 组的此链接,其中我提供了一些详细信息、参考,以及带有一些结果测试的代码。这是一个最小二乘预条件子,它使用 Chebyshev 多项式,因此不涉及显式求积公式,详细信息请参见 J. Erhel、F. Guyomarc 和 Y. Saad [2] 的文章。


[1] 李瑞鹏和优素福萨阿德。Gpu 加速的预处理迭代线性求解器。超级计算杂志,63(2):443–466,2013。

[2] J. Erhel、F. Guyomarc 和 Y. Saad,用于病态线性系统的最小二乘多项式滤波器,Tech。报告 umsi-2001-32,明尼苏达大学明尼苏达超级计算机研究所,明尼苏达州明尼阿波利斯,2001 年。