next up previous index
Next: Derived Data Types Up: Nonblocking Communications Previous: Exercises

Multiple Completions

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, *), ierror
This 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



Zdzislaw Meglicki
2001-02-26