comm = even_comm else: assert even_comm is None comm = odd_comm hasmpi = False try: import _gpaw hasmpi = hasattr(_gpaw, 'Communicator') except ImportError, AttributeError: pass assert world.parent is None assert comm.parent is world if hasmpi: assert comm.parent.get_c_object() is world.get_c_object() assert comm.get_c_object().parent is world.get_c_object() commranks = np.arange(world.rank % 2, world.size, 2) assert np.all(comm.get_members() == commranks) assert comm.get_members()[comm.rank] == world.rank subcomm = comm.new_communicator(np.array([comm.rank])) assert subcomm.parent is comm assert subcomm.rank == 0 and subcomm.size == 1 assert subcomm.get_members().item() == comm.rank if debug: assert isinstance(world, _Communicator) assert isinstance(comm, _Communicator) assert isinstance(subcomm, _Communicator)
for key in data: if key == 'bool': continue dset = grp[key] indices = slice((size - rank - 1) * datasize, (size - rank) * datasize) selection = HyperslabSelection(indices, dset.shape) new_val = np.ndarray(selection.mshape, dset.dtype, order='C') dset.read(new_val, selection, collective=parallel) ref_val = np.arange((size - rank - 1) * datasize, (size - rank) * datasize, dtype=key) assert ((new_val == ref_val).all) if world.size > 1: comm = world.get_c_object() parallel = True else: comm = None parallel = False file = File('tmp.hdf5', 'w', comm=comm) write(attrs, data, file, parallel) file.close() file = File('tmp.hdf5', 'r', comm=comm) read(attrs, data, file, parallel) file.close() if rank == 0: os.remove('tmp.hdf5')
assert (new_val == val).all # read data in reversed order for key in data: if key == "bool": continue dset = grp[key] indices = slice((size - rank - 1) * datasize, (size - rank) * datasize) selection = HyperslabSelection(indices, dset.shape) new_val = np.ndarray(selection.mshape, dset.dtype, order="C") dset.read(new_val, selection, collective=parallel) ref_val = np.arange((size - rank - 1) * datasize, (size - rank) * datasize, dtype=key) assert (new_val == ref_val).all if world.size > 1: comm = world.get_c_object() parallel = True else: comm = None parallel = False file = File("tmp.hdf5", "w", comm=comm) write(attrs, data, file, parallel) file.close() file = File("tmp.hdf5", "r", comm=comm) read(attrs, data, file, parallel) file.close() if rank == 0: os.remove("tmp.hdf5")