gpt4 book ai didi

scientific-computing - HDF5 存储开销

转载 作者:行者123 更新时间:2023-12-04 12:34:08 25 4
gpt4 key购买 nike

我正在将大量小数据集写入 HDF5 文件,生成的文件大小大约是我对输入的数据的原始列表所期望的 10 倍。我的数据按层次结构组织如下:

group 0
-> subgroup 0
-> dataset (dimensions: 100 x 4, datatype: float)
-> dataset (dimensions: 100, datatype: float)
-> subgroup 1
-> dataset (dimensions: 100 x 4, datatype: float)
-> dataset (dimensions: 100, datatype: float)
...
group 1
...

每个子组应占用 500 * 4 字节 = 2000 字节,忽略开销。我不会在数据旁边存储任何属性。然而,在测试中,我发现每个子组占用大约 4 kB,大约是我预期的两倍。我知道有一些开销,但它来自哪里,我该如何减少它?是代表群体结构吗?

更多信息:
如果我将每个子组中两个数据集的维度增加到 1000 x 4 和 1000,那么每个子组将占用大约 22,250 字节,而不是我期望的 20,000 字节。这意味着每个子组的开销为 2.2 kB,并且与我在较小的数据集大小下获得的结果一致。有没有办法减少这种开销?

最佳答案

我会回答我自己的问题。仅表示组结构所涉及的开销就足以存储小数组或拥有许多组,每个组仅包含少量数据是没有意义的。似乎没有任何方法可以减少每组的开销,我测量的开销约为 2.2 kB。

我通过将每个子组中的两个数据集组合成一个 (100 x 5) 数据集来解决这个问题。然后,我消除了子组,并将每个组中的所有数据集组合成一个 3D 数据集。因此,如果我之前有 N 个子组,那么现在每个组中有一个数据集,形状为 (N x 100 x 5)。因此,我节省了以前存在的 N * 2.2 kB 开销。而且,由于 HDF5 的内置压缩对于更大的阵列更有效,我现在得到了比 1:1 更好的整体打包比,而以前,开销占用了文件的一半空间,压缩完全无效。

教训是在 HDF5 文件中避免复杂的组结构,并尝试将尽可能多的数据组合到每个数据集中。

关于scientific-computing - HDF5 存储开销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14332193/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com