gpt4 book ai didi

python - 使用 pytables/hdf5 实时分析模拟数据

转载 作者:太空宇宙 更新时间:2023-11-04 01:15:55 26 4
gpt4 key购买 nike

我正在使用 c/CUDA 和 python 进行一些 cfd 模拟,目前工作流程是这样的:

  1. 开始用纯c/cuda编写的模拟
  2. 将输出写入二进制文件
  3. 用 python 重新打开文件,即 numpy.fromfile 并做一些分析。

因为我有很多数据和一些元数据,所以我觉得这样会更好切换到 hdf5 文件格式。所以我的想法是,

  1. 使用 pytables 为我的模拟创建一些初始条件数据。
  2. 使用标准 hdf5 库重新打开并写入 c 中的数据集。
  3. 使用 pytables 重新打开文件进行分析。

我真的很想对数据进行一些实时分析,即从 c-programm 写入 hdf5 并使用 pytables 直接从 python 读取。这将非常有用,但我真的不是确定 pytables 支持多少。

因为我从未使用过 pytables 或 hdf5,所以很高兴知道这是一个好的方法还是可能存在一些陷阱。

最佳答案

我认为这是一种合理的做法,但确实存在一个陷阱。 HDF5 C 库不是线程安全的(有一个“并行”版本,稍后会详细介绍)。这意味着,您的场景并非开箱即用:一个进程将数据写入文件而另一个进程正在读取(不一定是相同的数据集)将导致文件损坏。要使其工作,您必须:

  1. 实现文件锁定,确保在写入文件时没有进程在读取,或者
  2. 通过将读取/写入委托(delegate)给不同的进程来序列化对文件的访问。然后您必须通过一些 IPC 技术(Unix 域套接字,...)与此进程通信。当然,这可能会影响性能,因为数据正在来回复制。

最近,HDF 组发布了基于 MPI 的 HDF5 并行版本,这使得并发读/写访问成为可能。比照。 http://www.hdfgroup.org/HDF5/PHDF5/ .它是为像您这样的用例创建的。

据我所知,pytables 不提供任何与并行 HDF5 的绑定(bind)。你应该使用 h5py相反,它提供了非常用户友好的并行 HDF5 绑定(bind)。请参阅本网站上的示例:http://docs.h5py.org/en/2.3/mpi.html

不幸的是,并行 HDF5 有一个主要缺点:迄今为止,它不支持写入压缩数据集(尽管可以读取)。比照。 http://www.hdfgroup.org/hdf5-quest.html#p5comp

关于python - 使用 pytables/hdf5 实时分析模拟数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24757713/

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