【问题标题】:Can we run OpenMP parallelize code on several nodes?我们可以在多个节点上运行 OpenMP 并行化代码吗?
【发布时间】:2015-03-06 02:50:19
【问题描述】:

假设我们有四个 16 核节点(node1、node2、node3、node4)。如何同时在 node1、2、3 上运行大型并行程序?或者甚至总共使用 16 个核心,但是分配为 node1 中的 7 个核心 + node2 中的 8 个核心 + node3 中的 1 个核心(其他部分被占用)?
MPI 是常用的方式吗? openmp 就足够了吗?我没学过MPI,但是在单节点里用过openmp。

【问题讨论】:

  • 这当然不是唯一的方法。例如,Erlang、Oz 等许多语言都有自己的作业分配方式,而 PVM 是另一个常被比作 MPI 的库。但如果你使用 C 或 Fortran,MPI 是一个不错的选择。

标签: parallel-processing mpi cluster-computing openmp


【解决方案1】:

如果需要,您可以结合使用 OpenMP 和 MPI。 虽然 MPI 确实利用了每个节点上的每个核心,并且已经优化以在发现其其他任务在同一台机器上时使用参考位置,但代码库需要进行大量更改,以防它已经开发完毕。 建议使用 OpenMP 增量并行化您的代码,因此您可能希望编排混合,其中 MPI 的每个任务都使用 OpenMP 的内核。 所以节点数= MPI任务数 每台机器的核心数 = 每台机器的 OpenMP 任务数

【讨论】:

    猜你喜欢
    • 2019-11-10
    • 1970-01-01
    • 2016-07-04
    • 1970-01-01
    • 2016-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-20
    相关资源
    最近更新 更多