waits for completion of any of the given requests
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(mp_request_type), | intent(inout), | DIMENSION(:) | :: | requests | ||
integer, | intent(out) | :: | completed |
SUBROUTINE mp_waitany(requests, completed) !! waits for completion of any of the given requests TYPE(mp_request_type), DIMENSION(:), INTENT(inout) :: requests INTEGER, INTENT(out) :: completed CHARACTER(LEN=*), PARAMETER :: routineN = 'mp_waitany' INTEGER :: handle, ierr #if defined(__parallel) INTEGER :: count, i MPI_REQUEST_TYPE, DIMENSION(SIZE(requests)) :: request_handles #endif ierr = 0 CALL timeset(routineN, handle) #if defined(__parallel) count = SIZE(requests) DO i = 1, count request_handles(i) = requests(i)%handle END DO CALL mpi_waitany(count, request_handles, completed, MPI_STATUS_IGNORE, ierr) IF (ierr /= 0) CALL mp_stop(ierr, "mpi_waitany @ "//routineN) DO i = 1, count requests(i)%handle = request_handles(i) END DO #else MARK_USED(requests) completed = 1 #endif CALL timestop(handle) END SUBROUTINE mp_waitany