进程间通信MPI
进程间通信MPI
MPI(Message Passing Interface), 消息传递接口,通常用于并行计算场景中多进程间通信。以一个计算节点为例,节点中有8张GPU卡,通常一张卡上有一个训练任务进程,8张卡就会涉及到8个进程,此时训练时,进程间的通信就会变的极其重要。这种多进程通信,也被称为集合通信(Collective Communication)。通常,进程间的通信方式(IPC)有消息队列、管道、共享内存等。在并行计算场景中,最常用的是MPI方式。MPI提供了一系列通信接口,也称通信原语。
主要特点
-
点对点通信:一对一通信
-
集合通信:一组进程可以进行同步操作
-
通信拓扑: 允许自定义通信拓扑,如环形、网格等
-
组通信:允许特定的组或通信域通信
-
进程间同步: 通过锁和屏障等机制实现同步。
基本概念
- 进程组:一组可以相互通信的进程, 最常用的一般是
MPI_COMM_WORLD
, 包含了启动MPI程序的所有进程
基本操作
- Send/Receive: 发送和接收消息
- Broadcast:一个进程对其它进程进行广播
- Gather聚集:多个进程数据收集到一个进程
- Scatter散布: 一个进程数据分散到多个进程
- Reduce规约: 所有数据发送到一个进程,通常称为根进程,根进程会进行规约操作,最后只有根进程拥有最终的结果。
- Allreduce:所有数据发送给根进程,根进程完成规约(对多个进程的数据进行某种操作如求和,取最大值等)操作之后,然后将结果分发给所有进程
- Barrier:同步所有进程,直到达到某个条件
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步