首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >利用pytables / hdf5对仿真数据进行实时分析

利用pytables / hdf5对仿真数据进行实时分析
EN

Stack Overflow用户
提问于 2014-07-15 12:00:49
回答 1查看 359关注 0票数 2

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

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

由于我有大量的数据和一些元数据,所以我认为最好切换到hdf5文件格式。所以我的想法是,

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

我真的很想对数据做一些实时分析,比如从c-编程写入hdf5,并使用pytable直接从python读取。这将是非常有用的,但我真的不确定这在多大程度上被pytable所支持。

因为我从未使用过pytable或hdf5,所以最好知道这是一种好方法,还是可能存在一些缺陷。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-16 15:10:59

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

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

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

据我所知,pytable没有为并行HDF5提供任何绑定。您应该使用h5py,它提供了对并行HDF5非常友好的绑定。参见本网站上的示例:http://docs.h5py.org/en/2.3/mpi.html

不幸的是,并行HDF5有一个主要缺点:到目前为止,它不支持写入压缩数据集(不过,读取是可能的)。请参阅http://www.hdfgroup.org/hdf5-quest.html#p5comp

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24757713

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档