我正在开发一个需要进行大量线性代数计算的程序。
现在我正在使用LAPACK/BLAS例程,但我需要利用我的机器(24 核 Xeon X5690)。
我发现了像pblas和scalapack这样的项目,但它们似乎都专注于分布式计算和使用 MPI。
我没有可用的集群,所有计算都将在单个服务器上完成,使用 MPI 看起来有点矫枉过正。
有人对此有什么建议吗?
我正在开发一个需要进行大量线性代数计算的程序。
现在我正在使用LAPACK/BLAS例程,但我需要利用我的机器(24 核 Xeon X5690)。
我发现了像pblas和scalapack这样的项目,但它们似乎都专注于分布式计算和使用 MPI。
我没有可用的集群,所有计算都将在单个服务器上完成,使用 MPI 看起来有点矫枉过正。
有人对此有什么建议吗?
正如@larsmans(例如 MKL)所提到的,您仍然使用 LAPACK + BLAS 接口,但您只需为您的平台找到一个经过调整的多线程版本。MKL 很好,但是很贵。其他开源选项包括:
我也同意马克的评论;根据您使用的 LAPACK 例程,使用 MPI 的分布式内存实际上可能比多线程更快。BLAS 例程不太可能出现这种情况,但对于更复杂的事情(比如 LAPACK 中的特征值/向量例程),值得测试。虽然 MPI 函数调用确实是一种开销,但在分布式内存模式下执行操作意味着您不必担心错误共享、同步访问共享变量等。