#include #include int main(int argc, char **argv) { int a, b; int size, rank; int tag = 0; MPI_Status status; MPI_Request send_request, recv_request; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (rank == 0) { a = 314159; MPI_Isend(&a, 1, MPI_INT, 1, tag, MPI_COMM_WORLD, &send_request); MPI_Irecv (&b, 1, MPI_INT, 1, tag, MPI_COMM_WORLD, &recv_request); MPI_Wait(&send_request, &status); MPI_Wait(&recv_request, &status); printf ("Process %d received value %d\n", rank, b); } else { a = 667; MPI_Isend (&a, 1, MPI_INT, 0, tag, MPI_COMM_WORLD, &send_request); MPI_Irecv (&b, 1, MPI_INT, 0, tag, MPI_COMM_WORLD, &recv_request); MPI_Wait(&send_request, &status); MPI_Wait(&recv_request, &status); printf ("Process %d received value %d\n", rank, b); } MPI_Finalize(); return 0; }