【问题标题】:How do MPI processes communicate in the same node [duplicate]MPI进程如何在同一个节点中通信[重复]
【发布时间】:2018-05-11 23:59:57
【问题描述】:

假设我们有一个 12 核的节点。有什么区别:

  1. 运行一个 MPI 进程来管理每个内核的 12 个线程。
  2. 只需为每个内核运行 12 个 MPI 进程。

前者通过共享内存进行通信,后者通过IPC进行通信。那么,哪个更快呢?差异是可忽略的还是显着的?

【问题讨论】:

    标签: multithreading parallel-processing mpi ipc


    【解决方案1】:

    嗯,这取决于...

    大多数 MPI 实现使用共享内存(而不是互连甚至 IPC)进行节点内通信。

    一般来说,MPI+X 用于混合编程:

    • 用于节点间通信的 MPI
    • X 在同一个节点内

    OpenMP 通常用作 X。也可以使用 MPI RMA(例如单边通信),并且可以使用更多选项。

    从性能的角度来看,再一次,这取决于。 一些应用程序在平面 MPI 中运行得更快(例如,每个内核一个 MPI 进程), 而其他一些应用程序在混合 MPI+OpenMP 中运行得更快。 (请记住,OpenMP 是为共享内存系统设计的,具有对内存的平坦访问权限,因此每个 NUMA 域通常有一个 MPI 任务(例如大多数时间是套接字),而每个节点有一个 MPI 任务。

    最后但同样重要的是,MPI+OpenMP 内存开销和连线时间通常低于平面 MPI,这可能是一个重要因素。

    【讨论】:

      猜你喜欢
      • 2012-01-08
      • 2014-06-05
      • 1970-01-01
      • 1970-01-01
      • 2019-10-27
      • 2022-10-03
      • 2019-09-15
      • 2011-02-24
      • 1970-01-01
      相关资源
      最近更新 更多