Non-blocking receive of vector data
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(mp_type_descriptor_type), | intent(inout) | :: | msgout | |||
integer, | intent(in) | :: | source | |||
type(mp_comm_type), | intent(in) | :: | comm | |||
type(mp_request_type), | intent(out) | :: | request | |||
integer, | intent(in), | optional | :: | tag |
SUBROUTINE mp_irecv_custom(msgout, source, comm, request, tag) !! Non-blocking receive of vector data TYPE(mp_type_descriptor_type), INTENT(INOUT) :: msgout INTEGER, INTENT(IN) :: source TYPE(mp_comm_type), INTENT(IN) :: comm TYPE(mp_request_type), INTENT(out) :: request INTEGER, INTENT(in), OPTIONAL :: tag INTEGER :: ierr #if defined(__parallel) CHARACTER(LEN=*), PARAMETER :: routineN = 'mp_irecv_custom' INTEGER :: my_tag ierr = 0 my_tag = 0 IF (PRESENT(tag)) my_tag = tag CALL mpi_irecv(MPI_BOTTOM, 1, msgout%type_handle, source, my_tag, & comm%handle, request%handle, ierr) IF (ierr /= 0) CALL mp_stop(ierr, "mpi_irecv @ "//routineN) #else MARK_USED(msgout) MARK_USED(source) MARK_USED(comm) MARK_USED(request) MARK_USED(tag) ierr = 1 request = mp_request_null DBCSR_ABORT("mp_irecv called in non parallel case") #endif END SUBROUTINE mp_irecv_custom