コード例 #1
0
ファイル: mpicomm.py プロジェクト: yihsuanliu/gpaw
    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)
コード例 #2
0
    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')
コード例 #3
0
        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")