89 #ifdef USE_8_BYTE_WORDS 91 mpi_scatterv => mpi_scatterv8, mpi_comm_size => mpi_comm_size8
96 INTEGER(KIND=JPIM),
INTENT(IN),
OPTIONAL :: KCOMM
97 INTEGER(KIND=JPIM),
INTENT(IN),
OPTIONAL :: KROOT
98 INTEGER(KIND=JPIM),
INTENT(IN),
OPTIONAL :: KMP_TYPE
99 INTEGER(KIND=JPIM),
INTENT(IN),
OPTIONAL :: KREQUEST
100 INTEGER(KIND=JPIM) :: ITID
101 itid = oml_my_thread()
106 & cdmessage=
'MPL_SCATTERV: MPL NOT INITIALISED ',ldabort=
llabort)
108 IF(
PRESENT(kcomm))
THEN 114 IF(
PRESENT(kmp_type))
THEN 120 IF(.NOT.
PRESENT(krequest))
CALL mpl_message(cdmessage=
'MPL_SCATTERV: KREQUEST MISSING',ldabort=
llabort)
131 IF(
PRESENT(kroot))
THEN 141 INTEGER(KIND=JPIM),
INTENT(IN) :: KSENDCOUNTS(:)
142 INTEGER(KIND=JPIM),
INTENT(IN),
OPTIONAL :: KSENDDISPL(:)
143 INTEGER(KIND=JPIM),
INTENT(OUT) :: KISENDDISPL(:)
144 CHARACTER*(*),
INTENT(IN),
OPTIONAL :: CDSTRING
148 WRITE(
mpl_errunit,*)
'MPL_SCATTERV: ERROR KSENDCOUNTS DIMENSION=',&
151 &
'MPL_SCATTERV: ERROR KSENDCOUNTS DIMENSION IS WRONG',ldabort=
llabort)
154 WRITE(
mpl_errunit,*)
'MPL_SCATTERV: ERROR KSENDCOUNTS INCONSISTENCY ',&
157 &
'MPL_SCATTERV: ERROR IRECVCOUNT /= KSENDCOUNTS(MPL_RANK) ',ldabort=
llabort)
160 IF(
PRESENT(ksenddispl))
THEN 161 kisenddispl(:) = ksenddispl(:)
165 kisenddispl(
ir) = kisenddispl(
ir-1) + ksendcounts(
ir-1)
170 WRITE(
mpl_errunit,
'(A,4I10)')
'MPL_SCATTERV:SEND BUFFER TOO SMALL ', &
179 & KMP_TYPE,KCOMM,KERROR,KREQUEST,CDSTRING)
182 #ifdef USE_8_BYTE_WORDS 184 mpi_scatterv => mpi_scatterv8
188 REAL(KIND=JPRD),
INTENT(OUT) :: PRECVBUF(:)
189 INTEGER(KIND=JPIM),
INTENT(IN) :: KROOT
190 REAL(KIND=JPRD),
INTENT(IN),
OPTIONAL :: PSENDBUF(:)
191 INTEGER(KIND=JPIM),
INTENT(IN),
OPTIONAL :: KSENDCOUNTS(:), KSENDDISPL(:)
192 INTEGER(KIND=JPIM),
INTENT(IN),
OPTIONAL :: KCOMM,KMP_TYPE
193 INTEGER(KIND=JPIM),
INTENT(OUT),
OPTIONAL :: KERROR,KREQUEST
194 CHARACTER*(*),
INTENT(IN),
OPTIONAL :: CDSTRING
203 & cdmessage=
'MPL_SCATTERV:SENDBUF MISSING',cdstring=cdstring,&
208 CALL mpi_scatterv(psendbuf,ksendcounts,isenddispl,int(mpi_real8), &
211 CALL mpi_iscatterv(psendbuf,ksendcounts,isenddispl,int(mpi_real8), &
220 CALL mpi_scatterv(
zdum,1,1,int(mpi_real8), &
223 CALL mpi_iscatterv(
zdum,1,1,int(mpi_real8), &
231 IF(
PRESENT(kerror))
THEN 241 & KMP_TYPE,KCOMM,KERROR,KREQUEST,CDSTRING)
244 #ifdef USE_8_BYTE_WORDS 246 mpi_scatterv => mpi_scatterv8
250 REAL(KIND=JPRM),
INTENT(OUT) :: PRECVBUF(:)
251 INTEGER(KIND=JPIM),
INTENT(IN) :: KROOT
252 REAL(KIND=JPRM),
INTENT(IN),
OPTIONAL :: PSENDBUF(:)
253 INTEGER(KIND=JPIM),
INTENT(IN),
OPTIONAL :: KSENDCOUNTS(:), KSENDDISPL(:)
254 INTEGER(KIND=JPIM),
INTENT(IN),
OPTIONAL :: KCOMM,KMP_TYPE
255 INTEGER(KIND=JPIM),
INTENT(OUT),
OPTIONAL :: KERROR,KREQUEST
256 CHARACTER*(*),
INTENT(IN),
OPTIONAL :: CDSTRING
265 & cdmessage=
'MPL_SCATTERV:SENDBUF MISSING',cdstring=cdstring,&
270 CALL mpi_scatterv(psendbuf,ksendcounts,isenddispl,int(mpi_real4), &
273 CALL mpi_iscatterv(psendbuf,ksendcounts,isenddispl,int(mpi_real4), &
282 CALL mpi_scatterv(
zdum_4,1,1,int(mpi_real4), &
285 CALL mpi_iscatterv(
zdum_4,1,1,int(mpi_real4), &
293 IF(
PRESENT(kerror))
THEN 304 & KSENDDISPL,KMP_TYPE,KCOMM,KERROR,KREQUEST,CDSTRING)
307 #ifdef USE_8_BYTE_WORDS 309 mpi_scatterv => mpi_scatterv8
313 INTEGER(KIND=JPIM),
INTENT(OUT) :: KRECVBUF(:)
314 INTEGER(KIND=JPIM),
INTENT(IN) :: KROOT
315 INTEGER(KIND=JPIM),
INTENT(IN),
OPTIONAL :: KSENDBUF(:)
316 INTEGER(KIND=JPIM),
INTENT(IN),
OPTIONAL :: KSENDCOUNTS(:), KSENDDISPL(:)
317 INTEGER(KIND=JPIM),
INTENT(IN),
OPTIONAL :: KCOMM,KMP_TYPE
318 INTEGER(KIND=JPIM),
INTENT(OUT),
OPTIONAL :: KERROR,KREQUEST
319 CHARACTER*(*),
INTENT(IN),
OPTIONAL :: CDSTRING
328 & cdmessage=
'MPL_SCATTERV:SENDBUF MISSING',cdstring=cdstring,&
334 CALL mpi_scatterv(ksendbuf,ksendcounts,isenddispl,int(mpi_integer), &
337 CALL mpi_iscatterv(ksendbuf,ksendcounts,isenddispl,int(mpi_integer), &
346 CALL mpi_scatterv(
zdum_int,1,1,int(mpi_integer), &
349 CALL mpi_iscatterv(
zdum_int,1,1,int(mpi_integer), &
357 IF(
PRESENT(kerror))
THEN
subroutine, public mpl_message(KERROR, CDMESSAGE, CDSTRING, LDABORT)
integer(kind=jpim), parameter jp_blocking_buffered
subroutine, public mpl_recvstats(ICOUNT, ITYPE)
integer(kind=jpim) isendbufsize
integer(kind=jpim) mpl_numproc
integer(kind=jpim) zdum_int
subroutine mpl_scatterv_preamb2(KSENDCOUNTS, KISENDDISPL, KSENDDISPL, CDSTRING)
integer(kind=jpim), parameter jp_non_blocking_standard
integer(kind=jpim), dimension(:), allocatable mpl_comm_oml
subroutine mpl_scatterv_real4(PRECVBUF, KROOT, PSENDBUF, KSENDCOUNTS, KSENDDISPL, KMP_TYPE, KCOMM, KERROR, KREQUEST, CDSTRING)
integer(kind=jpim), parameter jp_blocking_standard
subroutine, public mpl_sendstats(ICOUNT, ITYPE)
integer(kind=jpim) ierror
integer(kind=jpim) ipl_myrank
integer(kind=jpim), parameter jp_non_blocking_buffered
integer(kind=jpim) mpl_errunit
intent(out) overrides sub arrays one Sort by the least significant key first sum(iindex(1:n))
integer(kind=jpim) function, public mpl_myrank(KCOMM)
subroutine mpl_scatterv_preamb1(KCOMM, KROOT, KMP_TYPE, KREQUEST)
integer(kind=jpim) mpl_rank
integer(kind=jpim) mpl_method
subroutine mpl_scatterv_integer(KRECVBUF, KROOT, KSENDBUF, KSENDCOUNTS, KSENDDISPL, KMP_TYPE, KCOMM, KERROR, KREQUEST, CDSTRING)
integer(kind=jpim) ipl_numproc
integer(kind=jpim) imp_type
integer(kind=jpim) irecvcount
subroutine mpl_scatterv_real8(PRECVBUF, KROOT, PSENDBUF, KSENDCOUNTS, KSENDDISPL, KMP_TYPE, KCOMM, KERROR, KREQUEST, CDSTRING)