Хорошо, как уже упоминалось в комментариях, я должен был создать наборы данных для каждого процесса, а затем заполнить их. Следующий код записывает данные параллельно столько раз, сколько размер коммуникатора:
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()