我试图了解 MPI 的工作原理。因此,我从一个小例子开始:
...
MPI_Comm_rank(MPI_COMM_WORLD, &tid);
MPI_Comm_size(MPI_COMM_WORLD, &nthreads);
int message = 2;
if(tid != 0)
{
MPI_Recv(&rec, 1, MPI_INT, tid-1, 0, MPI_COMM_WORLD, &status);
printf("Process %i receive %i\n", tid, rec);
}
if(tid != nthreads-1)
{
message++;
printf("Process %i sends %i\n", tid, message);
MPI_Send(&message, 1, MPI_INT, tid+1, 0, MPI_COMM_WORLD);
}
...
尽管message
看起来确实增加到 3 以上,但效果很好。为什么会这样?