Quantum Espresso 6.8 with GPU support (HPE)

Webpage

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

Version

6.8

Build Environment

  • 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 was used in the actual build. Runtime library was switched to HPC-X 2.11 later. In the following, it is assumed that HPC-X 2.11 was used in the build.

Files Required

  • qe-6.8-ReleasePack.tgz

Build Procedure

#!/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 ..

Notes

  • Tests were done at GPU equipped computation nodes (GPGPU not available in login nodes).
    • (cd test-suite && make pseudo was performed at ccfep.)
    • beef-spin, beef, and vdw-d3 of pw_vdw tests failed. Changing compiler options and MPI implementation do not help.
  • Multi-node runs failed with HPC-X 2.13.1. Switching runtime library to HPC-X 2.11 fixed the problem.