Non-blocking send of custom type
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(mp_type_descriptor_type), | intent(in) | :: | msgin | |||
integer, | intent(in) | :: | dest | |||
integer, | intent(in) | :: | comm | |||
integer, | intent(out) | :: | request | |||
integer, | intent(in), | optional | :: | tag |
SUBROUTINE mp_isend_custom(msgin, dest, comm, request, tag)
!! Non-blocking send of custom type
TYPE(mp_type_descriptor_type), INTENT(IN) :: msgin
INTEGER, INTENT(IN) :: dest, comm
INTEGER, INTENT(out) :: request
INTEGER, INTENT(in), OPTIONAL :: tag
INTEGER :: ierr
#if defined(__parallel)
CHARACTER(LEN=*), PARAMETER :: routineN = 'mp_isend_custom'
INTEGER :: my_tag
my_tag = 0
IF (PRESENT(tag)) my_tag = tag
ierr = 0
CALL mpi_isend(MPI_BOTTOM, 1, msgin%type_handle, dest, my_tag, &
comm, request, ierr)
IF (ierr /= 0) CALL mp_stop(ierr, "mpi_isend @ "//routineN)
#else
MARK_USED(msgin)
MARK_USED(dest)
MARK_USED(comm)
MARK_USED(request)
MARK_USED(tag)
ierr = 1
request = 0
CALL mp_stop(ierr, "mp_isend called in non parallel case")
#endif
END SUBROUTINE mp_isend_custom