Непоследовательные аргументы в пользу коллективной рутины - PullRequest
0 голосов
/ 04 декабря 2018

У меня есть 4 mpi-процесса, каждый процесс будет записывать несколько последовательных массивов numpy. В приведенном ниже фрагменте кода; data_per_rank - это двумерный массив numpy, и каждый процесс mpi должен разбивать его на inner_splits numpy подмассивы и записывать каждый в другую группу hdf5.

inner_splits = 3
data_splits = np.array_split(data_per_rank, inner_splits, axis=0)

for i in range(size):
    for j in range(inner_splits):
        dset.append(f.create_dataset('p{0}_{1}'.format(i, j), data_splits[j].shape, dtype='float64'))

for i in range(inner_splits):
   dset[(rank*inner_splits)+i][:,:] = data_splits[i]

for i in range(size):
    del dset[i]

f.close()

Это приводит к следующей ошибке:

File "/gpfs/projects/bsc19/bsc19004/matmul_separated.py", line 62, in write f.close()
File "/apps/PYTHON/2.7.13/INTEL/lib/python2.7/site-packages/h5py-2.7.0-py2.7-linux-x86_64.egg/h5py/_hl/files.py", line 299, in close
   h5i.dec_ref(id_)
File "h5py/_objects.pyx", line 54, in h5py._objects.with_phil.wrapper (/gpfs/apps/MN4/PYTHON/SRC/modules/2.7.13/h5py-.7.0_2/h5py/_objects.c:318)
File "h5py/_objects.pyx", line 55, in h5py._objects.with_phil.wrapper (/gpfs/apps/MN4/PYTHON/SRC/modules/2.7.13/h5py-.7.0_2/h5py/_objects.c:314)
File "h5py/h5i.pyx", line 150, in h5py.h5i.dec_ref(gpfs/apps/MN4/PYTHON/SRC/modules/2.7.13/h5py-2.7.0_2/h5py/h5i.c:2836)
RuntimeError: Can't decrement id ref count (Invalid argument, error stack:
mpi_file_set_size(82): inconsistent arguments to collective routine )

Некоторые из подмассивов имеют форму (2731, 32768), в то время как другие имеют форму (2730, 32768).Я убедился, что во время записи правильный data_split записывается в соответствующий обработчик dset.

Может кто-нибудь объяснить мне, что здесь происходит не так?что означает это сообщение об ошибке?какие аргументы противоречивы?

Заранее спасибо

...