【发布时间】:2016-12-23 21:15:00
【问题描述】:
mpi 环境下 C/C++ 中密集矩阵的并行分布式 Cholesky 分解有哪些库可用?
我找到了 ScaLAPACK 库,这可能是我正在寻找的解决方案。不过,调用起来似乎有点繁琐,很多 Fortran C 转换要做,这让我觉得它可能没有被广泛使用,因此也许有一些其他的库被用来代替?
或者,当一个人已经在使用 MPI 并且 MPI 已经在程序中初始化时,是否有一些 ScaLAPACK 包装器使得在 C 或 C++ 环境中使用起来相对不太痛苦?
【问题讨论】:
-
Scalapack 是在分布式内存环境中使用分布式计算的方式。如果您可以将矩阵保存在一个主机上并且您不使用分布式矩阵计算,那么带有 openmp 的 lapack 可能是另一种可能性(例如,您需要 N 个 cholesky decomps,它可以分布在 N 台机器上,这样每台机器都可以使用 openmp 进行 cholesky在它的 m 个处理器上)。并且内存对齐摆弄并不是那么糟糕。我写了一些预处理指令,它们在参数中进行了适当的替换。
-
嗨,博尔特。好的听起来不错。所以,Scalapack,因为我一次只有一个矩阵,不能做任务级并行。 scalapack 能够为 Cholesky 提供什么样的可扩展性? 12核? 48核? 480核?我想这在某种程度上取决于矩阵的大小?
-
在可扩展性方面,除了矩阵大小之外,还有更多因素,例如节点间连接性、cpu 缓存大小、网络同质性、网络架构等...如果您可以访问大型集群并且需要那么多核心,我会与系统管理员交谈并检查他们的测试类型已经执行或让他们执行 scalapack 测试例程以获得想法。
-
我建议阅读pdpbtrf.f的标题,了解scalapack中cholesky分解的详细信息和限制。
-
@Bort,好的,谢谢。凉爽的!问题:人们通常如何处理从 C 和/或 C++ 与 fortran 的对话?
标签: c++ c parallel-processing mpi matrix-decomposition