用h5py并行写入不同的组

时间:2018-07-05 16:08:11

标签: io mpi hdf5 h5py parallel-io

我正在尝试使用并行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()

对这里出什么问题有任何想法吗?

非常感谢

1 个答案:

答案 0 :(得分:1)

好吧,因此如注释中所述,我必须为每个过程创建数据集,然后填充它们。以下代码并行写入数据的次数是通信器大小的两倍:

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()