@@ -556,6 +556,16 @@ function Scatter{T}(sendbuf::MPIBuffertype{T},
556556 recvbuf
557557end
558558
559+ function Iscatter {T} (sendbuf:: MPIBuffertype{T} ,
560+ count:: Integer , root:: Integer , comm:: Comm )
561+ rval = Ref {Cint} ()
562+ recvbuf = Array (T, count)
563+ ccall (MPI_ISCATTER, Void,
564+ (Ptr{T}, Ptr{Cint}, Ptr{Cint}, Ptr{T}, Ptr{Cint}, Ptr{Cint}, Ptr{Cint}, Ptr{Cint}, Ptr{Cint}, Ptr{Cint}),
565+ sendbuf, & count, & mpitype (T), recvbuf, & count, & mpitype (T), & root, & comm. val, rval, & 0 )
566+ Request (rval[], sendbuf), recvbuf
567+ end
568+
559569function Scatterv {T} (sendbuf:: MPIBuffertype{T} ,
560570 counts:: Vector{Cint} , root:: Integer ,
561571 comm:: Comm )
@@ -568,6 +578,19 @@ function Scatterv{T}(sendbuf::MPIBuffertype{T},
568578 recvbuf
569579end
570580
581+ function Iscatterv {T} (sendbuf:: MPIBuffertype{T} ,
582+ counts:: Vector{Cint} , root:: Integer ,
583+ comm:: Comm )
584+ rval = Ref {Cint} ()
585+ recvbuf = Array (T, counts[Comm_rank (comm) + 1 ])
586+ recvcnt = counts[Comm_rank (comm) + 1 ]
587+ disps = cumsum (counts) - counts
588+ ccall (MPI_ISCATTERV, Void,
589+ (Ptr{T}, Ptr{Cint}, Ptr{Cint}, Ptr{Cint}, Ptr{T}, Ptr{Cint}, Ptr{Cint}, Ptr{Cint}, Ptr{Cint}, Ptr{Cint}, Ptr{Cint}),
590+ sendbuf, counts, disps, & mpitype (T), recvbuf, & recvcnt, & mpitype (T), & root, & comm. val, rval, & 0 )
591+ Request (rval[], sendbuf), recvbuf
592+ end
593+
571594function Gather {T} (sendbuf:: MPIBuffertype{T} , count:: Integer ,
572595 root:: Integer , comm:: Comm )
573596 isroot = Comm_rank (comm) == root
0 commit comments