Quantum ESPRESSO 7.5

Webpage

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

Version

7.5

Build Environment

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

Files Required

  • q-e-qe-7.5.tar.gz (downloaded from gitlab)
  • elpa-2025.06.001.tar.gz
  • hdf5-1.14.6.tar.gz
  • libxc-7.0.0.tar.bz2
  • (some of files will be download in the procedure below.)

Build Procedure

elpa-2025.06.001

#!/bin/sh

ELPA_VERSION=2025.06.001
INSTDIR=/apl/qe/7.5/elpa-2025.06.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
export OMP_NUM_THREADS=4

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

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 \
           --enable-scalapack-tests \
           --disable-avx512-kernels
make -j ${PARALLEL}
make check
#make check && make install
make install

All the tests have passed successfully.

hdf5-1.14.6 (parallel)

#!/bin/sh

QE_VERSION=7.5
VERSION=1.14.6
INSTALL_PREFIX=/apl/qe/7.5/hdf5-1.14.6

BASEDIR=/home/users/${USER}/Software/HDF5/${VERSION}
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.8/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

Test result:

  • The following tests did not run:
    • 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)
  • The following tests FAILED:
    • 127 - MPI_TEST_t_bigio (Timeout)
    • 137 - MPI_TEST_t_shapesame (Timeout)

libxc-7.0.0

#!/bin/sh

QE_VERSION=7.5
VERSION=7.0.0
INSTALL_PREFIX=/apl/qe/7.5/libxc-7.0.0

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

All the tests have passed successfully.

QE

#!/bin/sh

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

ENVIRON_URL="https://github.com/environ-developers/Environ.git"

WORKDIR=/gwork/users/${USER}

INSTDIR=/apl/qe/7.5
PARALLEL=24

ELPA_ROOT=${INSTDIR}/elpa-2025.06.001
HDF5_ROOT=${INSTDIR}/hdf5-1.14.6
LIBXC_ROOT=${INSTDIR}/libxc-7.0.0
OPENBLAS_ROOT=/apl/openblas/0.3.29-gcc/lp64

# ELPA, HDF5, libxc are assumed to be installed in ${INSTDIR}
CMAKE_PREFIX_PATH="${HDF5_ROOT};${LIBXC_ROOT};${OPENBLAS_ROOT}"

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

module -s purge
module -s load gcc-toolset/12
module -s load openmpi/4.1.8/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

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/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=${ELPA_ROOT} \
 -DQE_ENABLE_LIBXC=ON \
 -DQE_ENABLE_HDF5=ON \
 -DQE_ENABLE_PLUGINS="d3q;pw2qmcpack;gipaw;legacy" \
 -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="${HDF5_ROOT}/lib:${ELPA_ROOT}/lib:${LD_LIBRARY_PATH}"
export OMP_NUM_THREADS=4
cd ${ENVIRON_WORKDIR}/tests
make run-tests

Test result (QE)

Following tests have failed. Copy of test log can be found in /apl/qe/7.5/testlog.

  • 212:system--pw_plugins-correctness => Cannot find any previous test outputs.
  • 371:system--oscdft_pp-correctness => Cannot find any previous test outputs.
  • 372:system--oscdft_pw-correctness => Different sets of data extracted from benchmark and test.
  • 373:system--oscdft_pw--nooscdft => oscdft.x does not exist (oscdft_et.x & oscdft_pp.x exist).

Notes

  • GCC13 & GCC14 versions are very slightly slower than GCC12.
  • Open MPI 5.0.x version failed/hung on some tests. Open MPI 4.1.8 is free from those issues.
  • If Intel oneAPI 2025 environment is employed, pw.x shows better performance than GCC version for some input setting. However, d3q and Environ are not available for Intel compilers. We thus employed GCC for this QE version.
    • Intel oneAPI 2024 environment may have some problems for this QE versions; it is terribly slow. (The cause has not been verified.)
  • GCC + Intel MPI version hung on elpa test.
  • GCC + openblas show slightly better performance than GCC + mkl.
  • (AOCC is not verified.)