parallel-processing - 多核系统的并行线性代数

标签 parallel-processing linear-algebra lapack

关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。












想改进这个问题?将问题更新为 on-topic对于堆栈溢出。

2年前关闭。




Improve this question




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

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

我找到了像 这样的项目pblas 斯卡拉包 ,但他们似乎都专注于分布式计算和使用 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/

    相关文章:

    node.js - 如何使用 async.parallelLimit 来最大化(并行)运行进程的数量?

    C++和MPI如何并行编写部分代码?

    c - STEVE 的特征值计算

    fortran - LAPACK DGETRF+DGETRI 失败

    .net - 无限并行功能

    r - 并行计算时函数参数中的变量不会传递给集群

    c++ - 如果我将数字存储为整数数据类型,如何检查一个数字是否存在于另一个数字中?

    OpenGL 视锥教学法

    algorithm - 在 GNU Octave 中计数条目等于零

    c++ - LAPACK 在 C++ 中的 QR 分解