我正在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。
前往 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。
前往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
创建并激活新环境。
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)。