MPI +线程并行化与仅MPI的优势(如果有的话)是什么?

Max*_*mko 5 parallel-processing multithreading mpi

给定一个由几个节点组成的集群,每个节点都托管多核处理器,在使用纯全MPI的节点节点内的OpenMP/pthread 之间使用MPI有什么好处?如果我理解正确,如果我在一个节点上运行MPI程序并指示进程数等于内核数,那么我将在一个单独的内核上运行多个进程的一个诚实的并行MPI作业.那么为什么要使用节点内的线程和节点之间的MPI来进行混合并行化呢?在MPI + CUDA混合的情况下我毫无疑问,因为MPI不能使用GPU,但它可以使用CPU内核,那么为什么要使用线程呢?

Gau*_*ena 10

使用OpenMP/pthread线程和MPI进程的组合称为混合编程.程序比纯MPI更难,但随着最近OpenMP的延迟减少,使用Hybrid MPI很有意义.一些优点是:

  1. 避免数据复制:由于线程可以在节点内共享数据,如果需要在进程之间复制任何数据,我们可以避免这种情况.
  2. 轻量级:线程是轻量级的,因此您可以减少与进程相关的元数据.
  3. 减少消息数量:节点内的单个进程可以与其他进程通信,减少节点之间的消息数量(从而减轻网络接口卡的压力).集体沟通中涉及的消息数量值得注意.
  4. 更快的通信:正如上面的@ user3528438所指出的,由于线程使用共享内存进行通信,因此可以避免在节点内使用点对点MPI通信.最近的方法(2012)建议使用RMA共享内存而不是节点内的线程 - 此模型称为MPI + MPI(使用MPI加MPI搜索谷歌学者).

但是混合MPI也有它的缺点,但你只问了它们的优点.