gpt4 book ai didi

压缩性能与 hdf5 文件中的 block 大小相关

转载 作者:行者123 更新时间:2023-12-02 21:52:48 25 4
gpt4 key购买 nike

我想问一个关于压缩性能的问题这与hdf5文件的 block 大小有关。

我手头有 2 个 hdf5 文件,它们具有以下属性。它们都只包含一个数据集,称为“数据”。

文件A的“数据”:

  1. 类型:HDF5 标量数据集
  2. 没有。维度数:2
  3. 尺寸大小:5094125 x 6
  4. 最大。尺寸大小:无限制x无限制
  5. 数据类型:64 位浮点
  6. 分块:10000 x 6
  7. 压缩:GZIP 级别 = 7

文件B的“数据”:

  1. 类型:HDF5 标量数据集
  2. 没有。维度数:2
  3. 尺寸:6720 x 1000
  4. 最大。尺寸大小:无限制x无限制
  5. 数据类型:64 位浮点
  6. 分块:6000 x 1
  7. 压缩:GZIP 级别 = 7

文件 A 的大小:HDF5----19 MBCSV-----165 MB

文件 B 的大小:HDF5----60MBCSV-----165 MB

与 csv 文件相比,它们都显示出对存储数据的极大压缩。然而文件A的压缩率约为原始csv的10%,而B文件的数据量仅为原始csv的30%左右。

我尝试过不同的 block 大小以使文件 B 尽可能小,但似乎 30% 是最佳压缩率。我想问为什么文件A可以实现更大的压缩而文件B却不能。

如果文件B也能实现,那么chunk大小应该是多少?

是否有任何规则可以确定用于压缩目的的 HDF5 最佳 block 大小?

谢谢!

最佳答案

分块本身并不会真正影响压缩比,除非@Ümit 描述的方式。分块的作用是影响 I/O 性能。当压缩应用于 HDF5 数据集时,它会单独应用于整个 block 。这意味着当从数据集中的单个 block 读取数据时,必须解压缩整个 block - 可能涉及更多的 I/O,具体取决于缓存的大小、 block 的形状等。

您应该做的是确保 block 形状与您读取/写入数据的方式匹配。例如,如果您通常一次阅读一列,请将您的 block 分成列。 This is a good tutorial on chunking.

关于压缩性能与 hdf5 文件中的 block 大小相关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16786428/

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