/* * example for send and recv */ #include #include int main(int argc, char *argv[]) { int myid, np, src, dest; int a, b; MPI_Status status; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &myid); MPI_Comm_size(MPI_COMM_WORLD, &np); a = myid; printf("Before communication: Process %d: a=%d\n", myid, a); MPI_Barrier(MPI_COMM_WORLD); src = myid-1; if (src==-1) src=np-1; dest = myid+1; if (dest==np) dest=0; if(myid==0) { MPI_Send(&a, 1, MPI_INT, dest, 111, MPI_COMM_WORLD); MPI_Recv(&b, 1, MPI_INT, src, 111, MPI_COMM_WORLD, &status); } else { MPI_Recv(&b, 1, MPI_INT, src, 111, MPI_COMM_WORLD, &status); MPI_Send(&a, 1, MPI_INT, dest, 111, MPI_COMM_WORLD); } printf("After communication: Process %d: b=%d\n", myid, b); MPI_Finalize(); return 0; }