没有 OpenMP 的并行线性代数

计算科学 线性代数 矩阵 并行计算 线性求解器
2021-12-03 00:11:04

我已经搜索了档案但没有成功。显然,问题很简单:

我可以使用什么并行(共享内存)但没有OpenMP 的线性代数库?

据我所知,OpenMP 似乎是一项要求。由于我需要使用 Mac 与同事互动,所以我不能选择 OpenMP(不,我不能要求他们编译 gcc)。用法将是经典的 FEM,因此矩阵、向量和分解(或某种并行线性求解器)。

Intel 的 TBB 还可以,当然 pthread 也不错,标准的 C++std::thread就完美了。但我不是在寻找完美:)

谢谢!

1个回答

对于您所针对的相对较大的问题,我建议您专注于稀疏矩阵求解器,因为这是您将从并行性中获得最大收益的地方。

从评论中不清楚您是否可以在所有目标平台上访问高质量的多线程 BLAS 库。

如果您这样做,并且还能够编译 FORTRAN 代码,那么 MUMPS 求解器在我看来是 FE 应用程序中最好的免费稀疏求解器。

http://mumps.enseeiht.fr/

它实际上是为分布式内存并行 (MPI) 而设计的,但它在多核机器上仅使用多线程 BLAS 就可以做得非常好。它还有一个核外选项,对于解决内存有限的台式机上的大问题非常有用。

第二个选项是 SOOLES。

http://www.netlib.org/linalg/spooles/spooles.2.2.html

它是一个较老的稀疏求解器,不是最先进的,但它可以用 pthreads 构建,并且完全用 C 编写。

最后,第三种选择是 PaStiX。

http://pastix.gforge.inria.fr/files/README-txt.html

我自己还没有真正尝试过,所以不能进一步评论,只能说它也支持 pthreads。