假设我们有一个节点有12个核心。有什么区别:
前者通过共享内存进行通信,后者通过IPC进行通信。那么,哪一个更快?差异是微不足道的还是显着的?
答案 0 :(得分:1)
嗯,这取决于......
大多数MPI实现使用共享内存(而不是互连甚至IPC)进行节点内通信。
一般来说,MPI + X用于混合编程:
OpenMP通常用作X.也可以使用MPI RMA(例如单面通信),甚至可以使用更多选项。
从性能的角度来看,再一次,这取决于。 一些应用程序在平面MPI中运行得更快(例如每个核心一个MPI进程), 而其他一些应用程序在混合MPI + OpenMP中运行得更快。 (请记住,OpenMP是为具有内存访问权限的共享内存系统而设计的,因此每个NUMA域通常有一个MPI任务(例如大多数时候是套接字),而每个节点只有一个MPI任务。
最后但同样重要的是,MPI + OpenMP内存开销和连线时间通常低于平板MPI,这可能是一个重要因素。