int MPI_Isend(void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Request *request) int MPI_Irecv(void *buf, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm comm, MPI_Request *request)
int MPI_Test(MPI_Request *request, int *flag, MPI_Status *status) int MPI_Wait(MPI_Request *request, MPI_Status *status)
int MPI_Request_free(MPI_Request *request)
1 int a[10], b[10], myrank; 2 MPI_Status status; 3 ... 4 MPI_Comm_rank(MPI_COMM_WORLD, &myrank); 5 if (myrank == 0) { 6 MPI_Send(a, 10, MPI_INT, 1, 1, MPI_COMM_WORLD); 7 MPI_Send(b, 10, MPI_INT, 1, 2, MPI_COMM_WORLD); 8 } 9 else if (myrank == 1) { 10 MPI_Recv(b, 10, MPI_INT, 0, 2, &status, MPI_COMM_WORLD); 11 MPI_Recv(a, 10, MPI_INT, 0, 1, &status, MPI_COMM_WORLD); 12 } 13 ...
1 int a[10], b[10], myrank; 2 MPI_Status status; 3 MPI_Request requests[2]; 4 ... 5 MPI_Comm_rank(MPI_COMM_WORLD, &myrank); 6 if (myrank == 0) { 7 MPI_Send(a, 10, MPI_INT, 1, 1, MPI_COMM_WORLD); 8 MPI_Send(b, 10, MPI_INT, 1, 2, MPI_COMM_WORLD); 9 } 10 else if (myrank == 1) { 11 MPI_Irecv(b, 10, MPI_INT, 0, 2, &requests[0], MPI_COMM_WORLD); 12 MPI_Irecv(a, 10, MPI_INT, 0, 1, &requests[1], MPI_COMM_WORLD); 13 } //Non-Blocking Communication Operations 14 ...
Cem Ozdogan 2010-11-01