1

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

OSError: Can't prepare for write data (Can't convert from size to size_i)

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

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

4

1 回答 1

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

描述问题和解决方法的位置。

请看一看。

于 2016-02-09T17:09:15.857 回答