程序間通訊MPI

LemHou發表於2024-11-03

程序間通訊MPI

MPI(Message Passing Interface), 訊息傳遞介面,通常用於平行計算場景中多程序間通訊。以一個計算節點為例,節點中有8張GPU卡,通常一張卡上有一個訓練任務程序,8張卡就會涉及到8個程序,此時訓練時,程序間的通訊就會變的極其重要。這種多程序通訊,也被稱為集合通訊(Collection Communication)。通常,程序間的通訊方式(IPC)有訊息佇列、管道、共享記憶體等。在平行計算場景中,最常用的是MPI方式。MPI提供了一系列通訊介面,也稱通訊原語。

主要特點

  1. 點對點通訊:一對一通訊
  2. 集合通訊:一組程序可以進行同步操作
  3. 通訊拓撲: 允許自定義通訊拓撲,如環形、網格等。
  4. 容錯機制

基本操作

  1. Send/Receive: 傳送和接收訊息
  2. Broadcast:一個程序對其它程序進行廣播
  3. Gather:多個程序資料收集到一個程序
  4. Scatter: 一個程序資料分散到多個程序
  5. Reduce: 所有資料傳送到一個程序,通常稱為根程序,根程序會進行規約操作,最後只有根程序擁有最終的結果。
  6. Allreduce:所有資料傳送給根程序,根程序完成規約(對多個程序的資料進行某種操作如求和,取最大值等)操作之後,然後將結果分發給所有程序
  7. Barrier:同步所有程序,直到達到某個條件

相關文章