用于分布式内存 Cholesky 分解的库?

计算科学 线性代数 矩阵 并行计算 C mpi
2021-12-18 11:31:21

哪些库可以计算分布式内存环境中的密集 Cholesky 分解(最好使用MPI)。我正在使用 C/C++,并且可以访问 1 到 40 个节点的集群,其中每个节点有 12 个内核。我听说过ScaLAPACK,但对替代品很感兴趣。

1个回答

按字母顺序(免责声明:我是Elemental的主要作者):

等离子体

用于多核架构的分布式并行线性代数软件 (DPLASMA)Bosilca等人最近和正在进行的一项努力。PLASMA扩展到分布式内存机器。版本 1.0.0支持分布式 Cholesky 分解,以及许多其他操作。DPLASMA 用 C 语言编写并使用 MPI。他们的网站链接到SC12的以下讲义,尽管从那时起取得了重大进展。这是列表中目前唯一使用DAG调度的软件,它似乎在 2010 年左右开始开发。

元素

Elemental是对PLAPACKScaLAPACK背后的许多想法(如下所述)的现代重拍和扩展它是用 C++ 编写的,目前位于BLASLAPACKMPI之上请参阅此最近的演示文稿以获取更详细的概述和一些简短的示例程序。开发始于 2009 年左右,并且仍在加速发展。与PLAPACK和ScaLAPACK相反,其特有的通信模式是allgather

包装

Parallel Linear Algebra PACKage (PLAPACK)是从 1997 年到 2000 年左右开发的,并引入了提供一种简单的方法(在仅调用名为Copy的例程的意义上)将(子)矩阵从一个分布重新分布到另一个分布的想法。PLAPACK 的主要作者为 Elemental 的发展做出了积极贡献。PLAPACK 是用 C 和 MPI 编写的,它位于 BLAS 和 LAPACK 之上,其特有的通信模式是广播

斯卡拉派克

Scalable Linear Algebra PACKage (ScaLAPACK)自 1995 年左右开始开发,因此是最早(也是最常用)的一组。ScaLAPACK 主要是用 Fortran 编写的,但它的一些例程是用 C 编写的,并且它的大部分通信都是根据基本线性代数通信子程序执行的,它(现在)通常使用 MPI 实现。它经过专门设计,使其高级代码类似于 LAPACK 的代码,并且发生的本地计算通常是对 BLAS 和 LAPACK 的调用。ScaLAPACK 中特有的通信模式是广播