帮同事在arm机器上编译 OpenMPI 环境,本文简要记录一下构建过程,其中所有道的 bash 命令适用于 RHEL 8及衍生系统。

首先,安装必要的工具:

dnf install wget cmake python perl git environment-modules glibc-devel

接着,启用 module 命令:

source /etc/profile 

由于所需OpenMPI需要由ArmFlang而非gcc编译,因此需要先安装 ArmFlang:

bash <(curl -L https://developer.arm.com/-/media/Files/downloads/hpc/arm-compiler-for-linux/install.sh)

如果你的系统被上述脚本支持,该命令直接会运行安装。否则,需要手动安装:

tar -xf 安装包.tar
cd <package_name>
bash ./<package_name>.sh -a

更新模块文件配置:

# 可将命令写入到 ~/.bashrc 文件内
export MODULEPATH=$MODULEPATH:/opt/arm/modulefiles

接下来就可以用 module avail 命令查看安装的 ArmFlang 编译器。

我们安装的是 ArmFlang 24.04,以及 GCC 13.2.0,加载这两个模块:

module load acfl/24.04
module load gnu/13.2.0

最后是下载OpenMPI以及编译安装:

wget https://download.open-mpi.org/release/open-mpi/v4.1/openmpi-4.1.2.tar.gz
tar -xzf openmpi-4.1.2.tar.gz cd openmpi-4.1.2
CC=armclang CXX=armclang++ FC=armflang ./configure --prefix=/opt/openmpi
make -j8
make install

一切顺利的话,使用 ArmFlang 编译的 OpenMPI 程序就构建好了。