Параллельная запись в разные группы с помощью 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()

Есть мысли о том, что здесь происходит не так?

Большое спасибо

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()
Другие вопросы по тегам