ではすこし考えてみましょう。MPIで何台PCを使用しているか、今このPCはMPIでどうやって認識されているか?というのを確認する術が欲しくなってきます。これがrankとsizeです。
では、実際にソースコードをいじってみましょう。
#include<stdio.h>
#include"mpi.h"
#define N 10000000
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 world I'm %d of %d\n",rank,size);★★★
MPI_Finalize();
return 0;
}
★★★が変更点です。
これをコンパイル→実行します。
$ mpicc -o 002-1 002-1.c
$ mpirun --machinefile ../machinefile ./002-1
hello world I'm 0 of 3
hello world I'm 2 of 3
hello world I'm 1 of 3
さて、さっきと違い、3行示されました。これは、
- rankに自分に付けられた通し番号、
- sizeに全体でどの数のPCを使っているか
というのを格納したのです。ここで出てきているMPI_COMM_WORLDはあまり難しいことを考えずに、
「いまの処理で使用しているPC全体のグループ名」
という感じで認識しておけばよいかと思います。