我正在使用c/CUDA和python进行一些cfd模拟,目前工作流程如下:
由于我有大量的数据和一些元数据,所以我认为最好切换到hdf5文件格式。所以我的想法是,
我真的很想对数据做一些实时分析,比如从c-编程写入hdf5,并使用pytable直接从python读取。这将是非常有用的,但我真的不确定这在多大程度上被pytable所支持。
因为我从未使用过pytable或hdf5,所以最好知道这是一种好方法,还是可能存在一些缺陷。
发布于 2014-07-16 15:10:59
我认为这是一种合理的做法,但确实存在一个陷阱。HDF5 C-库不是线程安全的(有一个“并行”版本,稍后会详细介绍)。这意味着,您的方案不可行:一个进程将数据写入文件,而另一个进程正在读取(不一定是相同的数据集),将导致文件损坏。要使它发挥作用,您必须:
最近,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
https://stackoverflow.com/questions/24757713
复制相似问题