anaconda安装支持mpi并行化的h5py

anaconda安装支持mpi并行化的h5py

参考github上面的提问,可以用conda install -c conda-forge "h5py>=2.9=mpi*"通过conda安装支持mpi并行的h5py,其中2.9是这个channel里面支持mpi的第一个版本。
利用以下代码测试,来源于h5py文档

from mpi4py import MPI
import h5py

rank = MPI.COMM_WORLD.rank  # The process ID (integer 0-3 for 4-process run)

f = h5py.File('parallel_test.hdf5', 'w', driver='mpio', comm=MPI.COMM_WORLD)

dset = f.create_dataset('test', (4,), dtype='i')
dset[rank] = rank

f.close()

可以用h5pcc -showconfig查看版本以及是否并行安装(会发现没有官方文档里面给出的h5cc指令,或者位置不对)。
但是,截止到作者测试时候(2021年11月份),这种方法安装的h5py在并行写入的时候不支持超过2GB的写入,会出现报错:

OSError: Can't write data (can't convert from size to size_i)

测试代码为:

from mpi4py import MPI 
import h5py
import numpy as np

rank = MPI.COMM_WORLD.rank  # The process ID (integer 0-3 for 4-process run)

f = h5py.File('parallel_test.hdf5', 'w', driver='mpio', comm=MPI.COMM_WORLD)

size = 500000000
dset = f.create_dataset('test', (2*size,), dtype='f8')
dset[rank*size:(rank+1)*size] = np.random.rand(size)

f.close()

根据HDF5帮助文档的一个问题,对于HDF5-1.10.2之前的版本会有这个限制(虽然查看发现安装的版本是1.10.6,已经比1.10.2要高了,但是实测不行,之后实测的结果是1.12.1可以),这和MPI的并行I/O操作工具 ROMIO 有关,详见这个博客,一种解决办法是多开一些进程保证每一个进程的单次写入小于2GB。更多关于hdf5的问答可参照并行HDF5帮助文档。作者认为这可能是因为与这个版本共同安装的mpi4py版本过低导致的。
如果需要支持单次读写高于2GB的h5py,需要自己安装hdf5。作者在Python3.6.13下进行测试。
使用conda install -c conda-forge hdf5=*=*mpich*来安装(来自github的问答),也可以用conda install -c conda-forge hdf5=1.12.1=*mpich*指定安装版本,可以用--force-reinstall强制重装。
然后使用CC="mpicc" HDF5_MPI="ON" pip install --no-binary=h5py --no-cache-dir h5py来安装支持并行的h5py(见h5py文档)。
注意,以上安装需要gcc,如果没有,使用conda install -c conda-forge gcc来安装。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值