【问题标题】:Corrupted nodes inside an HDF5 fileHDF5 文件中的损坏节点
【发布时间】:2016-11-02 20:11:59
【问题描述】:

我有一个在集群中运行的程序实例,该程序基本上执行数值计算,使用h5py 将数值数组读取和写入HDF5 文件。

当我尝试在集群的不同计算节点上运行我的代码的多个实例时,所有正在运行的脚本都崩溃了。报错是

KeyError: '无法获取链接信息(错误的符号表节点签名)'

幸存的脚本继续运行没有问题。我在所有与 HDF5 对话的函数中都使用了 with 语句,以确保在 I/O 操作完成后正确关闭文件。

谁能解释一下这个错误是什么意思?

【问题讨论】:

  • 您是否要同时将来自多个进程的数据写入一个 hdf5 文件?
  • 是的,我正在尝试在同一个 HDF5 文件中写入来自多个进程的数据。我应该使用锁吗?
  • 我认为您不能同时从多个进程访问同一个 hdf5 文件。您只能使用 MPI 来执行此操作,请参阅 docs.h5py.org/en/latest/mpi.html。否则请务必同时仅使用一个进程打开文件。
  • Ziky 你是对的,谢谢

标签: python hdf5 h5py


【解决方案1】:

根据 Andrew Collete 的 Python and HDF5 一书,

multiprocessing 是 Python 提供的一个更新的内置模块,它支持基于 fork() 的基本并行处理。主要限制是您的并行进程不能共享单个 HDF5 文件,即使该文件以只读方式打开也是如此。这是 HDF5 库的限制.....

对于其他任何事情,基于 MPI 的 Parallel HDF5 是迄今为止最好的方法。 MPI 是 HDF5 库支持的官方“风格”并行。您可以拥有无​​限数量的进程,所有进程共享同一个打开的 HDF5 文件。

【讨论】:

猜你喜欢
  • 2015-10-10
  • 2023-03-12
  • 2019-08-01
  • 1970-01-01
  • 2014-08-05
  • 2015-09-26
  • 2021-01-28
  • 2020-08-08
  • 2016-06-23
相关资源
最近更新 更多