74 #ifdef USE_8_BYTE_WORDS 76 mpi_waitall => mpi_waitall8, mpi_get_count => mpi_get_count8, &
80 REAL(KIND=JPRM) :: PBUF(:)
81 INTEGER(KIND=JPIM),
INTENT(IN) :: KREQUEST(:)
82 CHARACTER*(*),
INTENT(IN),
OPTIONAL :: CDSTRING
83 INTEGER(KIND=JPIM),
INTENT(OUT),
OPTIONAL :: KOUNT(
size(krequest))
84 INTEGER(KIND=JPIM),
INTENT(OUT),
OPTIONAL :: KERROR
85 INTEGER(KIND=JPIM) :: IWAITERR,ICOUNTERR,JL,IREQLEN,ICOUNT,IW
86 INTEGER(KIND=JPIM) :: IWAIT_STATUS(mpi_status_size,
size(krequest))
93 & cdmessage=
'MPL_WAIT: MPL NOT INITIALISED ',ldabort=llabort)
95 ireqlen=
SIZE(krequest)
98 CALL mpi_wait(krequest(jl),iwait_status(1,jl),iw)
99 iwaiterr=max(iwaiterr,iw)
102 IF(
PRESENT(kount))
THEN 103 IF(
SIZE(kount) /= ireqlen)
THEN 105 & cdmessage=
'MPL_WAIT: KOUNT AND KREQUEST INCONSISTENT ', &
106 & cdstring=cdstring,ldabort=llabort)
109 CALL mpi_get_count(iwait_status(1,jl),int(mpi_real4),kount(jl),icounterr)
113 IF(
PRESENT(kerror))
THEN 114 kerror=iwaiterr+icounterr
115 ELSE IF(iwaiterr /= 0)
THEN 116 CALL mpl_message(iwaiterr,
'MPL_WAIT_WAITING',cdstring,ldabort=llabort)
117 ELSE IF(icounterr /= 0)
THEN 118 CALL mpl_message(icounterr,
'MPL_WAIT_COUNT',cdstring,ldabort=llabort)
128 #ifdef USE_8_BYTE_WORDS 130 mpi_waitall => mpi_waitall8, mpi_get_count => mpi_get_count8
133 REAL(KIND=JPRM) :: PBUF(:)
134 INTEGER(KIND=JPIM),
INTENT(IN) :: KREQUEST
135 CHARACTER*(*),
INTENT(IN),
OPTIONAL :: CDSTRING
136 INTEGER(KIND=JPIM),
INTENT(OUT),
OPTIONAL :: KOUNT
137 INTEGER(KIND=JPIM),
INTENT(OUT),
OPTIONAL :: KERROR
138 INTEGER(KIND=JPIM) :: IWAITERR,ICOUNTERR,JL,IREQLEN,ICOUNT
139 INTEGER(KIND=JPIM) :: IWAIT_STATUS(mpi_status_size)
146 & cdmessage=
'MPL_WAIT: MPL NOT INITIALISED ',ldabort=llabort)
148 CALL mpi_wait(krequest,iwait_status,iwaiterr)
150 IF(
PRESENT(kount))
THEN 151 CALL mpi_get_count(iwait_status(1),int(mpi_real4),kount,icounterr)
154 IF(
PRESENT(kerror))
THEN 155 kerror=iwaiterr+icounterr
156 ELSE IF(iwaiterr /= 0)
THEN 157 CALL mpl_message(iwaiterr,
'MPL_WAIT_WAITING',cdstring,ldabort=llabort)
158 ELSE IF(icounterr /= 0)
THEN 159 CALL mpl_message(icounterr,
'MPL_WAIT_COUNT',cdstring,ldabort=llabort)
169 #ifdef USE_8_BYTE_WORDS 171 mpi_waitall => mpi_waitall8, mpi_get_count => mpi_get_count8, &
172 mpi_wait => mpi_wait8
175 REAL(KIND=JPRD) :: PBUF(:)
176 INTEGER(KIND=JPIM),
INTENT(IN) :: KREQUEST(:)
177 CHARACTER*(*),
INTENT(IN),
OPTIONAL :: CDSTRING
178 INTEGER(KIND=JPIM),
INTENT(OUT),
OPTIONAL :: KOUNT(
size(krequest))
179 INTEGER(KIND=JPIM),
INTENT(OUT),
OPTIONAL :: KERROR
180 INTEGER(KIND=JPIM) :: IWAITERR,ICOUNTERR,JL,IREQLEN,ICOUNT,IW
181 INTEGER(KIND=JPIM) :: IWAIT_STATUS(mpi_status_size,
size(krequest))
188 & cdmessage=
'MPL_WAIT: MPL NOT INITIALISED ',ldabort=llabort)
190 ireqlen=
SIZE(krequest)
193 CALL mpi_wait(krequest(jl),iwait_status(1,jl),iw)
194 iwaiterr=max(iwaiterr,iw)
197 IF(
PRESENT(kount))
THEN 198 IF(
SIZE(kount) /= ireqlen)
THEN 200 & cdmessage=
'MPL_WAIT: KOUNT AND KREQUEST INCONSISTENT ', &
201 & cdstring=cdstring,ldabort=llabort)
204 CALL mpi_get_count(iwait_status(1,jl),int(mpi_real8),kount(jl),icounterr)
208 IF(
PRESENT(kerror))
THEN 209 kerror=iwaiterr+icounterr
210 ELSE IF(iwaiterr /= 0)
THEN 211 CALL mpl_message(iwaiterr,
'MPL_WAIT_WAITING',cdstring,ldabort=llabort)
212 ELSE IF(icounterr /= 0)
THEN 213 CALL mpl_message(icounterr,
'MPL_WAIT_COUNT',cdstring,ldabort=llabort)
223 #ifdef USE_8_BYTE_WORDS 225 mpi_waitall => mpi_waitall8, mpi_get_count => mpi_get_count8
228 REAL(KIND=JPRD) :: PBUF(:)
229 INTEGER(KIND=JPIM),
INTENT(IN) :: KREQUEST
230 CHARACTER*(*),
INTENT(IN),
OPTIONAL :: CDSTRING
231 INTEGER(KIND=JPIM),
INTENT(OUT),
OPTIONAL :: KOUNT
232 INTEGER(KIND=JPIM),
INTENT(OUT),
OPTIONAL :: KERROR
233 INTEGER(KIND=JPIM) :: IWAITERR,ICOUNTERR,JL,ICOUNT
234 INTEGER(KIND=JPIM) :: IWAIT_STATUS(mpi_status_size)
241 & cdmessage=
'MPL_WAIT: MPL NOT INITIALISED ',ldabort=llabort)
243 CALL mpi_wait(krequest,iwait_status,iwaiterr)
245 IF(
PRESENT(kount))
THEN 246 CALL mpi_get_count(iwait_status(1),int(mpi_real8),kount,icounterr)
249 IF(
PRESENT(kerror))
THEN 250 kerror=iwaiterr+icounterr
251 ELSE IF(iwaiterr /= 0)
THEN 252 CALL mpl_message(iwaiterr,
'MPL_WAIT_WAITING',cdstring,ldabort=llabort)
253 ELSE IF(icounterr /= 0)
THEN 254 CALL mpl_message(icounterr,
'MPL_WAIT_COUNT',cdstring,ldabort=llabort)
261 SUBROUTINE mpl_waits_int(KBUF,KREQUEST,KOUNT,KERROR,CDSTRING)
264 #ifdef USE_8_BYTE_WORDS 266 mpi_waitall => mpi_waitall8, mpi_get_count => mpi_get_count8, &
267 mpi_wait => mpi_wait8
270 INTEGER(KIND=JPIM) :: KBUF(:)
271 INTEGER(KIND=JPIM),
INTENT(IN) :: KREQUEST(:)
272 CHARACTER*(*),
INTENT(IN),
OPTIONAL :: CDSTRING
273 INTEGER(KIND=JPIM),
INTENT(OUT),
OPTIONAL :: KOUNT(
size(krequest))
274 INTEGER(KIND=JPIM),
INTENT(OUT),
OPTIONAL :: KERROR
275 INTEGER(KIND=JPIM) :: IWAITERR,ICOUNTERR,JL,IREQLEN,ICOUNT,IW
276 INTEGER(KIND=JPIM) :: IWAIT_STATUS(mpi_status_size,
size(krequest))
283 & cdmessage=
'MPL_WAIT: MPL NOT INITIALISED ',ldabort=llabort)
285 ireqlen=
SIZE(krequest)
288 CALL mpi_wait(krequest(jl),iwait_status(1,jl),iw)
289 iwaiterr=max(iwaiterr,iw)
292 IF(
PRESENT(kount))
THEN 293 IF(
SIZE(kount) /= ireqlen)
THEN 295 & cdmessage=
'MPL_WAIT: KOUNT AND KREQUEST INCONSISTENT ', &
296 & cdstring=cdstring,ldabort=llabort)
299 CALL mpi_get_count(iwait_status(1,jl),int(mpi_integer),kount(jl),icounterr)
303 IF(
PRESENT(kerror))
THEN 304 kerror=iwaiterr+icounterr
305 ELSE IF(iwaiterr /= 0)
THEN 306 CALL mpl_message(iwaiterr,
'MPL_WAIT_WAITING',cdstring,ldabort=llabort)
307 ELSE IF(icounterr /= 0)
THEN 308 CALL mpl_message(icounterr,
'MPL_WAIT_COUNT',cdstring,ldabort=llabort)
315 SUBROUTINE mpl_wait1_int(KBUF,KREQUEST,KOUNT,KERROR,CDSTRING)
318 #ifdef USE_8_BYTE_WORDS 320 mpi_waitall => mpi_waitall8, mpi_get_count => mpi_get_count8
323 INTEGER(KIND=JPIM) :: KBUF(:)
324 INTEGER(KIND=JPIM),
INTENT(IN) :: KREQUEST
325 CHARACTER*(*),
INTENT(IN),
OPTIONAL :: CDSTRING
326 INTEGER(KIND=JPIM),
INTENT(OUT),
OPTIONAL :: KOUNT
327 INTEGER(KIND=JPIM),
INTENT(OUT),
OPTIONAL :: KERROR
328 INTEGER(KIND=JPIM) :: IWAITERR,ICOUNTERR,JL,IREQLEN,ICOUNT
329 INTEGER(KIND=JPIM) :: IWAIT_STATUS(mpi_status_size)
336 & cdmessage=
'MPL_WAIT: MPL NOT INITIALISED ',ldabort=llabort)
338 CALL mpi_wait(krequest,iwait_status,iwaiterr)
340 IF(
PRESENT(kount))
THEN 341 CALL mpi_get_count(iwait_status(1),int(mpi_integer),kount,icounterr)
344 IF(
PRESENT(kerror))
THEN 345 kerror=iwaiterr+icounterr
346 ELSE IF(iwaiterr /= 0)
THEN 347 CALL mpl_message(iwaiterr,
'MPL_WAIT_WAITING',cdstring,ldabort=llabort)
348 ELSE IF(icounterr /= 0)
THEN 349 CALL mpl_message(icounterr,
'MPL_WAIT_COUNT',cdstring,ldabort=llabort)
358 #ifdef USE_8_BYTE_WORDS 360 mpi_waitall => mpi_waitall8, mpi_get_count => mpi_get_count8
363 INTEGER(KIND=JPIB) :: KBUF(:)
364 INTEGER(KIND=JPIM),
INTENT(IN) :: KREQUEST
365 CHARACTER*(*),
INTENT(IN),
OPTIONAL :: CDSTRING
366 INTEGER(KIND=JPIM),
INTENT(OUT),
OPTIONAL :: KOUNT
367 INTEGER(KIND=JPIM),
INTENT(OUT),
OPTIONAL :: KERROR
368 INTEGER(KIND=JPIM) :: IWAITERR,ICOUNTERR,JL,IREQLEN,ICOUNT
369 INTEGER(KIND=JPIM) :: IWAIT_STATUS(mpi_status_size)
376 & cdmessage=
'MPL_WAIT: MPL NOT INITIALISED ',ldabort=llabort)
378 CALL mpi_wait(krequest,iwait_status,iwaiterr)
380 IF(
PRESENT(kount))
THEN 381 CALL mpi_get_count(iwait_status(1),int(mpi_integer8),kount,icounterr)
384 IF(
PRESENT(kerror))
THEN 385 kerror=iwaiterr+icounterr
386 ELSE IF(iwaiterr /= 0)
THEN 387 CALL mpl_message(iwaiterr,
'MPL_WAIT_WAITING',cdstring,ldabort=llabort)
388 ELSE IF(icounterr /= 0)
THEN 389 CALL mpl_message(icounterr,
'MPL_WAIT_COUNT',cdstring,ldabort=llabort)
399 #ifdef USE_8_BYTE_WORDS 401 mpi_waitall => mpi_waitall8, mpi_get_count => mpi_get_count8, &
402 mpi_wait => mpi_wait8
405 INTEGER(KIND=JPIM) :: KBUF(:,:)
406 INTEGER(KIND=JPIM),
INTENT(IN) :: KREQUEST(:)
407 CHARACTER*(*),
INTENT(IN),
OPTIONAL :: CDSTRING
408 INTEGER(KIND=JPIM),
INTENT(OUT),
OPTIONAL :: KOUNT(
size(krequest))
409 INTEGER(KIND=JPIM),
INTENT(OUT),
OPTIONAL :: KERROR
410 INTEGER(KIND=JPIM) :: IWAITERR,ICOUNTERR,JL,IREQLEN,ICOUNT,IW
411 INTEGER(KIND=JPIM) :: IWAIT_STATUS(mpi_status_size,
size(krequest))
418 & cdmessage=
'MPL_WAIT: MPL NOT INITIALISED ',ldabort=llabort)
420 ireqlen=
SIZE(krequest)
423 CALL mpi_wait(krequest(jl),iwait_status(1,jl),iw)
424 iwaiterr=max(iwaiterr,iw)
427 IF(
PRESENT(kount))
THEN 428 IF(
SIZE(kount) /= ireqlen)
THEN 430 & cdmessage=
'MPL_WAIT: KOUNT AND KREQUEST INCONSISTENT ', &
431 & cdstring=cdstring,ldabort=llabort)
434 CALL mpi_get_count(iwait_status(1,jl),int(mpi_integer),kount(jl),icounterr)
438 IF(
PRESENT(kerror))
THEN 439 kerror=iwaiterr+icounterr
440 ELSE IF(iwaiterr /= 0)
THEN 441 CALL mpl_message(iwaiterr,
'MPL_WAIT_WAITING',cdstring,ldabort=llabort)
442 ELSE IF(icounterr /= 0)
THEN 443 CALL mpl_message(icounterr,
'MPL_WAIT_COUNT',cdstring,ldabort=llabort)
453 #ifdef USE_8_BYTE_WORDS 455 mpi_waitall => mpi_waitall8, mpi_get_count => mpi_get_count8
458 INTEGER(KIND=JPIM) :: KBUF(:,:)
459 INTEGER(KIND=JPIM),
INTENT(IN) :: KREQUEST
460 CHARACTER*(*),
INTENT(IN),
OPTIONAL :: CDSTRING
461 INTEGER(KIND=JPIM),
INTENT(OUT),
OPTIONAL :: KOUNT
462 INTEGER(KIND=JPIM),
INTENT(OUT),
OPTIONAL :: KERROR
463 INTEGER(KIND=JPIM) :: IWAITERR,ICOUNTERR,JL,IREQLEN,ICOUNT
464 INTEGER(KIND=JPIM) :: IWAIT_STATUS(mpi_status_size)
471 & cdmessage=
'MPL_WAIT: MPL NOT INITIALISED ',ldabort=llabort)
473 CALL mpi_wait(krequest,iwait_status,iwaiterr)
475 IF(
PRESENT(kount))
THEN 476 CALL mpi_get_count(iwait_status(1),int(mpi_integer),kount,icounterr)
479 IF(
PRESENT(kerror))
THEN 480 kerror=iwaiterr+icounterr
481 ELSE IF(iwaiterr /= 0)
THEN 482 CALL mpl_message(iwaiterr,
'MPL_WAIT_WAITING',cdstring,ldabort=llabort)
483 ELSE IF(icounterr /= 0)
THEN 484 CALL mpl_message(icounterr,
'MPL_WAIT_COUNT',cdstring,ldabort=llabort)
subroutine mpl_waits_int(KBUF, KREQUEST, KOUNT, KERROR, CDSTRING)
subroutine, public mpl_message(KERROR, CDMESSAGE, CDSTRING, LDABORT)
integer(kind=jpim) mpl_numproc
subroutine mpl_waits_real4(PBUF, KREQUEST, KOUNT, KERROR, CDSTRING)
subroutine mpl_wait1_int2(KBUF, KREQUEST, KOUNT, KERROR, CDSTRING)
subroutine mpl_wait1_int8(KBUF, KREQUEST, KOUNT, KERROR, CDSTRING)
subroutine mpl_wait1_int(KBUF, KREQUEST, KOUNT, KERROR, CDSTRING)
subroutine mpl_wait1_real4(PBUF, KREQUEST, KOUNT, KERROR, CDSTRING)
subroutine mpl_waits_int2(KBUF, KREQUEST, KOUNT, KERROR, CDSTRING)
subroutine mpl_waits_real8(PBUF, KREQUEST, KOUNT, KERROR, CDSTRING)
subroutine mpl_wait1_real8(PBUF, KREQUEST, KOUNT, KERROR, CDSTRING)