3

我有很多时间相关的科学数据要写,这意味着数据应该每隔几秒写入一次 hdf5 文件。我的 hdf5 文件结构设计如下:

  1. 创建多个时间组,例如 time-1-group、time-2-group、time-3-group 等...
  2. 在时间组中,创建了许多数据集,如 DataSetA、DataSetB、DataSetC 等...
  3. 将数据写入上述数据集。

使用的 API:HDF5-Fortran

运行这个程序,一切正常,但是速度慢,如何提高hdf5写动作效率?非常感谢。

4

1 回答 1

5

似乎您正在为每个时间步将数据分成组(我只是从您写的内容中猜测)。向所有数据集添加一个表示时间步长并摆脱组的附加维度可能更有效,因为您可以在每次写入之前将一堆迭代缓冲在一起。

明确地,而不是:

/time-1-group
    /time-1-group/DataSetA -> 2d array
    /time-1-group/DataSetB -> 2d array
    ...
/time-2-group
    /time-2-group/DataSetA -> 2d array
    /time-2-group/DataSetB -> 2d array
    ...
...

你会有这个:

/DataSetA -> 3d array where third index is time
/DataSetB -> 3d array where third index is time
...

您必须使用分块数据集并小心选择块大小以优化 I/O 效率(正如我上面所说,每个块可以有多个时间步长)。

于 2013-08-13T21:39:08.910 回答