There are 6 function calls that let a programmer wait for the completion of any, some, or all pending communication operations. These are, in C:
int MPI_Waitany(int count, MPI_Request *array_of_requests, int *index,
MPI_Status *status)
and in Fortran:
mpi_waitany(count, array_of_requests, index, status, ierror)
integer count, array_of_requests(*), index, status(MPI_STATUS_SIZE), &
ierror
Similarly we have, in C:
int MPI_Testany(int count, MPI_Request *array_of_requests, int *index,
int *flag, MPI_Status *status)
and in Fortran:
mpi_testany(count, array_of_requests, index, flag, status, ierror)
logical flag
integer count, array_of_requests(*), index, status(MPI_STATUS_SIZE),
ierror
Then we have:
int MPI_Waitall(int count, MPI_Request *array_of_requests,
MPI_Status *array_of_statuses)
and in Fortran:mpi_waitall(count, array_of_requests, array_of_statuses, ierror) integer count, array_of_requests(*) integer array_of_statuses(MPI_STATUS_SIZE, *), ierrorThis is accompanied by the corresponding
MPI_TESTALL
calls, in C:
int MPI_Testall(int count, MPI_Request *array_of_requests, int *flag,
MPI_Status *arrray_of_statuses)
and in Fortran:mpi_testall(count, array_of_requests, flag, array_of_statuses, ierror) logical flag integer count, array_of_requests(*) integer array_of_statuses(MPI_STATUS_SIZE, *), ierror
Last, there are the MPI_WAITSOME calls. In C:
int MPI_Waitsome(int incount, MPI_Request *array_of_requests,
int *outcount, int *array_of_indices,
MPI_Status *array_of_statuses)
and in Fortran:
int mpi_waitsome(incount, array_of_requests, outcount, array_of_indices,
array_of_statuses, ierror)
integer incount, array_of_requests(*), outcount, array_of_indices(*)
integer array_of_statuses(MPI_STATUS_SIZE, *), ierror