MacでMPIを使うために結構調べて時間がかかったので、メモとして残しておこうと思います。
使用したPC
OS : macOS Monterey 12.5.1
プロセッサ : 3.2 GHz 6コアIntel Core i7
環境構築
MacでHomebrewを使っているなら、
brew install openmpi
でインストールが可能です。
実行
下のサンプルコードhello.cを作成し、
#include <stdio.h> #include <mpi.h> #define MSIZE 64 int main(int argc, char **argv){ char msg[MSIZE]; int rank; /* カレントプロセスのランク */ int nproc; /* プロセスの数 */ MPI_Status status; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &nproc); if(rank == 0){ for(int i = 1; i < nproc; i++){ MPI_Recv(msg, MSIZE, MPI_CHAR, i, 0, MPI_COMM_WORLD, &status); fputs(msg, stdout); } }else{ sprintf(msg, "Hello world! My process is #%d\n", rank); MPI_Send(msg, MSIZE, MPI_CHAR, 0, 0, MPI_COMM_WORLD); } MPI_Finalize(); return 0; }
以下のようにコンパイルし、
$ mpicc -o hello hello.c
-np
でプロセス数を指定して実行し、出力結果のように表示されればOKです。
$ mpirun -np 3 ./hello Hello world! My process is #1 Hello world! My process is #2