用于串行数值计算的 PetSc 与日晷?

计算科学 有限差分 并行计算 宠物 克雷洛夫法
2021-12-12 02:09:34

我目前正在研究一个变成非线性边界值问题的物理问题。我需要一个高效的数值求解器,我可以在配备 i5 双核 CPU 的笔记本电脑上运行它。我正在使用四阶有限差分导数在 N x N x N 立方网格上离散化我的 15 个方程。我对使用 Newton-Krylov 方法很感兴趣,因为生成的雅可比行列式是稀疏的。我的最终目标是在一个 128 x 128 x 128 的立方体上求解这个系统,这意味着我将为相同数量的变量求解近 1500 万个方程。我已经在学习 SUNDIALS 包,但我最近发现了 PETSc 库,许多人似乎都在称赞它的代码质量和效率。PETSc 似乎也有大量 Krylov 方法所需的预处理器。

所以我想问两个包如何比较串行计算,因为我想在我的笔记本电脑上运行求解器(至少为了在更粗略的网格上进行测试)。我最终可能会搬到我大学的 HPC 集群,以在更精细的网格上解决系统问题。此外,我的意图是长期使用这些软件包。

我是高性能计算的新手,请原谅我的无知。我真的很感激任何建议。

PS-我正在研究的方程来自非阿贝尔规范理论,并且是张量形式。单个分量 (15) 方程又长又复杂……所以我实际上使用数学计算这些方程,然后将它们离散化。这些方程类似于麦克斯韦方程,但在场上更复杂和非线性。我不知道这对这里有多大帮助,但方程式如下

(DμFμν)a=gϵabc(Dνϕ)bϕc

Dμ(Dμϕ)a=λ(ϕbϕbv2)ϕa

这里隐含了爱因斯坦的求和约定。下标从 0 到 3。下标从 1 到代表规范协变导数,代表希格斯场和规范场强。您可以查看这篇文章以获取更多详细信息......第 9 页。http://www-thphys.physics.ox.ac.uk/people/MaximeGabella/higgs.pdfμνaDϕF

2个回答

一般来说,您可以使用 PETSc 做更多事情。

SUNDIALS 是 ODE 求解器(在 CVODE、Adams-Bashforth 和 BDF 方法中;在 ARKODE、ARKIMEX 方法中)和 DAE 求解器(IDAS 实现 BDF 方法)的集合,具有灵敏度功能(CVODES 和 IDAS 变体),以及非线性求解器(金索尔)。那里有一些 Krylov 求解器(至少 GMRES 和 CG)和其他一些定点类型的方法,比如 Anderson 迭代,以及一些求解器的接口,比如 KLU 和 SuperLU。

PETSc 具有 Krylov 子空间方法、非线性求解器、ODE 和 DAE 求解器、线性和非线性预处理器(包括多重网格方法)、网格管理功能以及与提供更多此类功能的外部软件的接口,包括与 SUNDIALS 的 CVODE 接口使用 GMRES。

SUNDIALS 中唯一不在 PETSc 中的东西(甚至可能在较新版本的 PETSc 中)是 BDF 方法和基于 BDF 的灵敏度计算。PETSc 有一个灵敏度计算的实现,可以使用不同的算法来计算灵敏度。

另一方面,PETSc 有很多 SUNDIALS 没有的东西,比如更多的线性求解器、更多的预处理器(据我记得,SUNDIALS 没有任何原生预处理器)、非线性预处理、网格管理等。

SUNDIALS 更容易学习,但从长远来看,PETSc 可能会为您带来更多回报。

正如 Geoff Oxberry 的更完整答案中所提到的,应该注意PETSc 包括 TSSUNDIALS ,它是 SUNDIALS 的接口

如果您使用该--download-sundials选项配置 PETSc(请参阅python2 ./configure --help | grep -A 2 sundials其他相关选项,例如使用现有的 SUNDIALS 库),那么您至少可以使用 PETSc 中的一些 SUNDIALS 功能,因此可能更容易在 SUNDIALS 和 PETSc 的其他功能之间进行比较TS 实现。