【发布时间】:2017-05-15 15:03:25
【问题描述】:
给定一个由多个节点组成的集群,每个节点都承载多核处理器,与使用纯全 MPI 相比,在节点之间使用 MPI 和节点内的 OpenMP/pthread 是否有任何优势?如果我理解正确,如果我在单个节点上运行 MPI 程序并指示进程数等于内核数,那么我将有一个诚实的并行 MPI 作业,多个进程在不同的内核上运行。那么,为什么还要在节点内使用线程而只在节点之间使用 MPI 来进行混合并行化呢?对于 MPI+CUDA 混合的情况我没有疑问,因为 MPI 不能使用 GPU,但它可以使用 CPU 内核,那为什么要使用线程呢?
【问题讨论】:
-
因为在线程之间共享数据比在进程之间更容易、更快捷。
-
好的,所以如果并行任务之间的通信不密集,那么 MPI+线程可能不会比纯 MPI 提供太多收益?
标签: multithreading parallel-processing mpi