标量拉普拉斯系统的预条件子
使用 SPD 矩阵,调用它,PCG是一个好方法。
预处理器的种类很大程度上取决于您所拥有的矩阵结构(读取矩阵的种类),并且没有唯一的答案。
选择预处理器的基本标准,, 不止一个。考虑到 PCG,最重要的三个是:
- 造价便宜
- 计算出来的便宜
一般来说,对于像拉普拉斯这样的问题,您可以尝试以下两个。
对角线对角线预处理器很容易实现且应用成本低,但效率不高。矩阵包含的诗句对角线项。如果与矩阵一起使用会更好 对角占优,但是当额外的对角项很大时,您会发现问题。
不完整的乔列斯基怀特SPD 定义为Cholesky 分解。这个预处理器的想法是使用分解但保留稀疏模式,即您仅将分解计算的术语用于不同于零。这种不完全分解的存在取决于结构,例如,如果是一个矩阵没问题。如果您重新排序节点,这种预处理器可以改进所以小胡子更短(在这里你可以看到一个例子,它的结构很重要)。此预处理适用于 forward 和 back 方法(至于分解)
当您在这里谈论并行执行时,了解硬件类型很重要。无论如何,您必须并行化预处理器应用程序,例如你并行化整个向量的操作。
既然你提到了斯托克斯的问题,我添加了一些关于并行的行。如果您的目标是使用重度并行化,因为 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 年。
