进程间通信MPI

进程间通信MPI

MPI(Message Passing Interface), 消息传递接口,通常用于并行计算场景中多进程间通信。以一个计算节点为例,节点中有8张GPU卡,通常一张卡上有一个训练任务进程,8张卡就会涉及到8个进程,此时训练时,进程间的通信就会变的极其重要。这种多进程通信,也被称为集合通信(Collective Communication)。通常,进程间的通信方式(IPC)有消息队列、管道、共享内存等。在并行计算场景中,最常用的是MPI方式。MPI提供了一系列通信接口,也称通信原语。

主要特点

  1. 点对点通信:一对一通信

  2. 集合通信:一组进程可以进行同步操作

  3. 通信拓扑: 允许自定义通信拓扑,如环形、网格等

  4. 组通信:允许特定的组或通信域通信

  5. 进程间同步: 通过锁和屏障等机制实现同步。

基本概念

  1. 进程组:一组可以相互通信的进程, 最常用的一般是MPI_COMM_WORLD, 包含了启动MPI程序的所有进程

基本操作

  1. Send/Receive: 发送和接收消息
  2. Broadcast:一个进程对其它进程进行广播
  3. Gather聚集:多个进程数据收集到一个进程
  4. Scatter散布: 一个进程数据分散到多个进程
  5. Reduce规约: 所有数据发送到一个进程,通常称为根进程,根进程会进行规约操作,最后只有根进程拥有最终的结果。
  6. Allreduce:所有数据发送给根进程,根进程完成规约(对多个进程的数据进行某种操作如求和,取最大值等)操作之后,然后将结果分发给所有进程
  7. Barrier:同步所有进程,直到达到某个条件
posted @ 2024-11-03 23:54  LemHou  阅读(13)  评论(0编辑  收藏  举报