При записи большого набора данных в файл с использованием параллельного HDF5 через h5py и mpi4py (и вполне возможно также при использовании HDF5 и MPI непосредственно из C), я получаю следующую ошибку при использовании драйвера mpio с одним процессом:
OSError: не удается подготовиться к записи данных (невозможно преобразовать размер в size_i)
Кажется, что ограничение на разрешенный набор данных составляет 4 ГБ, по крайней мере, когда содержимое представляет собой двойные массивы. Большие наборы данных работают нормально, если для распределения рабочей нагрузки используется больше процессов, или если они выполняются на одном процессоре без драйвера mpio.
Почему это? Являются ли типы указателей size
и size_i
, и может ли первый не содержать адресов больше, чем соответствует 4 ГБ double[]
? В конце концов, эта ошибка, вероятно, не будет для меня серьезной проблемой, потому что в целом я буду использовать более одного процесса, но я бы хотел, чтобы мой код работал даже с использованием только одного процесса.
count
имел типint
. Я не думаю, что 64-битныеlong int
стали доступны до C99. - person eduffy   schedule 16.01.2015int
. На самом деле это не ограничение для собственных приложений MPI, поскольку его можно было легко обойти, построив производный тип данных MPI (что было причиной сохраненияint
в качестве типа счетчика в MPI-3). - person Hristo Iliev   schedule 17.01.2015