Quantum Espresso 6.8 with GPU support (HPE)

ウェブページ

https://www.quantum-espresso.org/

バージョン

6.8

ビルド環境

  • NVIDIA HPC SDK 22.11 (nompi version)
  • Intel MKL 2022.2.1
  • HPC-X 2.11 (Open MPI 4.1.4)
    • 実際のビルドには HPC-X 2.13.1 を使用。後で runtime のみ HPC-X 2.11 に切り替え。以下では HPC-X 2.11 を使ったとして記述

ビルドに必要なファイル

  • qe-6.8-ReleasePack.tgz

ビルド手順

#!/bin/sh

QE_VERSION=6.8
BASEDIR=/home/users/${USER}/Software/QE/${QE_VERSION}
TARBALL=${BASEDIR}-hpe/qe-${QE_VERSION}-ReleasePack.tgz

INSTDIR=/apl/qe/6.8-gpu
PARALLEL=12

CUDA_HOME=/apl/nvhpc/22.11/Linux_x86_64/22.11/cuda/11.8

# --------------------------------------------------------------------
umask 0022

module -s purge
module -s load nvhpc/22.11-nompi
module -s load mkl/2022.2.1
module -s load openmpi/4.1.5-hpcx/nv22

export LANG=C
export LC_ALL=C
ulimit -s unlimited

cd ${INSTDIR}
if [ -d qe-${QE_VERSION} ]; then
  mv qe-${QE_VERSION} qe-erase
  rm -rf qe-erase &
fi

tar zxf ${TARBALL}
mv qe-${QE_VERSION}/* .
mv qe-${QE_VERSION}/.[a-z]* .
rmdir qe-${QE_VERSION}

sed -i -e "s/wget -O/wget –-trust-server-names -O/" \
       -e "s/curl -o/curl -L -o/" test-suite/check_pseudo.sh

export MPIF90=mpif90
export MPIFC=mpif90
export MPIF77=mpif90
export MPICC=mpicc
export MPICXX=mpicxx

FC=nvfortran F90=nvfortran F77=nvfortran CC=nvc CXX=nvc++ \
    ./configure --enable-openmp \
                --enable-openacc \
                --with-scalapack=no \
                --with-cuda=${CUDA_HOME} \
                --with-cuda-cc=80 \
                --with-cuda-runtime=11.8

# force to add curand to library list
sed -i -e "s/cusolver/cusolver,curand/" make.inc

# https://gitlab.com/QEF/q-e/-/issues/358
sed -i -e "s/libqemod.a/libqemod.a ..\/..\/upflib\/libupf.a/" \
    TDDFPT/tools/Makefile \
    GWW/simple_ip/Makefile \
    GWW/gww/Makefile \
    GWW/simple_bse/Makefile

# pwall(pw neb ph pp pwcond acfdt) cp ld1 tddfpt hp xspectra gwl
echo "==== all ===="
make -j${PARALLEL} all

cd test-suite
make pseudo
#make run-tests-serial
#make clean
#make run-tests-parallel
cd ..

メモ

  • テストはログインノードでは実行できないため、別途 GPU ノードにて実行
    • (cd test-suite && make pseudo だけはあらかじめログインノードで実行)
    • pw_vdw のテストで beef-spin, beef, vdw-d3 が失敗。条件変えても改善せず。
  • HPC-X 2.13.1 利用時はマルチノード計算が失敗。runtime ライブラリを HPC-X 2.11 にすることで改善。