在运行我的模拟时,我通常会得到典型大小为 10 GB 或更大的结果文件。它们包含数据类型为 float、double、complex float 和 complex double 的向量和矩阵。
最初我使用文本文件,但是当将每个模拟步骤的数据存储在文本文件中时,生成的文件数量增加得非常快。因此,我转而使用 HDF5。它具有以下优点:
- 我将所有结果都放在一个文件中,而不是像文本文件那样分发
- 我可以在存储的数据旁边存储属性和元数据,描述内容和使用的参数
- 我可以构建我的数据,这样我就可以像在文件系统中一样浏览它。相关数据保持紧密,我不必
x-axis在一个地方为我的数据,t-axis在一个完全不同的地方,以及在第三个地方的相应矩阵。这使得处理非常简单 - 我可以通过 Matlab、Python、C/C++ 和其他几种语言访问数据
- 我可以(理论上)并行写入数据,但目前没有必要
但是,这种文件格式有几个缺点(txt 文件不存在):
- 打开文件而不正确关闭它会损坏它,并可能使其无法使用(在最坏的情况下)
- 写入文件并达到硬盘配额会损坏文件,使其完全无法使用。
简而言之,文件非常容易损坏,如果相应的模拟需要数周才能运行,并且没有可用的备份,这可能会特别痛苦。
具有此处列出的优势,并且比 HDF5 更强大,我还有哪些其他替代方案?这个问题可能与其他问题有关(存储分层模拟数据的最佳实践或hdf5 的替代方案),并且提出了 XML 或 ADIOS 等替代方案,但我还没有找到最终结论。