72 SUBROUTINE mpl_probe(KSOURCE,KTAG,KCOMM,LDWAIT,LDFLAG,CDSTRING,KERROR,KCOUNT,KRECVTAG,KFROM)
75 #ifdef USE_8_BYTE_WORDS 77 mpi_probe => mpi_probe8, mpi_iprobe => mpi_iprobe8
81 INTEGER(KIND=JPIM),
INTENT(IN),
OPTIONAL :: KSOURCE,KTAG,KCOMM
82 INTEGER(KIND=JPIM),
INTENT(OUT),
OPTIONAL :: KERROR
83 LOGICAL,
INTENT(IN),
OPTIONAL :: LDWAIT
84 LOGICAL,
INTENT(OUT),
OPTIONAL :: LDFLAG
85 CHARACTER*(*),
INTENT(IN),
OPTIONAL :: CDSTRING
86 INTEGER(KIND=JPIM),
INTENT(OUT),
OPTIONAL :: KCOUNT, KRECVTAG, KFROM
88 INTEGER(KIND=JPIM) :: IRECV_STATUS(mpi_status_size)
89 INTEGER(KIND=JPIM) :: ICOMM,ITAG,ISOURCE,IERROR
90 LOGICAL :: LLWAIT,LLABORT=.true.
91 INTEGER(KIND=JPIM) :: ITID
92 itid = oml_my_thread()
94 & cdmessage=
'MPL_PROBE: MPL NOT INITIALISED ',ldabort=llabort)
96 IF(
PRESENT(kcomm))
THEN 101 IF(
PRESENT(ksource))
THEN 104 isource=mpi_any_source
106 IF(
PRESENT(ktag))
THEN 112 IF(
PRESENT(ldwait))
THEN 119 CALL mpi_probe(isource,itag,icomm,irecv_status,ierror)
120 IF (ierror == 0)
THEN 121 IF (
PRESENT (kcount))
CALL mpi_get_count (irecv_status, mpi_character, kcount, ierror)
122 IF (
PRESENT (krecvtag)) krecvtag = irecv_status(mpi_tag)
123 IF (
PRESENT (kfrom)) kfrom = irecv_status(mpi_source)+1
126 IF(
PRESENT(ldflag))
THEN 127 CALL mpi_iprobe(isource,itag,icomm,ldflag,irecv_status,ierror)
128 IF (ierror == 0 .AND. ldflag)
THEN 129 IF (
PRESENT (kcount))
CALL mpi_get_count (irecv_status, mpi_character, kcount, ierror)
130 IF (
PRESENT (krecvtag)) krecvtag = irecv_status(mpi_tag)
131 IF (
PRESENT (kfrom)) kfrom = irecv_status(mpi_source)+1
134 CALL mpl_message(ierror,
'MPL_PROBE: MUST PROVIDE LDFLAG ',cdstring, &
138 IF(
PRESENT(kerror))
THEN 141 IF(ierror /= 0 )
CALL mpl_message(ierror,
'MPL_PROBE',cdstring,ldabort=llabort)
subroutine, public mpl_message(KERROR, CDMESSAGE, CDSTRING, LDABORT)
integer(kind=jpim) mpl_numproc
subroutine, public mpl_probe(KSOURCE, KTAG, KCOMM, LDWAIT, LDFLAG, CDSTRING, KERROR, KCOUNT, KRECVTAG, KFROM)
integer(kind=jpim), dimension(:), allocatable mpl_comm_oml