非结构化网格上稀疏矩阵的并行求解器

计算科学 并行计算 稀疏矩阵 非结构化网格
2021-12-15 18:44:53

我正在尝试解决非结构化网格上的欧拉方程。因此,问题归结为解决稀疏矩阵的Ax=b位置。A知道我以串行方式使用 Gauss-Seidel (GS) 但是,我需要一个并行代码。由于网格是非结构化的,我不能使用红黑 GS。这种情况有没有快速的并行求解器?

3个回答

我建议使用 PETSc,它具有 GMRES、bi Conjugate Gradient 等并行求解器。还可以使用多个预处理器。此外,还可能有 SNES 非线性求解器的选项。至于哪一组求解器+预处理器组合效果最好,它可能是特定于问题的。PETSc 将允许您轻松地在它们之间切换。

您可能还希望考虑使用 FEniCS+PETSc。使用 FEniCS,您可以指定方程的弱形式,它会计算出如何为您组装矩阵。FEniCS 与 PETSc 求解器连接以进行计算。事实上,对“petsc euler equations”的简单谷歌搜索会产生以下链接:http ://www.csc.kth.se/~jjan/transfer/reportMHAF.pdf 。在附录中,您可以看到 FEniCS 源代码来执行线性化欧拉方程(以及不可压缩的 Navier Stokes 方程)。

我为稀疏矩阵使用了两个非常好的并行库:HypreMUMPS第一个具有非常好的 AMG 求解器和几种迭代方法,它可以与共享 (OpenMP) 或分布式内存 (MPI) 并行运行。第二个实现直接LU分解。

如何求解稀疏线性系统的问题在计算科学中无处不在。一般来说,方法越好,实施起来就越困难和复杂。我怀疑 AMG(代数多重网格)将是解决您描述的问题的最佳方法,因为多重网格方法是目前解决线性系统最快的方法之一。但是,如果您自己实现它,它将比您当前的 GS 困难得多(尤其是并行)。如果您只是在寻找一个包裹,那么我会使用基里尔的答案。至少我会按照上面的建议甚至 SOR 研究 GMRES 或 BiCGStab。您绝对可以找到比 GS 更快的方法。