def Allgather(self, sendbuf, recvbuf=None): sendbuf, sfastmode = _mpi.make_buf(sendbuf) recvbuf, rfastmode = _mpi.make_buf(recvbuf) if sfastmode or rfastmode: _mpi.allgather(sendbuf, recvbuf, self) return None else: serializer = self.SERIALIZER sendbuf = serializer.dump(sendbuf) recvbuf = _mpi.allgather_string(sendbuf, recvbuf, self) recvbuf = map(serializer.load, recvbuf) return recvbuf
def Allgather(self, sendbuf, recvbuf = None): sendbuf, sfastmode = _mpi.make_buf(sendbuf) recvbuf, rfastmode = _mpi.make_buf(recvbuf) if sfastmode or rfastmode: _mpi.allgather(sendbuf, recvbuf, self) return None else: serializer = self.SERIALIZER sendbuf = serializer.dump(sendbuf) recvbuf = _mpi.allgather_string(sendbuf, recvbuf, self) recvbuf = map(serializer.load, recvbuf) return recvbuf
def Allreduce(self, sendbuf, recvbuf=None, op=SUM): sendbuf, sfastmode = _mpi.make_buf(sendbuf) recvbuf, rfastmode = _mpi.make_buf(recvbuf) if sfastmode or rfastmode: _mpi.allreduce(sendbuf, recvbuf, op, self) return None else: serializer = self.SERIALIZER sendbuf = serializer.dump(sendbuf) recvbuf = _mpi.allgather_string(sendbuf, recvbuf, self) recvbuf = map(serializer.load, recvbuf) if op in (MAXLOC, MINLOC): recvbuf = zip(recvbuf, xrange(len(recvbuf))) recvbuf = reduce(op, recvbuf) return recvbuf
def Allreduce(self, sendbuf, recvbuf = None, op = SUM): sendbuf, sfastmode = _mpi.make_buf(sendbuf) recvbuf, rfastmode = _mpi.make_buf(recvbuf) if sfastmode or rfastmode: _mpi.allreduce(sendbuf, recvbuf, op, self) return None else: serializer = self.SERIALIZER sendbuf = serializer.dump(sendbuf) recvbuf = _mpi.allgather_string(sendbuf, recvbuf, self) recvbuf = map(serializer.load, recvbuf) if op in (MAXLOC, MINLOC): recvbuf = zip(recvbuf, xrange(len(recvbuf))) recvbuf = reduce(op, recvbuf) return recvbuf