Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。












想要改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。

1年前关闭。



Improve this question




我正在开发一个程序,需要进行大量的线性代数计算。

现在,我正在使用 LAPACK/BLAS 例程,但是我需要利用我的机器(24核心Xeon X5690)。

我发现了像 pblas scalapack 这样的项目,但它们似乎都专注于分布式计算和使用MPI。

我没有可用的群集,所有计算都将在单个服务器上完成,而使用MPI似乎有点过头了。

有人对此有任何建议吗?

最佳答案

正如@larsmans(带有MKL)所提到的那样,您仍然使用LAPACK + BLAS接口(interface),但只是为您的平台找到了经过调整的多线程版本。 MKL很棒,但价格昂贵。其他开源选项包括:

  • OpenBLAS/GotoBLAS,Nehalem支持应该可以正常运行,但尚未调整对Westmere的支持。多线程性能很好。
  • Atlas:在安装时自动调整到您的体系结构。对于“典型”矩阵(例如,方形SGEMM)可能会更慢,但对于奇数情况可能会更快,并且对于Westmere甚至可能胜过OpenBLAS/GotoBLAS,我自己还没有对此进行测试。大多数情况下针对串行情况进行了优化,但确实包含并行多线程例程。
  • Plasma-专为多核设计的LAPACK实现。

  • 我也同意马克的评论;根据您使用的LAPACK例程,带有MPI的分布式内存实际上可能比多线程要快。 BLAS例程不太可能是这种情况,但是对于更复杂的事情(例如LAPACK中的特征值/矢量例程),值得进行测试。虽然确实确实需要MPI函数调用,但是以分布式内存模式进行操作意味着您不必担心错误共享,同步对共享变量的访问等问题。

    关于parallel-processing - 多核系统的并行线性代数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10025866/

    10-13 05:21