You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

2023年Linux环境下编译构建支持MPI(基于并行HDF5)的h5py方法

2023年Linux环境下编译构建支持MPI(基于并行HDF5)的h5py方法

我之前也碰到过一模一样的报错,折腾了好一阵才搞定,2023年在Linux上编译支持MPI的h5py其实步骤挺清晰的,给你整理了详细流程:

一、先确认MPI环境已安装

并行HDF5和MPI版h5py都依赖MPI环境,先检查系统有没有装:

mpicc --version

如果没输出版本信息,就用系统包管理器安装:

  • Ubuntu/Debian系:
    sudo apt update && sudo apt install openmpi-bin libopenmpi-dev
    
  • CentOS/RHEL系:
    sudo yum install openmpi-devel
    

安装后记得激活MPI环境,比如CentOS可能需要执行source /etc/profile.d/openmpi.sh

二、编译安装并行版HDF5

默认系统自带的HDF5大多是串行版,必须自己编译并行版本:

  1. 下载HDF5源码(推荐2023年的稳定版,比如1.14.3),解压后进入源码目录:
    wget https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.14/hdf5-1.14.3/src/hdf5-1.14.3.tar.gz
    tar -xzf hdf5-1.14.3.tar.gz
    cd hdf5-1.14.3
    
  2. 配置编译参数,开启并行支持并指定安装路径:
    ./configure --enable-parallel --prefix=/usr/local/hdf5-parallel
    
    这里--prefix可以改成你自己想安装的路径,比如~/local/hdf5-parallel(如果用用户目录就不用sudo)。
  3. 编译并安装:
    make -j$(nproc)  # 用所有CPU核心加速编译
    sudo make install  # 如果prefix是系统目录需要sudo
    
  4. 配置环境变量,让系统找到并行HDF5:
    编辑~/.bashrc或者~/.zshrc,加入:
    export HDF5_DIR=/usr/local/hdf5-parallel
    export LD_LIBRARY_PATH=$HDF5_DIR/lib:$LD_LIBRARY_PATH
    
    然后生效环境变量:
    source ~/.bashrc
    

三、编译安装支持MPI的h5py

不能直接用pip install h5py(默认是串行版),必须从源码编译:

  1. 先卸载已有的串行版h5py:
    pip uninstall -y h5py
    
  2. 用pip从源码编译安装,指定MPI支持:
    HDF5_MPI=1 pip install --no-binary=h5py h5py
    
    这里HDF5_MPI=1是关键,告诉编译脚本要启用MPI支持;--no-binary=h5py强制从源码编译,不用预编译的二进制包。
    如果是从GitHub克隆h5py源码安装,进入源码目录后执行:
    HDF5_MPI=1 python setup.py install
    

四、验证是否成功

写个简单的测试脚本test_h5py_mpi.py

import h5py
from mpi4py import MPI

comm = MPI.COMM_WORLD
rank = comm.Get_rank()

# 用mpio驱动打开文件
with h5py.File("test_mpi.h5", "a", driver="mpio", comm=comm) as f:
    if rank == 0:
        # 进程0创建数据集
        f.create_dataset("test_data", data=[1, 2, 3, 4])
    comm.Barrier()  # 等待所有进程同步
    if rank == 1:
        # 进程1读取数据集
        print(f"Process {rank} reads data: {f['test_data'][:]}")

然后用MPI启动2个进程运行:

mpiexec -n 2 python test_h5py_mpi.py

如果没有报错,并且进程1能正确输出数据集内容,就说明MPI版h5py已经成功安装啦!

一些注意事项

  • 如果编译时提示找不到MPI或者HDF5,先检查环境变量HDF5_DIRLD_LIBRARY_PATH是否正确配置。
  • 确保mpi4py已经安装,执行pip install mpi4py即可,它会自动链接系统的MPI环境。
  • 如果用conda环境,建议先激活conda环境再执行所有步骤,避免和系统包冲突。

备注:内容来源于stack exchange,提问作者JamesNULLiu

火山引擎 最新活动