使用 h5py 并行写入不同的组
parallel write to different groups with h5py
我正在尝试使用并行 h5py 为每个进程创建一个独立的组,并用一些数据填充每个组。发生的情况是只有一个组被创建并填充了数据。这是程序:
from mpi4py import MPI
import h5py
rank = MPI.COMM_WORLD.Get_rank()
f = h5py.File('parallel_test.hdf5', 'w', driver='mpio', comm=MPI.COMM_WORLD)
data = range(1000)
dset = f.create_dataset(str(rank), data=data)
f.close()
想知道这里出了什么问题吗?
非常感谢
好的,正如评论中提到的,我必须为每个进程创建数据集然后填充它们。以下代码并行写入数据的次数与通信器的大小一样多:
comm = MPI.COMM_WORLD
rank = comm.Get_rank()
size = comm.Get_size()
data = [random.randint(1, 100) for x in range(4)]
f = h5py.File('parallel_test.hdf5', 'w', driver='mpio', comm=comm)
dset = []
for i in range(size):
dset.append(f.create_dataset('test{0}'.format(i), (len(data),), dtype='i'))
dset[rank][:] = data
f.close()
我正在尝试使用并行 h5py 为每个进程创建一个独立的组,并用一些数据填充每个组。发生的情况是只有一个组被创建并填充了数据。这是程序:
from mpi4py import MPI
import h5py
rank = MPI.COMM_WORLD.Get_rank()
f = h5py.File('parallel_test.hdf5', 'w', driver='mpio', comm=MPI.COMM_WORLD)
data = range(1000)
dset = f.create_dataset(str(rank), data=data)
f.close()
想知道这里出了什么问题吗?
非常感谢
好的,正如评论中提到的,我必须为每个进程创建数据集然后填充它们。以下代码并行写入数据的次数与通信器的大小一样多:
comm = MPI.COMM_WORLD
rank = comm.Get_rank()
size = comm.Get_size()
data = [random.randint(1, 100) for x in range(4)]
f = h5py.File('parallel_test.hdf5', 'w', driver='mpio', comm=comm)
dset = []
for i in range(size):
dset.append(f.create_dataset('test{0}'.format(i), (len(data),), dtype='i'))
dset[rank][:] = data
f.close()