首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >dask和并行hdf5写入

dask和并行hdf5写入
EN

Stack Overflow用户
提问于 2016-12-28 18:17:15
回答 1查看 1.7K关注 0票数 4

在我的代码中,我使用mpi (mpi4py/h5py)在hdf5文件上并行保存多个处理过的图像(numpy数组)。为此,需要使用driver=mpio选项打开文件。

代码语言:javascript
运行
复制
import h5py
from mpi4py import MPI
file_hdl=h5py.File(file_lath,'r+',driver='mpio', comm=MPI.COMM_WORLD)

我想从mpi中移开,使用dask进行并行化。在dask中可以使用并行hdf5吗?我还需要依赖mpi吗?如果是这样的话,是否有更好的方法来存储数据?谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-28 18:52:34

这是一个既棘手又复杂的问题。

通常,HDF5对并行MPI读写进行了高度优化。在MPI之外很难获得相同级别的支持。

此外,这个问题很难解决,因为人们使用Dask和HDF5的方式不同,有些人在同一个进程中使用多个线程(h5py不是线程安全),而另一些人则在同一个硬盘上使用多个进程,或者在一个网络文件系统上使用多台计算机。此外,用户通常使用多个HDF5文件,例如,每天有一个文件的数据。

Dask通常通过使用锁来处理并行读写HDF5。如果您在一个进程中,那么这是一个普通的threading.Lock对象。通常,这对性能影响不大,因为读取HDF5文件通常是I/O,而不是CPU绑定。有一点争议,但没什么可担心的。

在分布式设置中,我们使用可串行化的锁,以防止在任何特定进程中多线程并发访问,但不要阻止两个进程之间的冲突。通常,这并不是一个问题,因为在读取时发生冲突是很好的,只要您不在同一个过程中,而且人们通常会编写与HDF5块一致的内聚块。

人们每天都愉快地使用HDF5与Dask.array并行使用。然而,我并不确信一切都是万无一失的。我怀疑这是有可能策划一个破案。

(此外,这一特定方面正在迅速演变。这个答案可能很快就过时了

https://github.com/pydata/xarray/issues/798

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

https://stackoverflow.com/questions/41367568

复制
相关文章

相似问题

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