非对称压力-速度耦合系统预处理器的选择

计算科学 线性求解器 稀疏矩阵 预处理 克雷洛夫法
2021-11-28 16:12:17

我正在使用压力-速度耦合系统。这意味着我们只能求解一个耦合系统,而不是用分离的方法求解 4 个不同的线性系统(1 个用于压力,3 个用于 Ux、Uy、Uz)。假设简单的 3D 矩形网格生成的矩阵似乎是 7 对角线,每个元素是箭头形式的 4x4 块

(a1100a140a220a2400a33a34a41a42a43a44)

我想为它制作高效的基于 GPU 的 BiCGStab 求解器,但似乎我在预处理方面遇到了问题。在 CPU BiCGStab + ILU 或 AMG 上工作得很好。但在 GPU 上,我不能使用 ILU 系列,因为它们不适合。我已经尝试过 AINV 预处理器,但它要么太慢、太大,要么不够健壮。对角线预处理器根本无效。现在我正在考虑多项式,尽管我希望它与 AINV 有类似的问题。

是否有任何其他选项可能适用于我的方法,或者 GPU BiCGStab 的整个想法首先是一个死胡同?

1个回答

ILU 和对角缩放都不是“真实”问题的有效预处理器,即,如果您让离散问题的大小变大。换句话说,如果您坚持使用这些预处理器对 GPU 与 CPU 进行计时,那么您只是在考虑并不真正感兴趣的学术问题——如果问题足够小以至于使用这些预处理器有意义,那么问题就是如此小到没有人真正关心实践中的运行时间。

如果您确实关心运行时间(因为运行时间是进行实际模拟的障碍,而不仅仅是因为您想在没有实际意义的情况下进行学术时序研究),那么您需要使用对大问题有意义的预处理器——并且这些通常基于潜在问题的物理结构,而不仅仅是矩阵值。一个很好的例子是 Silvester 和 Wathen 的例子。我们在 deal.II 教程的 step-22 中实现并讨论了它的使用(参见https://www.dealii.org/developer/doxygen/deal.II/step_22.html);请特别注意“结果”部分末尾的“扩展的可能性”部分中的讨论。