MPI进程如何在同一节点中进行通信

时间:2017-11-28 13:43:53

标签: multithreading parallel-processing mpi ipc

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

  1. 运行一个MPI流程来管理每个核心的12个线程。
  2. 每个核心只需运行12个MPI流程。
  3. 前者通过共享内存进行通信,后者通过IPC进行通信。那么,哪一个更快?差异是微不足道的还是显着的?

1 个答案:

答案 0 :(得分:1)

嗯,这取决于......

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

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

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

OpenMP通常用作X.也可以使用MPI RMA(例如单面通信),甚至可以使用更多选项。

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

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