MPICH 是 MPI (Message Passing Interface) 標準的開源實作,廣泛用於高效能運算叢集開發。本文記錄安裝配置參考連結,並提供最小可執行範例。
#include "mpi.h"
#include
#include
int main(int argc, char **argv) {
int myid, numprocs;
int namelen;
char processor_name[MPI_MAX_PROCESSOR_NAME];
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &myid);
MPI_Comm_size(MPI_COMM_WORLD, &numprocs);
MPI_Get_processor_name(processor_name, &namelen);
fprintf(stderr, "Hello World! Process %d of %d on %s\n",
myid, numprocs, processor_name);
MPI_Finalize();
return 0;
}
# 編譯
mpicc -o hello hello.c
# 執行 4 行程
mpirun -np 4 ./hello
Hello World! Process 1 of 4 on jack-laptop
Hello World! Process 3 of 4 on jack-laptop
Hello World! Process 2 of 4 on jack-laptop
Hello World! Process 0 of 4 on jack-laptop
| 函數 | 用途 |
|---|---|
| MPI_Init | 初始化 MPI 環境 |
| MPI_Comm_rank | 取得當前行程在通訊域中的序號 (rank) |
| MPI_Comm_size | 取得通訊域中行程總數 |
| MPI_Get_processor_name | 取得處理器名稱 |
| MPI_Finalize | 結束 MPI 環境 |
MPICH 提供標準 MPI 介面,配合 `mpicc` 編譯器包裝器與 `mpirun` 啟動器,可快速開發跨平台平行程式。進階主題包括點對點通訊、集合通訊、虛擬拓撲、MPI-2 單向通訊與動態行程管理等。