如何在 Linux 上构建具有 MPI 支持的 h5py(针对并行 HDF5),2023 年

问题描述 投票:0回答:1

我正在Linux服务器上重现一个深度学习模型,它使用h5py来处理数据。

但是出现以下错误:

Traceback (most recent call last):
  File "...", line ..., in ...
    fdest = h5py.File(dest, "a", driver="mpio", comm=MPI.COMM_WORLD)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "...\Lib\site-packages\h5py\_hl\files.py", line 558, in __init__
    fapl = make_fapl(driver, libver, rdcc_nslots, rdcc_nbytes, rdcc_w0,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "...\Lib\site-packages\h5py\_hl\files.py", line 177, in make_fapl
    set_fapl(plist, **kwds)
  File "...\Lib\site-packages\h5py\_hl\files.py", line 53, in _set_fapl_mpio
    raise ValueError("h5py was built without MPI support, can't use mpio driver")
ValueError: h5py was built without MPI support, can't use mpio driver

这意味着我的 h5py 是在没有 MPI 支持的情况下构建的

但是,官方文档没有给出明确的说明如何构建支持MPI的h5py

所以问题是,如何在 2023 年的 Linux 上构建具有 MPI 支持(针对并行 HDF5)的 h5py。

python mpi hdf5 h5py
1个回答
0
投票

我的方法应该在 Ubuntu 和 RedHat 上都可以工作,无需超级用户许可

0。准备工作

  1. gcc,作为构建必不可少的
  2. anaconda 或 miniconda

1.安装 open-mpi

前往 openmpi 版本的官方网站

下载最新版本(以“.tar.gz”结尾)。

打开终端并将目录更改为下载目的地,在我的情况下,我应该运行:

cd ~/Downloads

假设包的名称是“openmpi-4.1.5.tar.gz”。

运行以下命令解压:

tar xvzf openmpi-4.1.5.tar.gz

您将在当前目录下得到一个名为“openmpi-4.1.5”的文件夹。
记住文件夹的路径。
测试时我们会回到这里。

在终端中,将目录更改为文件夹。

运行以下命令进行配置:

./configure --prefix=/home/username/openmpi

运行以下命令进行安装:

sudo make all install

运行以下命令打开.bashrc(如果您不想使用vim,请使用其他文本编辑器,例如

nano
gredit
。):

sudo vim ~/.bashrc

将以下行添加到 .bashrc 的底部:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/username/openmpi/lib

运行以下命令立即激活更改:

source ~/.bashrc

将终端目录更改为之前解压文件夹的示例文件夹。
就我而言,我应该运行以下命令:

cd ~/Downloads/openmpi-4.1.5/examples

运行以下命令来构建:

make

运行以下命令来运行测试文件

mpirun -np 4 hello_c

如果输出是4行“Hello World”,那么你已经成功安装了open-mpi。

2.安装HDF5

前往HDF5的官方网站下载最新版本的HDF5(在我的例子中是hdf5-1.14.2.tar.gz)

打开终端。将目录更改为下载目的地。

运行以下代码解压:

tar xvzf hdf5-1.14.2.tar.gz

将目录更改为解压后的文件夹。

运行以下代码将 MPI-C 设置为编译器:

export CC=mpicc

运行以下代码打开HDF5_MPI:

export HDF5_MPI="ON"

运行以下代码来更改构建配置:

./configure --enable-shared --enable-parallel --prefix=/home/username/hdf5

运行以下代码设置默认 HDF5_dir:

export HDF5_DIR="/home/username/hdf5"

运行以下代码进行编译:

make

运行以下代码来安装 HDF5:

make install

运行以下代码来安装其他一些东西(对不起,我不确定“其他东西”是什么。):

make check-install

3.使用 MPI 和 HDF5 构建安装 h5py

创建并激活新环境。

conda create -n NewEnv
conda activate NewEnv

运行以下命令在环境中安装 openmpi:

conda install openmpi

安装树附加包:

conda install gcc_linux-64
conda install gxx_linux-64
conda install gfortran_linux-64

运行以下命令将 MPI-C 设置为编译器:

export CC=mpicc

运行以下代码打开HDF5_MPI:

export HDF5_MPI="ON"

运行以下代码设置默认 HDF5_dir:

export HDF5_DIR="/home/username/hdf5"

运行以下代码从源代码构建 h5py:

pip install --no-binary=h5py h5py

好的。现在您应该已经成功构建了具有 MPI 支持的 h5py(针对并行 HDF5)。

© www.soinside.com 2019 - 2024. All rights reserved.