gpt4 book ai didi

hdf5 - dask 和并行 hdf5 写入

转载 作者:行者123 更新时间:2023-12-02 01:18:50 25 4
gpt4 key购买 nike

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

import h5py
from mpi4py import MPI
file_hdl=h5py.File(file_lath,'r+',driver='mpio', comm=MPI.COMM_WORLD)

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

最佳答案

这是一个困难而复杂的问题。

通常 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

关于hdf5 - dask 和并行 hdf5 写入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41367568/

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