密集分布矩阵

计算科学 矩阵 并行计算 稀疏矩阵 密集矩阵 高性能计算
2021-12-07 19:56:53

密集矩阵按列分布用于并行计算,然后从左右乘以稀疏矩阵。什么是适合这些任务的 c++ 库?

3个回答

对于密集的分布式内存线性代数,这些天你不能比Elemental做得更好。虽然,我相信它目前不处理稀疏矩阵。密集稀疏操作可能需要您进行一些自定义编码。

ScaLAPACK 库专为分布式内存机器上的密集矩阵运算而设计。但是,它仍然可以在共享内存机器上工作,前提是您安装了 MPI(安装需要在 linux 上使用 mpicc 和 mpif77 编译器)。我以前没有使用过它,所以我无法证明它的用户友好性。

http://www.netlib.org/scalapack/

我认为这绝对取决于并行化架构和您想要的。如果使用共享内存 CPU,即使我没有使用过,也可能是 Elemental。请注意,PETSc 也有用于稀疏矩阵的工具。但是如果你真的需要它尽可能快地运行,并且稀疏矩阵有一些你可以利用的已知结构,那么我会使用 MPI 编写整个东西。根据我的经验,这总是要快得多,但也需要更多的工作。因此,这取决于您的需求和编码时间。

如果您想使用 GPU,nvidia 有一个稀疏矩阵库,您可以尝试使用 CUDA。

CUDA 5 还让你做某种 mpi+cuda,所以你可以拥有一个 gpu 集群,但我不知道稀疏矩阵库是否能够做到这一点,但我不明白为什么不这样做。值得一看。但同样,如果你需要它飞行,我会编写自己的代码。