在mpi环境下C/c++中有哪些库可用于并行分布密集矩阵的cholesky分解?
我找到了ScaLAPACK库,这可能是我正在寻找的解决方案。似乎这是一个有点繁琐的调用虽然,很多Fortran <-> C转换做,这让我认为,也许它没有被广泛使用,因此也许有一些其他的库使用代替?
或者,当一个人已经在使用MPI,并且MPI已经在程序中初始化时,是否有一些ScaLAPACK包装器使得在C或c++环境中使用它相对不太痛苦?
这些矩阵是密集的还是稀疏的?
Trilinos是一个巨大的并行科学计算库。子包Amesos可以连接到Scalapack并行,直接解决密集系统和UMFPACK, SuperLU或MUMPS稀疏系统。Trilinos主要是用c++编写的,但如果你喜欢,也有Python绑定。这可能有点小题大做,但它能完成工作。
英特尔MKL也可能是一个选择,因为它在内部调用ScaLAPACK。请注意,英特尔支持学生使用该库,但在这种情况下,您必须使用开源MPI版本。此外,英特尔论坛也很有帮助。
Elemental也是一个选项,用c++编写,当你想要集成你的C/c++应用程序时,这无疑是一个很大的优势,项目负责人Jack Poulson非常友好,帮了很多忙。
OpenBLAS、SuperLU和PETSc也很有趣,你可能想在我的回答中阅读更多。