89 SUBROUTINE mpl_send_real4(PBUF,KDEST,KTAG,KCOMM,KMP_TYPE,KERROR,KREQUEST,CDSTRING)
92 #ifdef USE_8_BYTE_WORDS 94 mpi_send => mpi_send8, mpi_bsend => mpi_bsend8, mpi_isend => mpi_isend8
99 REAL(KIND=JPRM) :: PBUF(:)
100 INTEGER(KIND=JPIM),
INTENT(IN) :: KDEST,KTAG
101 INTEGER(KIND=JPIM),
INTENT(IN),
OPTIONAL :: KCOMM,KMP_TYPE
102 INTEGER(KIND=JPIM),
INTENT(OUT),
OPTIONAL :: KREQUEST,KERROR
103 CHARACTER*(*),
INTENT(IN),
OPTIONAL :: CDSTRING
105 INTEGER(KIND=JPIM) :: ICOUNT,IMP_TYPE,ICOMM,IERROR
106 LOGICAL :: LLABORT=.true.
107 INTEGER(KIND=JPIM) :: ITID
108 REAL(KIND=JPRM) :: ZDUM(1:0)
109 itid = oml_my_thread()
112 & cdmessage=
'MPL_SEND: MPL NOT INITIALISED ',ldabort=llabort)
114 IF(
PRESENT(kmp_type))
THEN 119 IF(
PRESENT(kcomm))
THEN 124 IF((kdest < 1 .OR. kdest >
mpl_nproc(icomm)) .AND. (.NOT.
PRESENT (kcomm)))
THEN 126 CALL mpl_message(cdmessage=
'MPL_SEND:ILLEGAL KDEST ',ldabort=llabort)
132 IF( (loc(pbuf(ubound(pbuf,1))) - loc(pbuf(lbound(pbuf,1)))) /= 4_jpib*(icount - 1) )
THEN 133 CALL mpl_message(cdmessage=
'MPL_SEND: BUFFER NOT CONTIGUOUS ',ldabort=llabort)
142 IF (icount == 0)
THEN 144 CALL mpi_send(zdum,icount,int(mpi_real4),kdest-1,ktag,icomm,ierror)
146 CALL mpi_bsend(zdum,icount,int(mpi_real4),kdest-1,ktag,icomm,ierror)
148 CALL mpi_isend(zdum,icount,int(mpi_real4),kdest-1,ktag,icomm, &
151 CALL mpi_ibsend(zdum,icount,int(mpi_real4),kdest-1,ktag,icomm, &
154 CALL mpi_ssend(zdum,icount,int(mpi_real4),kdest-1,ktag,icomm,ierror)
156 IF(
PRESENT(kerror))
THEN 159 CALL mpl_message(kerror,
'MPL_SEND',
' INVALID METHOD',ldabort=llabort)
164 CALL mpi_send(pbuf(1),icount,int(mpi_real4),kdest-1,ktag,icomm,ierror)
166 CALL mpi_bsend(pbuf(1),icount,int(mpi_real4),kdest-1,ktag,icomm,ierror)
168 CALL mpi_isend(pbuf(1),icount,int(mpi_real4),kdest-1,ktag,icomm, &
171 CALL mpi_ibsend(pbuf(1),icount,int(mpi_real4),kdest-1,ktag,icomm, &
174 CALL mpi_ssend(pbuf(1),icount,int(mpi_real4),kdest-1,ktag,icomm,ierror)
176 IF(
PRESENT(kerror))
THEN 179 CALL mpl_message(kerror,
'MPL_SEND',
' INVALID METHOD',ldabort=llabort)
184 WRITE(
mpl_unit,
'(A,5I8)')
' MPL_SEND ',icount,imp_type,kdest,ktag,icomm
186 IF(
PRESENT(kerror))
THEN 189 IF(ierror /= 0 )
CALL mpl_message(ierror,
'MPL_SEND',cdstring,ldabort=llabort)
194 SUBROUTINE mpl_send_real8(PBUF,KDEST,KTAG,KCOMM,KMP_TYPE,KERROR,KREQUEST,CDSTRING)
196 #ifdef USE_8_BYTE_WORDS 198 mpi_send => mpi_send8, mpi_bsend => mpi_bsend8, mpi_isend => mpi_isend8
202 REAL(KIND=JPRD) :: PBUF(:)
203 INTEGER(KIND=JPIM),
INTENT(IN) :: KDEST,KTAG
204 INTEGER(KIND=JPIM),
INTENT(IN),
OPTIONAL :: KCOMM,KMP_TYPE
205 INTEGER(KIND=JPIM),
INTENT(OUT),
OPTIONAL :: KREQUEST,KERROR
206 CHARACTER*(*),
INTENT(IN),
OPTIONAL :: CDSTRING
209 INTEGER(KIND=JPIM) :: ICOUNT,IMP_TYPE,ICOMM,IERROR
210 LOGICAL :: LLABORT=.true.
211 INTEGER(KIND=JPIM) :: ITID
212 REAL(KIND=JPRD) :: ZDUM(1:0)
213 itid = oml_my_thread()
216 & cdmessage=
'MPL_SEND: MPL NOT INITIALISED ',ldabort=llabort)
218 IF(
PRESENT(kmp_type))
THEN 223 IF(
PRESENT(kcomm))
THEN 228 IF((kdest < 1 .OR. kdest >
mpl_nproc(icomm)) .AND. (.NOT.
PRESENT (kcomm)))
THEN 230 CALL mpl_message(cdmessage=
'MPL_SEND:ILLEGAL KDEST ',ldabort=llabort)
236 IF( (loc(pbuf(ubound(pbuf,1))) - loc(pbuf(lbound(pbuf,1)))) /= 8_jpib*(icount - 1) )
THEN 237 CALL mpl_message(cdmessage=
'MPL_SEND: BUFFER NOT CONTIGUOUS ',ldabort=llabort)
246 IF (icount == 0)
THEN 248 CALL mpi_send(zdum,icount,int(mpi_real8),kdest-1,ktag,icomm,ierror)
250 CALL mpi_bsend(zdum,icount,int(mpi_real8),kdest-1,ktag,icomm,ierror)
252 CALL mpi_isend(zdum,icount,int(mpi_real8),kdest-1,ktag,icomm, &
255 CALL mpi_ibsend(zdum,icount,int(mpi_real8),kdest-1,ktag,icomm, &
258 CALL mpi_ssend(zdum,icount,int(mpi_real8),kdest-1,ktag,icomm,ierror)
260 IF(
PRESENT(kerror))
THEN 263 CALL mpl_message(kerror,
'MPL_SEND',
' INVALID METHOD',ldabort=llabort)
268 CALL mpi_send(pbuf(1),icount,int(mpi_real8),kdest-1,ktag,icomm,ierror)
270 CALL mpi_bsend(pbuf(1),icount,int(mpi_real8),kdest-1,ktag,icomm,ierror)
272 CALL mpi_isend(pbuf(1),icount,int(mpi_real8),kdest-1,ktag,icomm, &
275 CALL mpi_ibsend(pbuf(1),icount,int(mpi_real8),kdest-1,ktag,icomm, &
278 CALL mpi_ssend(pbuf(1),icount,int(mpi_real8),kdest-1,ktag,icomm,ierror)
280 IF(
PRESENT(kerror))
THEN 283 CALL mpl_message(kerror,
'MPL_SEND',
' INVALID METHOD',ldabort=llabort)
288 WRITE(
mpl_unit,
'(A,5I8)')
' MPL_SEND ',icount,imp_type,kdest,ktag,icomm
290 IF(
PRESENT(kerror))
THEN 293 IF(ierror /= 0 )
CALL mpl_message(ierror,
'MPL_SEND',cdstring,ldabort=llabort)
298 SUBROUTINE mpl_send_int(KBUF,KDEST,KTAG,KCOMM,KMP_TYPE,KERROR,KREQUEST,CDSTRING)
300 #ifdef USE_8_BYTE_WORDS 302 mpi_send => mpi_send8, mpi_bsend => mpi_bsend8, mpi_isend => mpi_isend8
305 INTEGER(KIND=JPIM) :: KBUF(:)
306 INTEGER(KIND=JPIM),
INTENT(IN) :: KDEST,KTAG
307 INTEGER(KIND=JPIM),
INTENT(IN),
OPTIONAL :: KCOMM,KMP_TYPE
308 INTEGER(KIND=JPIM),
INTENT(OUT),
OPTIONAL :: KREQUEST,KERROR
309 CHARACTER*(*),
INTENT(IN),
OPTIONAL :: CDSTRING
311 INTEGER(KIND=JPIM) :: ICOUNT,IMP_TYPE,ICOMM,IERROR
312 LOGICAL :: LLABORT=.true.
313 INTEGER(KIND=JPIM) :: ITID,IDUM(1:0)
314 itid = oml_my_thread()
317 & cdmessage=
'MPL_SEND: MPL NOT INITIALISED ',ldabort=llabort)
319 IF(
PRESENT(kmp_type))
THEN 324 IF(
PRESENT(kcomm))
THEN 329 IF((kdest < 1 .OR. kdest >
mpl_nproc(icomm)) .AND. (.NOT.
PRESENT (kcomm)))
THEN 331 CALL mpl_message(cdmessage=
'MPL_SEND:ILLEGAL KDEST ',ldabort=llabort)
337 IF( (loc(kbuf(ubound(kbuf,1)))-loc(kbuf(lbound(kbuf,1)))) /= 4_jpib*(icount - 1) )
THEN 338 CALL mpl_message(cdmessage=
'MPL_SEND: BUFFER NOT CONTIGUOUS ',ldabort=llabort)
347 IF (icount == 0)
THEN 349 CALL mpi_send(idum,icount,int(mpi_integer),kdest-1,ktag,icomm,ierror)
351 CALL mpi_bsend(idum,icount,int(mpi_integer),kdest-1,ktag,icomm,ierror)
353 CALL mpi_isend(idum,icount,int(mpi_integer),kdest-1,ktag,icomm, &
356 CALL mpi_ibsend(idum,icount,int(mpi_integer),kdest-1,ktag,icomm, &
359 CALL mpi_ssend(idum,icount,int(mpi_integer),kdest-1,ktag,icomm,ierror)
361 IF(
PRESENT(kerror))
THEN 364 CALL mpl_message(kerror,
'MPL_SEND',
' INVALID METHOD',ldabort=llabort)
369 CALL mpi_send(kbuf(1),icount,int(mpi_integer),kdest-1,ktag,icomm,ierror)
371 CALL mpi_bsend(kbuf(1),icount,int(mpi_integer),kdest-1,ktag,icomm,ierror)
373 CALL mpi_isend(kbuf(1),icount,int(mpi_integer),kdest-1,ktag,icomm, &
376 CALL mpi_ibsend(kbuf(1),icount,int(mpi_integer),kdest-1,ktag,icomm, &
379 CALL mpi_ssend(kbuf(1),icount,int(mpi_integer),kdest-1,ktag,icomm,ierror)
381 IF(
PRESENT(kerror))
THEN 384 CALL mpl_message(kerror,
'MPL_SEND',
' INVALID METHOD',ldabort=llabort)
389 WRITE(
mpl_unit,
'(A,5I8)')
' MPL_SEND ',icount,imp_type,kdest,ktag,icomm
391 IF(
PRESENT(kerror))
THEN 394 IF(ierror /= 0 )
CALL mpl_message(ierror,
'MPL_SEND',cdstring,ldabort=llabort)
399 SUBROUTINE mpl_send_int2(KBUF,KDEST,KTAG,KCOMM,KMP_TYPE,KERROR,KREQUEST,CDSTRING)
401 #ifdef USE_8_BYTE_WORDS 403 mpi_send => mpi_send8, mpi_bsend => mpi_bsend8, mpi_isend => mpi_isend8
406 INTEGER(KIND=JPIM) :: KBUF(:,:)
407 INTEGER(KIND=JPIM),
INTENT(IN) :: KDEST,KTAG
408 INTEGER(KIND=JPIM),
INTENT(IN),
OPTIONAL :: KCOMM,KMP_TYPE
409 INTEGER(KIND=JPIM),
INTENT(OUT),
OPTIONAL :: KREQUEST,KERROR
410 CHARACTER*(*),
INTENT(IN),
OPTIONAL :: CDSTRING
412 INTEGER(KIND=JPIM) :: ICOUNT,IMP_TYPE,ICOMM,IERROR
413 LOGICAL :: LLABORT=.true.
414 INTEGER(KIND=JPIM) :: ITID,IDUM(1:0)
415 itid = oml_my_thread()
418 & cdmessage=
'MPL_SEND: MPL NOT INITIALISED ',ldabort=llabort)
420 IF(
PRESENT(kmp_type))
THEN 425 IF(
PRESENT(kcomm))
THEN 430 IF((kdest < 1 .OR. kdest >
mpl_nproc(icomm)) .AND. (.NOT.
PRESENT (kcomm)))
THEN 432 CALL mpl_message(cdmessage=
'MPL_SEND:ILLEGAL KDEST ',ldabort=llabort)
438 IF( (loc(kbuf(ubound(kbuf,1),ubound(kbuf,2))) - &
439 & loc(kbuf(lbound(kbuf,1),lbound(kbuf,2)))) /= 4_jpib*(icount - 1) )
THEN 440 CALL mpl_message(cdmessage=
'MPL_SEND: BUFFER NOT CONTIGUOUS ',ldabort=llabort)
449 IF (icount == 0)
THEN 451 CALL mpi_send(idum,icount,int(mpi_integer),kdest-1,ktag,icomm,ierror)
453 CALL mpi_bsend(idum,icount,int(mpi_integer),kdest-1,ktag,icomm,ierror)
455 CALL mpi_isend(idum,icount,int(mpi_integer),kdest-1,ktag,icomm, &
458 CALL mpi_ibsend(idum,icount,int(mpi_integer),kdest-1,ktag,icomm, &
461 CALL mpi_ssend(idum,icount,int(mpi_integer),kdest-1,ktag,icomm,ierror)
463 IF(
PRESENT(kerror))
THEN 466 CALL mpl_message(kerror,
'MPL_SEND',
' INVALID METHOD',ldabort=llabort)
471 CALL mpi_send(kbuf(1,1),icount,int(mpi_integer),kdest-1,ktag,icomm,ierror)
473 CALL mpi_bsend(kbuf(1,1),icount,int(mpi_integer),kdest-1,ktag,icomm,ierror)
475 CALL mpi_isend(kbuf(1,1),icount,int(mpi_integer),kdest-1,ktag,icomm, &
478 CALL mpi_ibsend(kbuf(1,1),icount,int(mpi_integer),kdest-1,ktag,icomm, &
481 CALL mpi_ssend(kbuf(1,1),icount,int(mpi_integer),kdest-1,ktag,icomm,ierror)
483 IF(
PRESENT(kerror))
THEN 486 CALL mpl_message(kerror,
'MPL_SEND',
' INVALID METHOD',ldabort=llabort)
491 WRITE(
mpl_unit,
'(A,5I8)')
' MPL_SEND ',icount,imp_type,kdest,ktag,icomm
493 IF(
PRESENT(kerror))
THEN 496 IF(ierror /= 0 )
CALL mpl_message(ierror,
'MPL_SEND',cdstring,ldabort=llabort)
501 SUBROUTINE mpl_send_int8(KBUF,KDEST,KTAG,KCOMM,KMP_TYPE,KERROR,KREQUEST,CDSTRING)
503 #ifdef USE_8_BYTE_WORDS 505 mpi_send => mpi_send8, mpi_bsend => mpi_bsend8, mpi_isend => mpi_isend8
508 INTEGER(KIND=JPIB) :: KBUF(:)
509 INTEGER(KIND=JPIM),
INTENT(IN) :: KDEST,KTAG
510 INTEGER(KIND=JPIM),
INTENT(IN),
OPTIONAL :: KCOMM,KMP_TYPE
511 INTEGER(KIND=JPIM),
INTENT(OUT),
OPTIONAL :: KREQUEST,KERROR
512 CHARACTER*(*),
INTENT(IN),
OPTIONAL :: CDSTRING
514 INTEGER(KIND=JPIM) :: ICOUNT,IMP_TYPE,ICOMM,IERROR
515 LOGICAL :: LLABORT=.true.
516 INTEGER(KIND=JPIM) :: ITID
517 INTEGER(KIND=JPIB) :: IDUM(1:0)
518 itid = oml_my_thread()
521 & cdmessage=
'MPL_SEND: MPL NOT INITIALISED ',ldabort=llabort)
523 IF(
PRESENT(kmp_type))
THEN 528 IF(
PRESENT(kcomm))
THEN 533 IF((kdest < 1 .OR. kdest >
mpl_nproc(icomm)) .AND. (.NOT.
PRESENT (kcomm)))
THEN 535 CALL mpl_message(cdmessage=
'MPL_SEND:ILLEGAL KDEST ',ldabort=llabort)
541 IF( (loc(kbuf(ubound(kbuf,1))) - loc(kbuf(lbound(kbuf,1)))) /= 8_jpib*(icount - 1) )
THEN 542 CALL mpl_message(cdmessage=
'MPL_SEND: BUFFER NOT CONTIGUOUS ',ldabort=llabort)
550 IF (icount == 0)
THEN 552 CALL mpi_send(idum,icount,int(mpi_integer8),kdest-1,ktag,icomm,ierror)
554 CALL mpi_bsend(idum,icount,int(mpi_integer8),kdest-1,ktag,icomm,ierror)
556 CALL mpi_isend(idum,icount,int(mpi_integer8),kdest-1,ktag,icomm, &
559 CALL mpi_ibsend(idum,icount,int(mpi_integer8),kdest-1,ktag,icomm, &
562 CALL mpi_ssend(idum,icount,int(mpi_integer8),kdest-1,ktag,icomm,ierror)
564 IF(
PRESENT(kerror))
THEN 567 CALL mpl_message(kerror,
'MPL_SEND',
' INVALID METHOD',ldabort=llabort)
572 CALL mpi_send(kbuf(1),icount,int(mpi_integer8),kdest-1,ktag,icomm,ierror)
574 CALL mpi_bsend(kbuf(1),icount,int(mpi_integer8),kdest-1,ktag,icomm,ierror)
576 CALL mpi_isend(kbuf(1),icount,int(mpi_integer8),kdest-1,ktag,icomm, &
579 CALL mpi_ibsend(kbuf(1),icount,int(mpi_integer8),kdest-1,ktag,icomm, &
582 CALL mpi_ssend(kbuf(1),icount,int(mpi_integer8),kdest-1,ktag,icomm,ierror)
584 IF(
PRESENT(kerror))
THEN 587 CALL mpl_message(kerror,
'MPL_SEND',
' INVALID METHOD',ldabort=llabort)
592 WRITE(
mpl_unit,
'(A,5I8)')
' MPL_SEND ',icount,imp_type,kdest,ktag,icomm
594 IF(
PRESENT(kerror))
THEN 597 IF(ierror /= 0 )
CALL mpl_message(ierror,
'MPL_SEND',cdstring,ldabort=llabort)
604 #ifdef USE_8_BYTE_WORDS 606 mpi_send => mpi_send8, mpi_bsend => mpi_bsend8, mpi_isend => mpi_isend8
609 INTEGER(KIND=JPIM) :: KINT
610 INTEGER(KIND=JPIM),
INTENT(IN) :: KDEST,KTAG
611 INTEGER(KIND=JPIM),
INTENT(IN),
OPTIONAL :: KCOMM,KMP_TYPE
612 INTEGER(KIND=JPIM),
INTENT(OUT),
OPTIONAL :: KREQUEST,KERROR
613 CHARACTER*(*),
INTENT(IN),
OPTIONAL :: CDSTRING
615 INTEGER(KIND=JPIM) :: ICOUNT,IMP_TYPE,ICOMM,IERROR
616 LOGICAL :: LLABORT=.true.
617 INTEGER(KIND=JPIM) :: ITID
618 itid = oml_my_thread()
621 & cdmessage=
'MPL_SEND: MPL NOT INITIALISED ',ldabort=llabort)
623 IF(
PRESENT(kmp_type))
THEN 628 IF(
PRESENT(kcomm))
THEN 633 IF((kdest < 1 .OR. kdest >
mpl_nproc(icomm)) .AND. (.NOT.
PRESENT (kcomm)))
THEN 635 CALL mpl_message(cdmessage=
'MPL_SEND:ILLEGAL KDEST ',ldabort=llabort)
645 CALL mpi_send(kint,icount,int(mpi_integer),kdest-1,ktag,icomm,ierror)
647 CALL mpi_bsend(kint,icount,int(mpi_integer),kdest-1,ktag,icomm,ierror)
649 CALL mpi_isend(kint,icount,int(mpi_integer),kdest-1,ktag,icomm, &
652 CALL mpi_ibsend(kint,icount,int(mpi_integer),kdest-1,ktag,icomm, &
655 CALL mpi_ssend(kint,icount,int(mpi_integer),kdest-1,ktag,icomm,ierror)
657 IF(
PRESENT(kerror))
THEN 660 CALL mpl_message(kerror,
'MPL_SEND',
' INVALID METHOD',ldabort=llabort)
664 WRITE(
mpl_unit,
'(A,5I8)')
' MPL_SEND ',icount,imp_type,kdest,ktag,icomm
666 IF(
PRESENT(kerror))
THEN 669 IF(ierror /= 0 )
CALL mpl_message(ierror,
'MPL_SEND',cdstring,ldabort=llabort)
674 SUBROUTINE mpl_send_real42(PBUF,KDEST,KTAG,KCOMM,KMP_TYPE,KERROR,KREQUEST,CDSTRING)
676 #ifdef USE_8_BYTE_WORDS 678 mpi_send => mpi_send8, mpi_bsend => mpi_bsend8, mpi_isend => mpi_isend8
682 REAL(KIND=JPRM) :: PBUF(:,:)
683 INTEGER(KIND=JPIM),
INTENT(IN) :: KDEST,KTAG
684 INTEGER(KIND=JPIM),
INTENT(IN),
OPTIONAL :: KCOMM,KMP_TYPE
685 INTEGER(KIND=JPIM),
INTENT(OUT),
OPTIONAL :: KREQUEST,KERROR
686 CHARACTER*(*),
INTENT(IN),
OPTIONAL :: CDSTRING
688 INTEGER(KIND=JPIM) :: ICOUNT,IMP_TYPE,ICOMM,IERROR
689 LOGICAL :: LLABORT=.true.
690 INTEGER(KIND=JPIM) :: ITID
691 REAL(KIND=JPRM) :: ZDUM(1:0)
692 itid = oml_my_thread()
695 & cdmessage=
'MPL_SEND: MPL NOT INITIALISED ',ldabort=llabort)
697 IF(
PRESENT(kmp_type))
THEN 702 IF(
PRESENT(kcomm))
THEN 707 IF((kdest < 1 .OR. kdest >
mpl_nproc(icomm)) .AND. (.NOT.
PRESENT (kcomm)))
THEN 709 CALL mpl_message(cdmessage=
'MPL_SEND:ILLEGAL KDEST ',ldabort=llabort)
715 IF( (loc(pbuf(ubound(pbuf,1),ubound(pbuf,2))) - &
716 & loc(pbuf(lbound(pbuf,1),lbound(pbuf,2)))) /= 4_jpib*(icount - 1) )
THEN 717 CALL mpl_message(cdmessage=
'MPL_SEND: BUFFER NOT CONTIGUOUS ',ldabort=llabort)
726 IF (icount == 0)
THEN 728 CALL mpi_send(zdum,icount,int(mpi_real4),kdest-1,ktag,icomm,ierror)
730 CALL mpi_bsend(zdum,icount,int(mpi_real4),kdest-1,ktag,icomm,ierror)
732 CALL mpi_isend(zdum,icount,int(mpi_real4),kdest-1,ktag,icomm, &
735 CALL mpi_ibsend(zdum,icount,int(mpi_real4),kdest-1,ktag,icomm, &
738 CALL mpi_ssend(zdum,icount,int(mpi_real4),kdest-1,ktag,icomm,ierror)
740 IF(
PRESENT(kerror))
THEN 743 CALL mpl_message(kerror,
'MPL_SEND',
' INVALID METHOD',ldabort=llabort)
748 CALL mpi_send(pbuf(1,1),icount,int(mpi_real4),kdest-1,ktag,icomm,ierror)
750 CALL mpi_bsend(pbuf(1,1),icount,int(mpi_real4),kdest-1,ktag,icomm,ierror)
752 CALL mpi_isend(pbuf(1,1),icount,int(mpi_real4),kdest-1,ktag,icomm, &
755 CALL mpi_ibsend(pbuf(1,1),icount,int(mpi_real4),kdest-1,ktag,icomm, &
758 CALL mpi_ssend(pbuf(1,1),icount,int(mpi_real4),kdest-1,ktag,icomm,ierror)
760 IF(
PRESENT(kerror))
THEN 763 CALL mpl_message(kerror,
'MPL_SEND',
' INVALID METHOD',ldabort=llabort)
768 WRITE(
mpl_unit,
'(A,5I8)')
' MPL_SEND ',icount,imp_type,kdest,ktag,icomm
770 IF(
PRESENT(kerror))
THEN 773 IF(ierror /= 0 )
CALL mpl_message(ierror,
'MPL_SEND',cdstring,ldabort=llabort)
778 SUBROUTINE mpl_send_real43(PBUF,KDEST,KTAG,KCOMM,KMP_TYPE,KERROR,KREQUEST,CDSTRING)
780 #ifdef USE_8_BYTE_WORDS 782 mpi_send => mpi_send8, mpi_bsend => mpi_bsend8, mpi_isend => mpi_isend8
786 REAL(KIND=JPRM) :: PBUF(:,:,:)
787 INTEGER(KIND=JPIM),
INTENT(IN) :: KDEST,KTAG
788 INTEGER(KIND=JPIM),
INTENT(IN),
OPTIONAL :: KCOMM,KMP_TYPE
789 INTEGER(KIND=JPIM),
INTENT(OUT),
OPTIONAL :: KREQUEST,KERROR
790 CHARACTER*(*),
INTENT(IN),
OPTIONAL :: CDSTRING
792 INTEGER(KIND=JPIM) :: ICOUNT,IMP_TYPE,ICOMM,IERROR
793 LOGICAL :: LLABORT=.true.
794 INTEGER(KIND=JPIM) :: ITID
795 itid = oml_my_thread()
798 & cdmessage=
'MPL_SEND: MPL NOT INITIALISED ',ldabort=llabort)
800 IF(
PRESENT(kmp_type))
THEN 805 IF(
PRESENT(kcomm))
THEN 810 IF(kdest < 1 .OR. kdest >
mpl_nproc(icomm).AND. (.NOT.
PRESENT (kcomm)))
THEN 812 CALL mpl_message(cdmessage=
'MPL_SEND:ILLEGAL KDEST ',ldabort=llabort)
822 IF( (loc(pbuf(ubound(pbuf,1),ubound(pbuf,2),ubound(pbuf,3))) - &
823 & loc(pbuf(lbound(pbuf,1),lbound(pbuf,2),lbound(pbuf,3)))) /= 4_jpib*(icount - 1) )
THEN 824 CALL mpl_message(cdmessage=
'MPL_SEND: BUFFER NOT CONTIGUOUS ',ldabort=llabort)
829 CALL mpi_send(pbuf,icount,int(mpi_real4),kdest-1,ktag,icomm,ierror)
831 CALL mpi_bsend(pbuf,icount,int(mpi_real4),kdest-1,ktag,icomm,ierror)
833 CALL mpi_isend(pbuf,icount,int(mpi_real4),kdest-1,ktag,icomm, &
836 CALL mpi_ibsend(pbuf,icount,int(mpi_real4),kdest-1,ktag,icomm, &
839 CALL mpi_ssend(pbuf,icount,int(mpi_real4),kdest-1,ktag,icomm,ierror)
841 IF(
PRESENT(kerror))
THEN 844 CALL mpl_message(kerror,
'MPL_SEND',
' INVALID METHOD',ldabort=llabort)
848 WRITE(
mpl_unit,
'(A,5I8)')
' MPL_SEND ',icount,imp_type,kdest,ktag,icomm
850 IF(
PRESENT(kerror))
THEN 853 IF(ierror /= 0 )
CALL mpl_message(ierror,
'MPL_SEND',cdstring,ldabort=llabort)
860 SUBROUTINE mpl_send_real82(PBUF,KDEST,KTAG,KCOMM,KMP_TYPE,KERROR,KREQUEST,CDSTRING)
862 #ifdef USE_8_BYTE_WORDS 864 mpi_send => mpi_send8, mpi_bsend => mpi_bsend8, mpi_isend => mpi_isend8
868 REAL(KIND=JPRD) :: PBUF(:,:)
869 INTEGER(KIND=JPIM),
INTENT(IN) :: KDEST,KTAG
870 INTEGER(KIND=JPIM),
INTENT(IN),
OPTIONAL :: KCOMM,KMP_TYPE
871 INTEGER(KIND=JPIM),
INTENT(OUT),
OPTIONAL :: KREQUEST,KERROR
872 CHARACTER*(*),
INTENT(IN),
OPTIONAL :: CDSTRING
874 INTEGER(KIND=JPIM) :: ICOUNT,IMP_TYPE,ICOMM,IERROR
875 LOGICAL :: LLABORT=.true.
876 INTEGER(KIND=JPIM) :: ITID
877 REAL(KIND=JPRD) :: ZDUM(1:0)
878 itid = oml_my_thread()
881 & cdmessage=
'MPL_SEND: MPL NOT INITIALISED ',ldabort=llabort)
883 IF(
PRESENT(kmp_type))
THEN 888 IF(
PRESENT(kcomm))
THEN 893 IF((kdest < 1 .OR. kdest >
mpl_nproc(icomm)) .AND. (.NOT.
PRESENT (kcomm)))
THEN 895 CALL mpl_message(cdmessage=
'MPL_SEND:ILLEGAL KDEST ',ldabort=llabort)
906 IF( (loc(pbuf(ubound(pbuf,1),ubound(pbuf,2))) - &
907 & loc(pbuf(lbound(pbuf,1),lbound(pbuf,2)))) /= 8_jpib*(icount - 1) )
THEN 908 CALL mpl_message(cdmessage=
'MPL_SEND: BUFFER NOT CONTIGUOUS ',ldabort=llabort)
913 IF (icount == 0)
THEN 915 CALL mpi_send(zdum,icount,int(mpi_real8),kdest-1,ktag,icomm,ierror)
917 CALL mpi_bsend(zdum,icount,int(mpi_real8),kdest-1,ktag,icomm,ierror)
919 CALL mpi_isend(zdum,icount,int(mpi_real8),kdest-1,ktag,icomm, &
922 CALL mpi_ibsend(zdum,icount,int(mpi_real8),kdest-1,ktag,icomm, &
925 CALL mpi_ssend(zdum,icount,int(mpi_real8),kdest-1,ktag,icomm,ierror)
927 IF(
PRESENT(kerror))
THEN 930 CALL mpl_message(kerror,
'MPL_SEND',
' INVALID METHOD',ldabort=llabort)
935 CALL mpi_send(pbuf(1,1),icount,int(mpi_real8),kdest-1,ktag,icomm,ierror)
937 CALL mpi_bsend(pbuf(1,1),icount,int(mpi_real8),kdest-1,ktag,icomm,ierror)
939 CALL mpi_isend(pbuf(1,1),icount,int(mpi_real8),kdest-1,ktag,icomm, &
942 CALL mpi_ibsend(pbuf(1,1),icount,int(mpi_real8),kdest-1,ktag,icomm, &
945 CALL mpi_ssend(pbuf(1,1),icount,int(mpi_real8),kdest-1,ktag,icomm,ierror)
947 IF(
PRESENT(kerror))
THEN 950 CALL mpl_message(kerror,
'MPL_SEND',
' INVALID METHOD',ldabort=llabort)
955 WRITE(
mpl_unit,
'(A,5I8)')
' MPL_SEND ',icount,imp_type,kdest,ktag,icomm
957 IF(
PRESENT(kerror))
THEN 960 IF(ierror /= 0 )
CALL mpl_message(ierror,
'MPL_SEND',cdstring,ldabort=llabort)
968 #ifdef USE_8_BYTE_WORDS 970 mpi_send => mpi_send8, mpi_bsend => mpi_bsend8, mpi_isend => mpi_isend8
973 CHARACTER*(*) :: CDCHAR
974 INTEGER(KIND=JPIM),
INTENT(IN) :: KDEST,KTAG
975 INTEGER(KIND=JPIM),
INTENT(IN),
OPTIONAL :: KCOMM,KMP_TYPE
976 INTEGER(KIND=JPIM),
INTENT(OUT),
OPTIONAL :: KREQUEST,KERROR
977 CHARACTER*(*),
INTENT(IN),
OPTIONAL :: CDSTRING
979 INTEGER(KIND=JPIM) :: ICOUNT,IMP_TYPE,ICOMM,IERROR
980 LOGICAL :: LLABORT=.true.
981 INTEGER(KIND=JPIM) :: ITID
982 itid = oml_my_thread()
985 & cdmessage=
'MPL_SEND: MPL NOT INITIALISED ',ldabort=llabort)
987 IF(
PRESENT(kmp_type))
THEN 992 IF(
PRESENT(kcomm))
THEN 997 IF((kdest < 1 .OR. kdest >
mpl_nproc(icomm)) .AND. (.NOT.
PRESENT (kcomm)))
THEN 999 CALL mpl_message(cdmessage=
'MPL_SEND:ILLEGAL KDEST ',ldabort=llabort)
1002 icount = len(cdchar)
1009 CALL mpi_send(cdchar,icount,int(mpi_byte),kdest-1,ktag,icomm,ierror)
1011 CALL mpi_bsend(cdchar,icount,int(mpi_byte),kdest-1,ktag,icomm,ierror)
1013 CALL mpi_isend(cdchar,icount,int(mpi_byte),kdest-1,ktag,icomm, &
1016 CALL mpi_ibsend(cdchar,icount,int(mpi_byte),kdest-1,ktag,icomm, &
1019 CALL mpi_ssend(cdchar,icount,int(mpi_byte),kdest-1,ktag,icomm,ierror)
1021 IF(
PRESENT(kerror))
THEN 1024 CALL mpl_message(kerror,
'MPL_SEND',
' INVALID METHOD',ldabort=llabort)
1028 WRITE(
mpl_unit,
'(A,5I8)')
' MPL_SEND ',icount,imp_type,kdest,ktag,icomm
1030 IF(
PRESENT(kerror))
THEN 1033 IF(ierror /= 0 )
CALL mpl_message(ierror,
'MPL_SEND',cdstring,ldabort=llabort)
1038 SUBROUTINE mpl_send_char(CDCHAR,KDEST,KTAG,KCOMM,KMP_TYPE,KERROR,KREQUEST,CDSTRING)
1040 #ifdef USE_8_BYTE_WORDS 1042 mpi_send => mpi_send8, mpi_bsend => mpi_bsend8, mpi_isend => mpi_isend8
1045 CHARACTER*(*) :: CDCHAR(:)
1046 INTEGER(KIND=JPIM),
INTENT(IN) :: KDEST,KTAG
1047 INTEGER(KIND=JPIM),
INTENT(IN),
OPTIONAL :: KCOMM,KMP_TYPE
1048 INTEGER(KIND=JPIM),
INTENT(OUT),
OPTIONAL :: KREQUEST,KERROR
1049 CHARACTER*(*),
INTENT(IN),
OPTIONAL :: CDSTRING
1051 INTEGER(KIND=JPIM) :: ICOUNT,IMP_TYPE,ICOMM,IERROR
1052 LOGICAL :: LLABORT=.true.
1053 INTEGER(KIND=JPIM) :: ITID
1054 itid = oml_my_thread()
1057 & cdmessage=
'MPL_SEND: MPL NOT INITIALISED ',ldabort=llabort)
1059 IF(
PRESENT(kmp_type))
THEN 1064 IF(
PRESENT(kcomm))
THEN 1069 IF((kdest < 1 .OR. kdest >
mpl_nproc(icomm)) .AND. (.NOT.
PRESENT (kcomm)))
THEN 1070 WRITE(
mpl_errunit,*)
'MPL_SEND: ERROR KDEST=',kdest
1071 CALL mpl_message(cdmessage=
'MPL_SEND:ILLEGAL KDEST ',ldabort=llabort)
1074 icount = len(cdchar) *
SIZE(cdchar)
1081 CALL mpi_send(cdchar,icount,int(mpi_byte),kdest-1,ktag,icomm,ierror)
1083 CALL mpi_bsend(cdchar,icount,int(mpi_byte),kdest-1,ktag,icomm,ierror)
1085 CALL mpi_isend(cdchar,icount,int(mpi_byte),kdest-1,ktag,icomm, &
1088 CALL mpi_ibsend(cdchar,icount,int(mpi_byte),kdest-1,ktag,icomm, &
1091 CALL mpi_ssend(cdchar,icount,int(mpi_byte),kdest-1,ktag,icomm,ierror)
1093 IF(
PRESENT(kerror))
THEN 1096 CALL mpl_message(kerror,
'MPL_SEND',
' INVALID METHOD',ldabort=llabort)
1100 WRITE(
mpl_unit,
'(A,5I8)')
' MPL_SEND ',icount,imp_type,kdest,ktag,icomm
1102 IF(
PRESENT(kerror))
THEN 1105 IF(ierror /= 0 )
CALL mpl_message(ierror,
'MPL_SEND',cdstring,ldabort=llabort)
1112 #ifdef USE_8_BYTE_WORDS 1114 mpi_send => mpi_send8, mpi_bsend => mpi_bsend8, mpi_isend => mpi_isend8
1117 REAL(KIND=JPRM) :: PBUF
1118 INTEGER(KIND=JPIM),
INTENT(IN) :: KDEST,KTAG
1119 INTEGER(KIND=JPIM),
INTENT(IN),
OPTIONAL :: KCOMM,KMP_TYPE
1120 INTEGER(KIND=JPIM),
INTENT(OUT),
OPTIONAL :: KREQUEST,KERROR
1121 CHARACTER*(*),
INTENT(IN),
OPTIONAL :: CDSTRING
1123 INTEGER(KIND=JPIM) :: ICOUNT,IMP_TYPE,ICOMM,IERROR
1124 LOGICAL :: LLABORT=.true.
1125 INTEGER(KIND=JPIM) :: ITID
1126 itid = oml_my_thread()
1129 & cdmessage=
'MPL_SEND: MPL NOT INITIALISED ',ldabort=llabort)
1131 IF(
PRESENT(kmp_type))
THEN 1136 IF(
PRESENT(kcomm))
THEN 1141 IF((kdest < 1 .OR. kdest >
mpl_nproc(icomm)) .AND. (.NOT.
PRESENT (kcomm)))
THEN 1142 WRITE(
mpl_errunit,*)
'MPL_SEND: ERROR KDEST=',kdest
1143 CALL mpl_message(cdmessage=
'MPL_SEND:ILLEGAL KDEST ',ldabort=llabort)
1153 CALL mpi_send(pbuf,icount,int(mpi_real4),kdest-1,ktag,icomm,ierror)
1155 CALL mpi_bsend(pbuf,icount,int(mpi_real4),kdest-1,ktag,icomm,ierror)
1157 CALL mpi_isend(pbuf,icount,int(mpi_real4),kdest-1,ktag,icomm, &
1160 CALL mpi_ibsend(pbuf,icount,int(mpi_real4),kdest-1,ktag,icomm, &
1163 CALL mpi_ssend(pbuf,icount,int(mpi_real4),kdest-1,ktag,icomm,ierror)
1165 IF(
PRESENT(kerror))
THEN 1168 CALL mpl_message(kerror,
'MPL_SEND',
' INVALID METHOD',ldabort=llabort)
1172 WRITE(
mpl_unit,
'(A,5I8)')
' MPL_SEND ',icount,imp_type,kdest,ktag,icomm
1174 IF(
PRESENT(kerror))
THEN 1177 IF(ierror /= 0 )
CALL mpl_message(ierror,
'MPL_SEND',cdstring,ldabort=llabort)
1184 #ifdef USE_8_BYTE_WORDS 1186 mpi_send => mpi_send8, mpi_bsend => mpi_bsend8, mpi_isend => mpi_isend8
1189 REAL(KIND=JPRD) :: PBUF
1190 INTEGER(KIND=JPIM),
INTENT(IN) :: KDEST,KTAG
1191 INTEGER(KIND=JPIM),
INTENT(IN),
OPTIONAL :: KCOMM,KMP_TYPE
1192 INTEGER(KIND=JPIM),
INTENT(OUT),
OPTIONAL :: KREQUEST,KERROR
1193 CHARACTER*(*),
INTENT(IN),
OPTIONAL :: CDSTRING
1195 INTEGER(KIND=JPIM) :: ICOUNT,IMP_TYPE,ICOMM,IERROR
1196 LOGICAL :: LLABORT=.true.
1197 INTEGER(KIND=JPIM) :: ITID
1198 itid = oml_my_thread()
1201 & cdmessage=
'MPL_SEND: MPL NOT INITIALISED ',ldabort=llabort)
1203 IF(
PRESENT(kmp_type))
THEN 1208 IF(
PRESENT(kcomm))
THEN 1213 IF((kdest < 1 .OR. kdest >
mpl_nproc(icomm)) .AND. (.NOT.
PRESENT (kcomm)))
THEN 1214 WRITE(
mpl_errunit,*)
'MPL_SEND: ERROR KDEST=',kdest
1215 CALL mpl_message(cdmessage=
'MPL_SEND:ILLEGAL KDEST ',ldabort=llabort)
1225 CALL mpi_send(pbuf,icount,int(mpi_real8),kdest-1,ktag,icomm,ierror)
1227 CALL mpi_bsend(pbuf,icount,int(mpi_real8),kdest-1,ktag,icomm,ierror)
1229 CALL mpi_isend(pbuf,icount,int(mpi_real8),kdest-1,ktag,icomm, &
1232 CALL mpi_ibsend(pbuf,icount,int(mpi_real8),kdest-1,ktag,icomm, &
1235 CALL mpi_ssend(pbuf,icount,int(mpi_real8),kdest-1,ktag,icomm,ierror)
1237 IF(
PRESENT(kerror))
THEN 1240 CALL mpl_message(kerror,
'MPL_SEND',
' INVALID METHOD',ldabort=llabort)
1244 WRITE(
mpl_unit,
'(A,5I8)')
' MPL_SEND ',icount,imp_type,kdest,ktag,icomm
1246 IF(
PRESENT(kerror))
THEN 1249 IF(ierror /= 0 )
CALL mpl_message(ierror,
'MPL_SEND',cdstring,ldabort=llabort)
1254 SUBROUTINE mpl_send_real83(PBUF,KDEST,KTAG,KCOMM,KMP_TYPE,KERROR,KREQUEST,CDSTRING)
1256 #ifdef USE_8_BYTE_WORDS 1258 mpi_send => mpi_send8, mpi_bsend => mpi_bsend8, mpi_isend => mpi_isend8
1262 REAL(KIND=JPRD) :: PBUF(:,:,:)
1263 INTEGER(KIND=JPIM),
INTENT(IN) :: KDEST,KTAG
1264 INTEGER(KIND=JPIM),
INTENT(IN),
OPTIONAL :: KCOMM,KMP_TYPE
1265 INTEGER(KIND=JPIM),
INTENT(OUT),
OPTIONAL :: KREQUEST,KERROR
1266 CHARACTER*(*),
INTENT(IN),
OPTIONAL :: CDSTRING
1268 INTEGER(KIND=JPIM) :: ICOUNT,IMP_TYPE,ICOMM,IERROR
1269 LOGICAL :: LLABORT=.true.
1270 INTEGER(KIND=JPIM) :: ITID
1271 itid = oml_my_thread()
1274 & cdmessage=
'MPL_SEND: MPL NOT INITIALISED ',ldabort=llabort)
1276 IF(
PRESENT(kmp_type))
THEN 1281 IF(
PRESENT(kcomm))
THEN 1286 IF(kdest < 1 .OR. kdest >
mpl_nproc(icomm).AND. (.NOT.
PRESENT (kcomm)))
THEN 1287 WRITE(
mpl_errunit,*)
'MPL_SEND: ERROR KDEST=',kdest
1288 CALL mpl_message(cdmessage=
'MPL_SEND:ILLEGAL KDEST ',ldabort=llabort)
1297 IF (icount > 0)
THEN 1298 IF( (loc(pbuf(ubound(pbuf,1),ubound(pbuf,2),ubound(pbuf,3))) - &
1299 & loc(pbuf(lbound(pbuf,1),lbound(pbuf,2),lbound(pbuf,3)))) /= 8_jpib*(icount - 1) )
THEN 1300 CALL mpl_message(cdmessage=
'MPL_SEND: BUFFER NOT CONTIGUOUS ',ldabort=llabort)
1305 CALL mpi_send(pbuf,icount,int(mpi_real8),kdest-1,ktag,icomm,ierror)
1307 CALL mpi_bsend(pbuf,icount,int(mpi_real8),kdest-1,ktag,icomm,ierror)
1309 CALL mpi_isend(pbuf,icount,int(mpi_real8),kdest-1,ktag,icomm, &
1312 CALL mpi_ibsend(pbuf,icount,int(mpi_real8),kdest-1,ktag,icomm, &
1315 CALL mpi_ssend(pbuf,icount,int(mpi_real8),kdest-1,ktag,icomm,ierror)
1317 IF(
PRESENT(kerror))
THEN 1320 CALL mpl_message(kerror,
'MPL_SEND',
' INVALID METHOD',ldabort=llabort)
1324 WRITE(
mpl_unit,
'(A,5I8)')
' MPL_SEND ',icount,imp_type,kdest,ktag,icomm
1326 IF(
PRESENT(kerror))
THEN 1329 IF(ierror /= 0 )
CALL mpl_message(ierror,
'MPL_SEND',cdstring,ldabort=llabort)
subroutine, public mpl_message(KERROR, CDMESSAGE, CDSTRING, LDABORT)
integer(kind=jpim), parameter jp_blocking_buffered
subroutine mpl_send_char(CDCHAR, KDEST, KTAG, KCOMM, KMP_TYPE, KERROR, KREQUEST, CDSTRING)
integer(kind=jpim) mpl_numproc
subroutine mpl_send_real8_scalar(PBUF, KDEST, KTAG, KCOMM, KMP_TYPE, KERROR, KREQUEST, CDSTRING)
subroutine mpl_send_real4(PBUF, KDEST, KTAG, KCOMM, KMP_TYPE, KERROR, KREQUEST, CDSTRING)
subroutine mpl_send_real83(PBUF, KDEST, KTAG, KCOMM, KMP_TYPE, KERROR, KREQUEST, CDSTRING)
subroutine mpl_send_real8(PBUF, KDEST, KTAG, KCOMM, KMP_TYPE, KERROR, KREQUEST, CDSTRING)
integer(kind=jpim), parameter jp_non_blocking_standard
integer(kind=jpim), dimension(:), allocatable mpl_comm_oml
integer(kind=jpim), parameter jp_blocking_standard
subroutine, public mpl_sendstats(ICOUNT, ITYPE)
integer(kind=jpim), parameter jp_non_blocking_buffered
subroutine mpl_send_real4_scalar(PBUF, KDEST, KTAG, KCOMM, KMP_TYPE, KERROR, KREQUEST, CDSTRING)
integer(kind=jpim) mpl_errunit
subroutine mpl_send_int8(KBUF, KDEST, KTAG, KCOMM, KMP_TYPE, KERROR, KREQUEST, CDSTRING)
subroutine mpl_send_int_scalar(KINT, KDEST, KTAG, KCOMM, KMP_TYPE, KERROR, KREQUEST, CDSTRING)
integer(kind=jpim), parameter jp_blocking_synchronous
subroutine mpl_send_char_scalar(CDCHAR, KDEST, KTAG, KCOMM, KMP_TYPE, KERROR, KREQUEST, CDSTRING)
subroutine mpl_send_real43(PBUF, KDEST, KTAG, KCOMM, KMP_TYPE, KERROR, KREQUEST, CDSTRING)
integer(kind=jpim) mpl_method
subroutine mpl_send_int2(KBUF, KDEST, KTAG, KCOMM, KMP_TYPE, KERROR, KREQUEST, CDSTRING)
integer(kind=jpim) function, public mpl_nproc(KCOMM)
integer(kind=jpim) mpl_unit
subroutine mpl_send_real82(PBUF, KDEST, KTAG, KCOMM, KMP_TYPE, KERROR, KREQUEST, CDSTRING)
integer(kind=jpim) mpl_output
subroutine mpl_send_int(KBUF, KDEST, KTAG, KCOMM, KMP_TYPE, KERROR, KREQUEST, CDSTRING)
subroutine mpl_send_real42(PBUF, KDEST, KTAG, KCOMM, KMP_TYPE, KERROR, KREQUEST, CDSTRING)