Tests for completion of the given requests. We use mpi_test so that we can use a single status.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(mp_request_type), | DIMENSION(:) | :: | requests |
the list of requests to test |
logical which determines if requests are complete
FUNCTION mp_testall_tv(requests) RESULT(flag) !! Tests for completion of the given requests. !! We use mpi_test so that we can use a single status. TYPE(mp_request_type), DIMENSION(:) :: requests !! the list of requests to test LOGICAL :: flag !! logical which determines if requests are complete INTEGER :: ierr #if defined(__parallel) INTEGER :: i LOGICAL, DIMENSION(:), ALLOCATABLE :: flags #endif ierr = 0 flag = .TRUE. #if defined(__parallel) ALLOCATE (flags(SIZE(requests))) DO i = 1, SIZE(requests) CALL mpi_test(requests(i)%handle, flags(i), MPI_STATUS_IGNORE, ierr) IF (ierr /= 0) CALL mp_stop(ierr, "mpi_test @ mp_testall_tv") flag = flag .AND. flags(i) END DO DEALLOCATE (flags) #else requests = mp_request_null #endif END FUNCTION mp_testall_tv