Python 如何并行化写入h5文件的数据?
我对Python 如何并行化写入h5文件的数据?,python,hdf5,h5py,mpi4py,Python,Hdf5,H5py,Mpi4py,我对h5py/mpi4py非常陌生。我试图将一些数据写入一个.h5文件,这样,如果rank==0阳性测试数据(阳性数据集)值将被写入,如果rank==1阴性测试数据(阴性数据集)值将被写入,则有两个进程处于这种状态。但是当我试着和你一起跑的时候 mpiexec -n 2 python parallel_exec.py 我要走了 IOError:无法创建文件(无法锁定文件,错误号=11,错误消息='资源暂时不可用') 有人能帮我解决这个问题吗 from mpi4py import MPI
h5py/mpi4py
非常陌生。我试图将一些数据写入一个.h5文件,这样,如果rank==0
阳性测试数据(阳性数据集)值将被写入,如果rank==1
阴性测试数据(阴性数据集)值将被写入,则有两个进程处于这种状态。但是当我试着和你一起跑的时候
mpiexec -n 2 python parallel_exec.py
我要走了
IOError:无法创建文件(无法锁定文件,错误号=11,错误消息='资源暂时不可用')
有人能帮我解决这个问题吗
from mpi4py import MPI
import h5py
rank = MPI.COMM_WORLD.rank
f = h5py.File('parallel.hdf5', 'w')
f.create_dataset('face_val', (num_pos_imgs + num_neg_imgs, 1), np.int)
f.create_dataset('eye_val', (num_pos_imgs + num_neg_imgs, 2), np.float32)
hdf5_index = 0
if rank == 0:
for i in enumerate(negative_images):
f['face_val'][hdf5_index, ...] = 0
f['eye_val'][hdf5_index, ...] = (magick_number, magick_number)
hdf5_index += 1
elif rank == 1:
for i in enumerate(positive_images):
f['face_val'][hdf5_index, ...] = 1
f['eye_val'][hdf5_index, ...] = (magick_number_positive, magick_number_positive)
hdf5_index += 1
预期:
在2个进程中并行运行hdf5并输出结果.hdf5文件
得到:
IOError:无法创建文件(无法锁定文件,错误号=11,错误消息='资源暂时不可用')
h5py文档中对此进行了说明。它指出HDF5必须使用
--enable parallel--enable shared
选项构建。此外,h5py必须在“MPI模式”下编译。最后,当您使用h5py打开文件时,您需要driver='mpio',comm=MPI.comm_WORLD
参数。在此处获取详细信息:@kcw78我已使用中所述的选项构建了HDF5,并尝试了该示例程序。示例程序运行良好,但我希望在代码中实现相同的功能。是否将mpi参数添加到h5py.File()
函数调用:driver='mpio',comm=mpi.comm_WORLD
?(如h5py示例所示)h5py文档对此进行了说明。它指出HDF5必须使用--enable parallel--enable shared
选项构建。此外,h5py必须在“MPI模式”下编译。最后,当您使用h5py打开文件时,您需要driver='mpio',comm=MPI.comm_WORLD
参数。在此处获取详细信息:@kcw78我已使用中所述的选项构建了HDF5,并尝试了该示例程序。示例程序运行良好,但我希望在代码中实现相同的功能。是否将mpi参数添加到h5py.File()
函数调用:driver='mpio',comm=mpi.comm_WORLD
?(如h5py示例所示)