使用来自Python的1个进程使用HDF5和MPI编写/读取大文件

时间:2015-01-16 13:17:31

标签: python mpi hdf5 h5py mpi4py

使用并行HDF5通过h5py和mpi4py将大型数据集写入文件时(很可能直接从C使用HDF5和MPI),如果在单个进程中使用mpio驱动程序,则会出现以下错误:

  

OSError:无法准备写入数据(无法将大小转换为size_i)

似乎允许的数据集的限制是4GB,至少当内容是双数组时。如果使用更多进程来共享工作负载,或者在没有mpio驱动程序的单个CPU上完成,则较大的数据集可以正常工作。

这是为什么?是sizesize_i指针类型,并且前者不能保存大于4GB double[]对应的地址吗?这个错误最终可能对我来说不是一个严重的问题,因为我一般会使用多个进程,但我希望我的代码只使用一个进程即可工作。

1 个答案:

答案 0 :(得分:1)

我最近遇到了同样的问题,并且挖掘了我这一点:

https://www.hdfgroup.org/ftp/HDF5/releases/hdf5-1.8.1/src/unpacked/src/H5FDmpio.c

您将看到引发错误的位置。简单地说,当数组的大小(以字节为单位)大于2GB时,就会出现错误。

进一步挖掘后,让我来到这里: https://www.hdfgroup.org/hdf5-quest.html#p2gb

描述问题和解决方法的地方。

请看一下。