【发布时间】:2011-07-17 19:46:52
【问题描述】:
我有大约 500 个 HDF5 文件,每个文件大约 1.5 GB。
每个文件都有完全相同的结构,即 7 个复合 (int,double,double) 数据集和可变数量的样本。
现在我想通过连接每个数据集来连接所有这些文件,这样最后我就有一个包含 7 个数据集的 750 GB 文件。
目前我正在运行一个 h5py 脚本:
- 创建一个 HDF5 文件,其中包含无限最大值的正确数据集
- 依次打开所有文件
- 检查样本数量是多少(因为它是可变的)
- 调整全局文件的大小
- 附加数据
这显然需要好几个小时, 你有什么改进的建议吗?
我正在开发一个集群,所以我可以并行使用 HDF5,但是我在 C 编程方面不够好,无法自己实现某些东西,我需要一个已经编写好的工具。
【问题讨论】:
-
一种可能性是将集群上的文件对合并在一起;将问题减少到 250 个 3GB 文件,然后是 125 个 6GB 文件,依此类推。仅当部分合并的文件在以后合并结果时可以节省任何时间时,这才有帮助。
-
@sarnold 我在 NERSC 研究 hopper,理论 I/O 速度为 25 GB/s,文件系统完全并行并支持 MPI I/O。
-
我在考虑一次读取 3 或 4 个文件,然后将它们全部写回,但最好是一个 c 实用程序,它以某种方式利用 mpi I/O。
-
hdf5 的一个功能是您可以在主文件的“文件夹”中“挂载”多个子文件。这样,可能不需要将它们全部合并到一个文件中。见这里:davis.lbl.gov/Manuals/HDF5-1.4.3/Tutor/mount.html
标签: dataset hdf5 scientific-computing