MPI 提供了三种不同的通信方法,MPI 进程可以使用这些方法相互通信。下面讨论了这些通信方法:
MPI 点对点通信是 MPI 中最常用的通信方法。它涉及在同一通信器中将消息从一个进程传输到特定进程。MPI 提供阻塞(同步)和非阻塞(异步)点对点通信。使用阻塞通信,MPI 进程将消息发送到另一个 MPI 进程,并等待接收进程完全正确地接收消息后再继续工作。另一方面,使用非阻塞通信的发送进程将消息发送到另一个 MPI 进程并继续工作,而无需等待以确保接收进程已正确接收消息。
在这种类型的 MPI 通信方法中,一个进程向同一通信器中的所有进程(包括它自己)广播消息。
采用MPI单边通信方式,一个进程可以直接访问另一个进程的内存空间,而无需经过另一个进程的参与
标签匹配和集合卸载是 Mellanox 采用的一项技术,用于将 MPI 消息的处理从主机卸载到网卡上。 采用该技术可以实现 MPI 消息的零复制,即消息直接分散到用户的缓冲区,无需中间缓冲和复制。 它还通过 Mellanox 设备提供完整的集合通信进度。 这种重叠功能使 CPU 能够在适配器收集远程数据的同时执行应用程序的计算任务。ConnectX-5 IC 中提供了此功能
在 MPI 中,发送/接收操作通过通常由标签、通信器和源组成的包络进行标识。 信封用于将给定消息与其相应的用户缓冲区进行匹配。 给定进程发布的缓冲区的整个列表称为匹配列表。 从匹配列表中找到给定消息对应的缓冲区的过程称为标签匹配。
# 发送语义
MPI_Send( void* data, int count, MPI_Datatype datatype, int destination, int tag, MPI_Comm communicator)
#接收语义
MPI_Recv( void* data, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm communicator, MPI_Status* status)
MPI_Send
)MPI_COMM_WORLD
;这是针对不可扩展计算的优化发送者只有在接收者表示准备好(信号)时才开始发送。envelope
首先传送消息,然后当接收缓冲区可用于接收时传送数据。因此,只有信封缓冲才是必要的。
对于 MPI 发送模式,没有完美的选择;然而确实存在一些很好的性能建议场景:
2*latency
< 从缓冲区复制的时间标签匹配和集合卸载是为 IB/RoCE 传输定义的。
标签匹配卸载使进程能够将匹配列表的头部推送到NIC以对其进行标签匹配。 适配器将处理 MPI 消息并执行标签匹配。
总结一下:
要了解有关标签匹配的更多信息,请参阅:
了解开发人员的标签匹配(Understanding Tag Matching for Developers)标签匹配动词 API 和实现示例(Tag Matching Verbs API and Implementation Example)
官方文档: https://www.mpi-forum.org/docs/
了解 MPI 标签匹配和集合点(RENDEZVOUS)卸载 (CONNECTX-5): https://enterprise-support.nvidia.com/s/article/understanding-mpi-tag-matching-and-rendezvous-offloads--connectx-5-x
MPI协议: https://pavanakumar.github.io/post/mpi-protocols
https://en.wikipedia.org/wiki/Message_Passing_Interface
MPI简介: https://hpc.nmsu.edu/discovery/mpi/introduction/
博客: https://cloud.tencent.com/developer/user/5060293/articles | https://logread.cn | https://blog.csdn.net/ssbandjl | https://www.zhihu.com/people/ssbandjl/posts | https://chattoyou.cn
https://cloud.tencent.com/developer/column/101987
技术会友: 欢迎对DPU/智能网卡/卸载/网络,存储加速/安全隔离等技术感兴趣的朋友加入DPU技术交流群
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。