def __len__(self): if self == _mpi.COMM_NULL: return 0 elif _mpi.comm_test_inter(self): return _mpi.comm_remote_size(self) else: return _mpi.comm_size(self)
def Gather(self, sendbuf, recvbuf=None, root=0): sendbuf, sfastmode = _mpi.make_buf(sendbuf) recvbuf, rfastmode = _mpi.make_buf(recvbuf) if sfastmode or rfastmode: _mpi.gather(sendbuf, recvbuf, root, self) return else: serializer = self.SERIALIZER if _mpi.comm_test_inter(self): if root != _mpi.ROOT and root != _mpi.PROC_NULL: sendbuf = serializer.dump(sendbuf) else: sendbuf = None else: sendbuf = serializer.dump(sendbuf) recvbuf = _mpi.gather_string(sendbuf, recvbuf, root, self) if recvbuf is not None: recvbuf = map(serializer.load, recvbuf) return recvbuf
def Gather(self, sendbuf, recvbuf = None, root = 0): sendbuf, sfastmode = _mpi.make_buf(sendbuf) recvbuf, rfastmode = _mpi.make_buf(recvbuf) if sfastmode or rfastmode: _mpi.gather(sendbuf, recvbuf, root, self) return else: serializer = self.SERIALIZER if _mpi.comm_test_inter(self): if root != _mpi.ROOT and root != _mpi.PROC_NULL: sendbuf = serializer.dump(sendbuf) else: sendbuf = None else: sendbuf = serializer.dump(sendbuf) recvbuf = _mpi.gather_string(sendbuf, recvbuf, root, self) if recvbuf is not None: recvbuf = map(serializer.load, recvbuf) return recvbuf
def Bcast(self, buf=None, root=0): buf, fastmode = _mpi.make_buf(buf) if fastmode: _mpi.bcast(buf, root, self) return else: serializer = self.SERIALIZER if _mpi.comm_test_inter(self): if root == _mpi.ROOT: buf = serializer.dump(buf) else: buf = None elif root == _mpi.comm_rank(self): buf = serializer.dump(buf) else: buf = None buf = _mpi.bcast_string(buf, root, self) if buf is not None: buf = serializer.load(buf) return buf
def Bcast(self, buf = None, root = 0): buf, fastmode = _mpi.make_buf(buf) if fastmode: _mpi.bcast(buf, root, self) return else: serializer = self.SERIALIZER if _mpi.comm_test_inter(self): if root == _mpi.ROOT: buf = serializer.dump(buf) else: buf = None elif root == _mpi.comm_rank(self): buf = serializer.dump(buf) else: buf = None buf = _mpi.bcast_string(buf, root, self) if buf is not None: buf = serializer.load(buf) return buf
def Scatter(self, sendbuf=None, recvbuf=None, root=0): sendbuf, sfastmode = _mpi.make_buf(sendbuf) recvbuf, rfastmode = _mpi.make_buf(recvbuf) if sfastmode or rfastmode: _mpi.scatter(sendbuf, recvbuf, root, self) return else: serializer = self.SERIALIZER if _mpi.comm_test_inter(self): if root == _mpi.ROOT: sendbuf = map(serializer.dump, sendbuf) else: sendbuf = None elif root == _mpi.comm_rank(self): sendbuf = map(serializer.dump, sendbuf) else: sendbuf = None recvbuf = _mpi.scatter_string(sendbuf, recvbuf, root, self) if recvbuf is not None: recvbuf = serializer.load(recvbuf) return recvbuf
def Scatter(self, sendbuf = None, recvbuf = None, root = 0): sendbuf, sfastmode = _mpi.make_buf(sendbuf) recvbuf, rfastmode = _mpi.make_buf(recvbuf) if sfastmode or rfastmode: _mpi.scatter(sendbuf, recvbuf, root, self) return else: serializer = self.SERIALIZER if _mpi.comm_test_inter(self): if root == _mpi.ROOT: sendbuf = map(serializer.dump, sendbuf) else: sendbuf = None elif root == _mpi.comm_rank(self): sendbuf = map(serializer.dump, sendbuf) else: sendbuf = None recvbuf = _mpi.scatter_string(sendbuf, recvbuf, root, self) if recvbuf is not None: recvbuf = serializer.load(recvbuf) return recvbuf
def Is_intra(self): return not _mpi.comm_test_inter(self)
def Is_inter(self): return _mpi.comm_test_inter(self)