@@ -640,6 +640,16 @@ function Alltoall{T}(sendbuf::MPIBuffertype{T}, count::Integer,
640640 recvbuf
641641end
642642
643+ function Ialltoall {T} (sendbuf:: MPIBuffertype{T} , count:: Integer ,
644+ comm:: Comm )
645+ rval = Ref {Cint} ()
646+ recvbuf = Array (T, Comm_size (comm)* count)
647+ ccall (MPI_IALLTOALL, Void,
648+ (Ptr{T}, Ptr{Cint}, Ptr{Cint}, Ptr{T}, Ptr{Cint}, Ptr{Cint}, Ptr{Cint}, Ptr{Cint}, Ptr{Cint}),
649+ sendbuf, & count, & mpitype (T), recvbuf, & count, & mpitype (T), & comm. val, rval, & 0 )
650+ Request (rval[], sendbuf), recvbuf
651+ end
652+
643653function Alltoallv {T} (sendbuf:: MPIBuffertype{T} , scounts:: Vector{Cint} ,
644654 rcounts:: Vector{Cint} , comm:: Comm )
645655 recvbuf = Array (T, sum (rcounts))
@@ -651,6 +661,18 @@ function Alltoallv{T}(sendbuf::MPIBuffertype{T}, scounts::Vector{Cint},
651661 recvbuf
652662end
653663
664+ function Ialltoallv {T} (sendbuf:: MPIBuffertype{T} , scounts:: Vector{Cint} ,
665+ rcounts:: Vector{Cint} , comm:: Comm )
666+ rval = Ref {Cint} ()
667+ recvbuf = Array (T, sum (rcounts))
668+ sdispls = cumsum (scounts) - scounts
669+ rdispls = cumsum (rcounts) - rcounts
670+ ccall (MPI_IALLTOALLV, Void,
671+ (Ptr{T}, Ptr{Cint}, Ptr{Cint}, Ptr{Cint}, Ptr{T}, Ptr{Cint}, Ptr{Cint}, Ptr{Cint}, Ptr{Cint}, Ptr{Cint}, Ptr{Cint}),
672+ sendbuf, scounts, sdispls, & mpitype (T), recvbuf, rcounts, rdispls, & mpitype (T), & comm. val, rval, & 0 )
673+ Request (rval[], sendbuf), recvbuf
674+ end
675+
654676function Scan {T} (sendbuf:: MPIBuffertype{T} , count:: Integer ,
655677 op:: Op , comm:: Comm )
656678 recvbuf = Array (T, count)
0 commit comments