Quantum Espresso 7.4

Webpage

https://www.quantum-espresso.org/
https://gitlab.com/QEF/q-e

Version

7.4

Build Environment

  • GCC 12.2.1 (gcc-toolset-12)
  • Open MPI 4.1.6
  • OpenBLAS 0.3.29 (lp64)
  • Scalapack 2.2.2

Files Required

  • q-e-qe-7.4.tar.gz (from gitlab)
  • hdf5-1.14.5.tar.gz
  • libxc-6.2.2.tar.bz2
  • elpa-2024.05.001.tar.gz
  • (some of files are downloaded in the procedure below)

Build Procedure

elpa-2024.05.001

#!/bin/sh

ELPA_VERSION=2024.05.001
INSTDIR=/apl/qe/7.4/elpa-2024.05.001
WORKDIR=/gwork/users/${USER}

BASEDIR=/home/users/${USER}/Software/ELPA/${ELPA_VERSION}
TARBALL=${BASEDIR}/elpa-${ELPA_VERSION}.tar.gz

PARALLEL=12

#---------------------------------------------------------------------------
umask 0022
ulimit -s unlimited

module purge
module load gcc-toolset/12
module load openmpi/4.1.6/gcc12
module load openblas/0.3.29-lp64
module load scalapack/2.2.2-ompi416gcc-lp64

export LANG=C
export LC_ALL=C

export FC=mpif90
export CC=mpicc
export CXX=mpicxx
export CFLAGS="-march=znver3"

export FCFLAGS="-m64"
export LDFLAGS="-lopenblas -lscalapack"

cd ${WORKDIR}
if [ -d elpa-${ELPA_VERSION} ]; then
 mv elpa-${ELPA_VERSION} elpa-erase
 rm -rf elpa-erase &
fi
tar zxf ${TARBALL}
cd elpa-${ELPA_VERSION}

./configure --prefix=${INSTDIR} \
           --enable-openmp \
           --disable-avx512-kernels
make -j ${PARALLEL}
make check
#make check && make install
make install

hdf5-1.15.5 (parallel version)

#!/bin/sh

QE_VERSION=7.4
VERSION=1.14.5
INSTALL_PREFIX=/apl/qe/7.4/hdf5-1.14.5

BASEDIR=/home/users/${USER}/Software/QE/${QE_VERSION}/HDF5
TARBALL=${BASEDIR}/hdf5-${VERSION}.tar.gz
WORKDIR=/gwork/users/${USER}

PARALLEL=32
export LANG=C

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

module -s purge
module -s load gcc-toolset/12
module -s load openmpi/4.1.6/gcc12

cd ${WORKDIR}
if [ -d hdf5-${VERSION} ]; then
 mv hdf5-${VERSION} hdf5-erase
 rm -rf hdf5-erase &
fi

tar zxf ${TARBALL}
cd hdf5-${VERSION}
mkdir build && cd build
cmake .. \
     -DCMAKE_INSTALL_PREFIX=${INSTALL_PREFIX} \
     -DHDF5_BUILD_FORTRAN=ON \
     -DHDF5_ENABLE_PARALLEL=ON \
     -DMPIEXEC_MAX_NUMPROCS=${PARALLEL}
make -j${PARALLEL}
make install
make test

libxc-6.2.2

#!/bin/sh

QE_VERSION=7.4
VERSION=6.2.2
INSTALL_PREFIX=/apl/qe/7.4/libxc-6.2.2

BASEDIR=/home/users/${USER}/Software/libxc/${VERSION}
TARBALL=${BASEDIR}/libxc-${VERSION}.tar.bz2
WORKDIR=/gwork/users/${USER}

PARALLEL=32
export LANG=C

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

module -s purge
module -s load gcc-toolset/12

cd ${WORKDIR}
if [ -d libxc-${VERSION} ]; then
 mv libxc-${VERSION} libxc-erase
 rm -rf libxc-erase &
fi

tar jxf ${TARBALL}
cd libxc-${VERSION}
mkdir build && cd build
cmake .. \
     -DCMAKE_INSTALL_PREFIX=${INSTALL_PREFIX} \
     -DENABLE_FORTRAN=ON
make -j${PARALLEL}
make install
make test

QE

#!/bin/sh

QE_VERSION=7.4
BASEDIR=/home/users/${USER}/Software/QE/${QE_VERSION}
TARBALL=${BASEDIR}/q-e-qe-${QE_VERSION}.tar.gz

D3Q_ID="808acbaf012468f42147d8d6af452ec64b9e5ab0"
GIPAW_ID="3bbf5a931fc195503c3f01565ac43cac8c05db44"
ENVIRON_URL="https://github.com/environ-developers/Environ.git"

WORKDIR=/gwork/users/${USER}

INSTDIR=/apl/qe/7.4
PARALLEL=24

CMAKE_PREFIX_PATH="${INSTDIR}/hdf5-1.14.5;${INSTDIR}/libxc-6.2.2;/apl/openblas/0.3.29-gcc/lp64"
# --------------------------------------------------------------------
umask 0022

module -s purge
module -s load gcc-toolset/12
module -s load openmpi/4.1.6/gcc12
module -s load openblas/0.3.29-lp64
module -s load scalapack/2.2.2-ompi416gcc-lp64
## gui; not necessary while building
#module -s load itcl/3.4.4
#module -s load itk/3.4.2
#module -s load iwidgets/4.1.1

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

if [ ! -d ${WORKDIR} ]; then
 mkdir -p ${WORKDIR}
fi

cd ${WORKDIR}
if [ -d q-e-qe-${QE_VERSION} ]; then
 mv q-e-qe-${QE_VERSION} qe-erase
 rm -rf qe-erase &
fi
if [ -d Environ ]; then
 mv Environ Environ-erase
 rm -rf Environ-erase &
fi
tar zxf ${TARBALL}
git clone ${ENVIRON_URL} Environ

QE_WORKDIR=${WORKDIR}/q-e-qe-${QE_VERSION}
ENVIRON_WORKDIR=${WORKDIR}/Environ

# environ prep
cd ${ENVIRON_WORKDIR}
sed -i -e "s/wget -O/wget –-trust-server-names -O/" \
      -e "s/curl -o/curl -L -o/" tests/check_pseudo.sh
FC=mpif90 ./configure \
  --with-qe=${QE_WORKDIR} \
  --enable-openmp
make -j${PARALLEL} compile

# QE
cd ${QE_WORKDIR}
sed -i -e "s/wget -O/wget –-trust-server-names -O/" \
      -e "s/curl -o/curl -L -o/" test-suite/check_pseudo.sh
sed -i -e "s/[^ ]* d3q/${D3Q_ID} d3q/" \
      -e "s/[^ ]* qe-gipaw/${GIPAW_ID} qe-gipaw/" \
   external/submodule_commit_hash_records
sed -i -e "s/elpa-20/elpa_openmp-20/" \
      -e "s/NAMES elpa$/NAMES elpa elpa_openmp/" cmake/FindELPA.cmake

mkdir build && cd build
cmake .. \
 -DCMAKE_INSTALL_PREFIX=${INSTDIR} \
 -DCMAKE_Fortran_COMPILER=mpif90 \
 -DCMAKE_Fortran_FLAGS="-ffree-line-length-256" \
 -DCMAKE_C_COMPILER=mpicc \
 -DCMAKE_CXX_COMPILER=mpicxx \
 -DCMAKE_PREFIX_PATH="${CMAKE_PREFIX_PATH}" \
 -DESPRESSO_PSEUDO=${INSTDIR}/pseudo \
 -DBLA_VENDOR=OpenBLAS \
 -DQE_ENABLE_OPENMP=ON \
 -DQE_ENABLE_MPI=ON \
 -DQE_ENABLE_MPI_GPU_AWARE=OFF \
 -DQE_ENABLE_SCALAPACK=ON \
 -DQE_ENABLE_ELPA=ON \
 -DELPA_ROOT=${INSTDIR}/elpa-2024.05.001 \
 -DQE_ENABLE_LIBXC=ON \
 -DQE_ENABLE_HDF5=ON \
 -DQE_ENABLE_PLUGINS="d3q;pw2qmcpack;gipaw" \
 -DQE_ENABLE_FOX=ON \
 -DQE_WANNIER90_INTERNAL=ON \
 -DQE_MBD_INTERNAL=ON \
 -DQE_DEVICEXLIB_INTERNAL=ON \
 -DQE_ENABLE_ENVIRON=ON \
 -DENVIRON_ROOT=${ENVIRON_WORKDIR} \
 -DQE_ENABLE_OSCDFT=ON

make -j${PARALLEL}
make install
ln -s ${INSTDIR}/bin ${QE_WORKDIR}/bin
cp -r ${QE_WORKDIR}/pseudo ${INSTDIR}/pseudo
mv ${QE_WORKDIR}/pseudo ${QE_WORKDIR}/pseudo.org
ln -s ${INSTDIR}/pseudo ${QE_WORKDIR}/pseudo
make test

# environ test
export LD_LIBRARY_PATH="${INSTDIR}/hdf5-1.14.5/lib:${INSTDIR}/elpa-2024.05.001/lib:${LD_LIBRARY_PATH}"
export OMP_NUM_THREADS=4
cd ${ENVIRON_WORKDIR}/tests
make run-tests

Test Results

elpa, libxc

All the tests have passed successfully.

HDF5

Not available ones:

  • 915 - H5REPACK-szip_individual (Disabled)
  • 916 - H5REPACK-szip_all (Disabled)
  • 933 - H5REPACK-all_filters (Disabled)
  • 937 - H5REPACK-szip_copy (Disabled)
  • 938 - H5REPACK-szip_remove (Disabled)
  • 987 - H5REPACK-remove_all (Disabled)
  • 988 - H5REPACK-deflate_convert (Disabled)
  • 989 - H5REPACK-szip_convert (Disabled)

Failed tests:

  • 135 - MPI_TEST_t_pmulti_dset (Timeout)
  • 137 - MPI_TEST_t_shapesame (Timeout)
  • 138 - MPI_TEST_t_filters_parallel (Failed)

Environ

There are following errors. (serial test)

pw_spin - radical.in (arg(s): vacuum-pcc.in): **FAILED**.
f1
   ERROR: absolute error 2.73e-02 greater than 1.00e-03. (Test: 0.0212.  Benchm
ark: 0.0485.)
e1
   ERROR: absolute error 2.47e-02 greater than 5.00e-05. (Test: -12.085846.  Be
nchmark: -12.061138.)

pw_spin - radical.in (arg(s): dielectric-pcc.in): **FAILED**.
f1
   ERROR: absolute error 3.33e-02 greater than 1.00e-03. (Test: 0.0073.  Benchm
ark: 0.0406.)
e1
   ERROR: absolute error 2.88e-02 greater than 5.00e-05. (Test: -12.095228.  Be
nchmark: -12.066421.)

QE

Following tests have failed. Logfile is available at /apl/qe/7.4/testlog.

  • 348 - system--cp_h2o_scan_libxc-correctness (Failed)
  • 375 - system--oscdft_pp-correctness (Failed)
  • 376 - system--oscdft_pw-correctness (Failed)
  • 377 - system--oscdft_pw--nooscdft (Failed)

Notes

  • This version (7.4) is not downloadable from the official website (www.quantum-espresso.org) as of Jan 23, 2025. Version 7.3.1 is available.
  • We switched from "configure" to "cmake".
  • When gcc13 was employed, "internal compiler error" occurs upon the build of Environ. ("associate" related problem?)
  • No significant performance difference is observed between gcc 8, 12 , and 13 versions. (tests on ausurf system)
  • Intel oneapi compilers version sometimes show better performance than gcc version. On the other hand, the opposite case also exists. (e.g. -nk parallel runs of on ausurf system) We decided to choose gcc version this time. (Intel oneapi can be the fastest in some cases.)
  • Versions of d3q and gipaw specified in QE 7.4 sources do not work well. We replaced them with the QE 7.4 compatible versions.
  • Not sure how to handle openmp-enabled ELPA with cmake...
  • libxc-7.0.0 was not considered.
  • OS-CDFT was enabled. However, there can be some problems with its tests?