跳过正文
HPC 软件环境:CMake、GCC、OpenMPI 与 Modulefile

HPC 软件环境:CMake、GCC、OpenMPI 与 Modulefile

Ridiculous
作者
Ridiculous
Love is the greatest magic in the world.

这篇整理手动编译安装 CMake、GCC、OpenMPI,以及用 Environment Modules 管理软件环境的方法。

CMake
#

源码安装示例:

wget https://github.com/Kitware/CMake/releases/download/v3.31.0/cmake-3.31.0.tar.gz
tar -zxvf cmake-3.31.0.tar.gz
cd cmake-3.31.0
mkdir build
cd build
../bootstrap --prefix=/home/apps/cmake-3.31.0
make -j 16
make install -j 16

GCC 依赖
#

GCC 13/14 等新版本需要 GMP、MPFR、MPC。建议按以下顺序安装:

  1. GMP
  2. MPFR
  3. MPC
  4. GCC

GMP
#

wget ftp://ftp.gnu.org/gnu/gmp/gmp-5.0.1.tar.bz2
tar -vxf gmp-5.0.1.tar.bz2
cd gmp-5.0.1
./configure --prefix=/home/apps/gmp-5.0.1
make
make install
make check

MPFR
#

wget https://ftp.gnu.org/gnu/mpfr/mpfr-3.1.5.tar.xz
tar -vxf mpfr-3.1.5.tar.xz
cd mpfr-3.1.5
./configure --prefix=/home/apps/mpfr-3.1.5 --with-gmp=/home/apps/gmp-5.0.1
make
make install

MPC
#

wget http://www.multiprecision.org/downloads/mpc-0.9.tar.gz
tar -vxf mpc-0.9.tar.gz
cd mpc-0.9
./configure --prefix=/home/apps/mpc-0.9 --with-gmp=/home/apps/gmp-5.0.1 --with-mpfr=/home/apps/mpfr-3.1.5
make
make install

GCC
#

在 GCC 源码目录下创建 build,在 build 目录中 configure:

mkdir build
cd build

../configure \
  --prefix=/software/gcc-14.2.0 \
  --with-gmp=/software/gmp-6.3.0 \
  --with-mpfr=/software/mpfr-4.2.1 \
  --with-mpc=/software/mpc-1.3.1 \
  --with-gmp-include=/software/gmp-6.3.0/include \
  --with-gmp-lib=/software/gmp-6.3.0/lib \
  --with-mpfr-include=/software/mpfr-4.2.1/include \
  --with-mpfr-lib=/software/mpfr-4.2.1/lib \
  --with-mpc-include=/software/mpc-1.3.1/include \
  --with-mpc-lib=/software/mpc-1.3.1/lib

make -j 24
make install

旧路径示例:

../configure --prefix=/home/apps/gcc/11.3.0 \
  --with-gmp=/home/apps/gmp-5.0.1 \
  --with-mpfr=/home/apps/mpfr-3.1.5 \
  --with-mpc=/home/apps/mpc-0.9 \
  --with-gmp-include=/home/apps/gmp-5.0.1/include \
  --with-gmp-lib=/home/apps/gmp-5.0.1/lib \
  --with-mpfr-include=/home/apps/mpfr-3.1.5/include \
  --with-mpfr-lib=/home/apps/mpfr-3.1.5/lib \
  --with-mpc-include=/home/apps/mpc-0.9/include \
  --with-mpc-lib=/home/apps/mpc-0.9/lib

OpenMPI
#

下载源码:

https://www.open-mpi.org/

安装示例:

./configure --prefix=/home/apps/openmpi/5.0.5
make -j 24
make install

如果是 IB/GPU 场景,更推荐显式使用 UCX,并确认是否需要 CUDA-aware MPI。复杂依赖可以交给 Spack 管理。

Modulefile
#

假设软件安装在:

/home/apps/openmpi/5.0.5

Modulefile 目录:

/home/modulefiles/openmpi/5.0.5

OpenMPI modulefile 示例:

#%Module
set version 5.0.5
set OPENMPI_HOME /home/apps/openmpi/5.0.5

prepend-path PATH "${OPENMPI_HOME}/bin"
prepend-path LD_LIBRARY_PATH "${OPENMPI_HOME}/lib"
prepend-path LIBRARY_PATH "${OPENMPI_HOME}/lib"
prepend-path CPATH "${OPENMPI_HOME}/include"
setenv MPI_HOME "${OPENMPI_HOME}"

GCC modulefile 示例:

#%Module
set version 14.1.0
set GCC_HOME /software/gcc-14.1.0

prepend-path PATH "${GCC_HOME}/bin"
prepend-path LD_LIBRARY_PATH "${GCC_HOME}/lib"
prepend-path LIBRARY_PATH "${GCC_HOME}/lib"

默认版本文件 .version

#%Module
set ModulesVersion "5.0.5"

使用:

module avail
module load openmpi/5.0.5
module load gcc/14.1.0