def _get_comm(): """Get the correct MPI world object.""" if 'mpi4py' in sys.modules: return MPI4PY() if '_gpaw' in sys.modules: import _gpaw if hasattr(_gpaw, 'Communicator'): return _gpaw.Communicator() if '_asap' in sys.modules: import _asap if hasattr(_asap, 'Communicator'): return _asap.Communicator() return DummyMPI()
def rank(): # Check for special MPI-enabled Python interpreters: if '_gpaw' in sys.builtin_module_names: import _gpaw # http://wiki.fysik.dtu.dk/gpaw world = _gpaw.Communicator() elif '_asap' in sys.builtin_module_names: import _asap # http://wiki.fysik.dtu.dk/asap, can't import asap3.mpi here (import deadlock) world = _asap.Communicator() elif 'asapparallel3' in sys.modules: # Older version of Asap import asapparallel3 world = asapparallel3.Communicator() elif 'Scientific_mpi' in sys.modules: from Scientific.MPI import world elif 'mpi4py' in sys.modules: world = MPI4PY() else: world = DummyMPI() # This is a standard Python interpreter: rank = world.rank size = world.size return rank
def broadcast(self, a, rank): a[:] = self.comm.bcast(a, root=rank) # Check for special MPI-enabled Python interpreters: if '_gpaw' in sys.builtin_module_names: # http://wiki.fysik.dtu.dk/gpaw import _gpaw world = _gpaw.Communicator() elif '_asap' in sys.builtin_module_names: # Modern version of Asap # http://wiki.fysik.dtu.dk/asap # We cannot import asap3.mpi here, as that creates an import deadlock import _asap world = _asap.Communicator() elif 'asapparallel3' in sys.modules: # Older version of Asap import asapparallel3 world = asapparallel3.Communicator() elif 'Scientific_mpi' in sys.modules: from Scientific.MPI import world elif 'mpi4py' in sys.modules: world = MPI4PY() else: # This is a standard Python interpreter: world = DummyMPI() rank = world.rank size = world.size barrier = world.barrier