程序間通訊MPI
MPI(Message Passing Interface), 訊息傳遞介面,通常用於平行計算場景中多程序間通訊。以一個計算節點為例,節點中有8張GPU卡,通常一張卡上有一個訓練任務程序,8張卡就會涉及到8個程序,此時訓練時,程序間的通訊就會變的極其重要。這種多程序通訊,也被稱為集合通訊(Collection Communication)。通常,程序間的通訊方式(IPC)有訊息佇列、管道、共享記憶體等。在平行計算場景中,最常用的是MPI方式。MPI提供了一系列通訊介面,也稱通訊原語。
主要特點
- 點對點通訊:一對一通訊
- 集合通訊:一組程序可以進行同步操作
- 通訊拓撲: 允許自定義通訊拓撲,如環形、網格等。
- 容錯機制
基本操作
- Send/Receive: 傳送和接收訊息
- Broadcast:一個程序對其它程序進行廣播
- Gather:多個程序資料收集到一個程序
- Scatter: 一個程序資料分散到多個程序
- Reduce: 所有資料傳送到一個程序,通常稱為根程序,根程序會進行規約操作,最後只有根程序擁有最終的結果。
- Allreduce:所有資料傳送給根程序,根程序完成規約(對多個程序的資料進行某種操作如求和,取最大值等)操作之後,然後將結果分發給所有程序
- Barrier:同步所有程序,直到達到某個條件