MPI (Message Passing Interface) 是平行運算通訊標準。Ubuntu 下透過 mpich2 套件可快速建立 MPI 環境,支援 C/C++/Fortran 程式編譯與多行程執行。本文記錄安裝、編譯、執行三步驟完整流程。
sudo apt-get install mpich2
# 安裝版本:mpich2 1.4.1(Ubuntu 12.04 預設)
# 亦可安裝 openmpi:sudo apt-get install openmpi-bin libopenmpi-dev
# 範例程式 mpi_hello.c
#include
#include
int main(int argc, char **argv) {
int rank, size;
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Comm_size(MPI_COMM_WORLD, &size);
printf("Hello from rank %d of %d\n", rank, size);
MPI_Finalize();
return 0;
}
# 編譯
mpicc mpi_hello.c -g -Wall -o mpi_hello
# 使用 4 個行程執行
mpiexec -n 4 ./mpi_hello
# 或 mpirun -np 4 ./mpi_hello
# 輸出範例:
# Hello from rank 0 of 4
# Hello from rank 1 of 4
# Hello from rank 2 of 4
# Hello from rank 3 of 4
~/machinefile 列出節點主機名/IP:node1 slots=4
node2 slots=4
mpiexec -f ~/machinefile -n 8 ./mpi_hello

mpich2 已安裝,路徑通常在 /usr/bin/mpicc。/etc/hosts 主機名解析。MPICH_NEMESIS_NETMOD=tcp、調整 MP_BUFFER_MEM 等環境變數。