Quantum Espresso 7.3
Webpagehttps://www.quantum-espresso.org/

Version7.3

Build Environment
GCC 10.3.1 (gcc-toolset-10)
Open MPI 4.1.5
OpenBLAS 0.3.26 (lp64)
Scalapack 2.2.0
ELPA 2023.11.001

Files Required
qe-7.3-ReleasePack.tar.gz
elpa-2023.11.001.tar.gz.gitmodules
This is missing in the release pack. It seems to be necessary to build W90 etc.

Build Procedure
ELPA 2023.11.001#!/bin/sh
ELPA_VERSION=2023.11.001
INSTDIR=/apl/qe/7.3/elpa-2023.11.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/10
module load openmpi/4.1.5/gcc10
module load openblas/0.3.26-lp64
module load scalapack/2.2.0-ompi416gcc12-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 &fitar 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

QE 7.3#!/bin/sh
QE_VERSION=7.3
BASEDIR=/home/users/${USER}/Software/QE/${QE_VERSION}TARBALL=${BASEDIR}/qe-${QE_VERSION}-ReleasePack.tar.gz
GITMODULES=${BASEDIR}/.gitmodules
ELPA=/apl/qe/7.3/elpa-2023.11.001
ELPAINC=$ELPA/include/elpa_openmp-2023.11.001/modules \ELPALIB=$ELPA/lib/libelpa_openmp.a
INSTDIR=/apl/qe/7.3
PARALLEL=12# -------------------------------------------------------------------umask 0022
module -s purge
module -s load gcc-toolset/10
module -s load openmpi/4.1.5/gcc10
module -s load openblas/0.3.26-lp64
module -s load scalapack/2.2.0-ompi416gcc12-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 ${INSTDIR} ]; thenmkdir -p ${INSTDIR}fi
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.shexport MPIF90=mpif90
export MPIFC=mpif90

export MPIF77=mpif90
export MPICC=mpicc
export MPICXX=mpicxx
export BLAS_LIBS="-lopenblas"
export SCALAPACK_LIBS="-lopenblas -lscalapack"
cp ${GITMODULES} .
rm -rf external/wannier90
mkdir -p external/wannier90
sed -i -e '/external\/wannier90/s/lib/wannier lib/' install/plugins_makefile
FC=gfortran F90=gfortran F77=gfortran CC=gcc CXX=g++ \./configure --enable-parallel \--enable-openmp \--with-scalapack \--with-elpa-include=$ELPAINC \--with-elpa-lib=$ELPALIB
for i in w90; do
echo "==== $i ===="
make $idone# pwall(pw neb ph pp pwcond acfdt) cp ld1 tddfpt hp xspectra gwl
echo "==== all ===="
make -j${PARALLEL} all# gcc10/11/12 can't build want#for i in want; do# echo "==== $i ===="# make $i#done# gipaw for QE 7.3 doesn't seem to be available# d3q depends on old version of PH code? (setlocq, setlocq_coul)for i in all_currents epw couple kcw gwl gui; doecho "==== $i ===="
make -j${PARALLEL} $idone# gcc10/11/12 can't build yambo#for i in yambo; do# echo "==== $i ===="# make $i#done
cd test-suite
export OMP_NUM_THREADS=1
make run-tests-pw NPROCS=1
make run-tests-cp NPROCS=1
make run-tests-ph NPROCS=1
make run-tests-epw NPROCS=1
make run-tests-hp NPROCS=1
make run-tests-tddfpt NPROCS=1
make run-tests-kcw NPROCS=1
make run-tests-all_currents NPROCS=1
make run-tests-pp NPROCS=1
make run-tests-zg NPROCS=1#make run-tests-xsd-pw NPROCS=1
make clean
export OMP_NUM_THREADS=2
make run-tests-pw NPROCS=4
make run-tests-cp NPROCS=4

make run-tests-ph NPROCS=4
make run-tests-epw NPROCS=4
make run-tests-hp NPROCS=4
make run-tests-tddfpt NPROCS=4
make run-tests-kcw NPROCS=4
make run-tests-all_currents NPROCS=4
make run-tests-pp NPROCS=4
make run-tests-zg NPROCS=4#make run-tests-xsd-pw NPROCS=4
cd ..

Test result: ELPA
# TOTAL: 311# PASS: 168# SKIP: 109# XFAIL: 0# FAIL: 34# XPASS: 0# ERROR: 0

List of failed tests.
validate_c_version_complex_double_eigenvalues_2stage_default_kernel_analytic_default.sh
validate_c_version_real_double_eigenvalues_2stage_default_kernel_analytic_default.sh
validate_c_version_complex_single_eigenvalues_2stage_default_kernel_analytic_default.sh
validate_c_version_real_single_eigenvalues_2stage_default_kernel_analytic_default.sh
validate_c_version_complex_double_eigenvectors_2stage_default_kernel_random_explicit_default.sh
validate_c_version_complex_double_eigenvectors_2stage_default_kernel_random_default.sh
validate_c_version_real_double_eigenvectors_2stage_default_kernel_random_explicit_default.sh
validate_c_version_real_double_eigenvectors_2stage_default_kernel_random_default.sh
validate_c_version_complex_single_eigenvectors_2stage_default_kernel_random_explicit_default.sh
validate_c_version_complex_single_eigenvectors_2stage_default_kernel_random_default.sh
validate_c_version_real_single_eigenvectors_2stage_default_kernel_random_explicit_default.sh
validate_c_version_real_single_eigenvectors_2stage_default_kernel_random_default.sh
validate_cpp_version_complex_double_eigenvalues_2stage_default_kernel_analytic_default.sh
validate_cpp_version_real_double_eigenvalues_2stage_default_kernel_analytic_default.sh
validate_cpp_version_complex_single_eigenvalues_2stage_default_kernel_analytic_default.sh
validate_cpp_version_real_single_eigenvalues_2stage_default_kernel_analytic_default.sh
validate_cpp_version_complex_double_eigenvectors_2stage_default_kernel_random_explicit_default.sh
validate_cpp_version_complex_double_eigenvectors_2stage_default_kernel_random_default.sh
validate_cpp_version_real_double_eigenvectors_2stage_default_kernel_random_explicit_default.sh
validate_cpp_version_real_double_eigenvectors_2stage_default_kernel_random_default.sh
validate_cpp_version_complex_single_eigenvectors_2stage_default_kernel_random_explicit_default.sh
validate_cpp_version_complex_single_eigenvectors_2stage_default_kernel_random_default.sh
validate_cpp_version_real_single_eigenvectors_2stage_default_kernel_random_explicit_default.sh
validate_cpp_version_real_single_eigenvectors_2stage_default_kernel_random_default.sh
validate_real_double_eigenvalues_2stage_default_kernel_frank_default.sh
validate_complex_double_eigenvalues_2stage_default_kernel_toeplitz_default.sh
validate_real_double_eigenvalues_2stage_default_kernel_toeplitz_default.sh
validate_complex_single_eigenvalues_2stage_default_kernel_toeplitz_default.sh
validate_real_single_eigenvalues_2stage_default_kernel_toeplitz_default.sh
validate_double_instance_openmp_default.sh
validate_real_2stage_banded_openmp_default.sh
validate_complex_2stage_banded_openmp_default.sh
validate_single_real_2stage_banded_openmp_default.sh
validate_single_complex_2stage_banded_openmp_default.sh

Test result: QE serial
pw: 246 out of 246 tests passed (1 skipped).
cp: 33 out of 33 tests passed (2 skipped).
ph: 62 out of 62 tests passed.
epw: 135 out of 135 tests passed.
hp: 39 out of 41 tests passed.

hp_soc_UV_paw_magn - bn.hp.in (arg(s): 3): **FAILED**.
hp_soc_UV_paw_magn - bn.hp.in (arg(s): 4): **FAILED**.
tddfpt: 9 out of 9 tests passed.
kcw: 11 out of 11 tests passed.
all_currents: 10 out of 10 tests passed.
pp: 2 out of 2 tests passed.
zq: 1 out of 1 test passed.

Test result: QE parallelpw: 246 out of 246 tests passed (1 skipped).
cp: 33 out of 33 tests passed (2 skipped).
ph: 62 out of 62 tests passed.
epw: 133 out of 135 tests passed.
epw_wfpt - epw22.in (arg(s): 3): **FAILED**.
epw_wfpt - epw23.in (arg(s): 3): **FAILED**.
hp: 39 out of 41 tests passed.
hp_soc_UV_paw_magn - bn.hp.in (arg(s): 3): **FAILED**.
hp_soc_UV_paw_magn - bn.hp.in (arg(s): 4): **FAILED**.
tddfpt: 9 out of 9 tests passed.
kcw: 11 out of 11 tests passed.
all_currents: 10 out of 10 tests passed.
pp: 2 out of 2 tests passed.
zq: 1 out of 1 test passed.

Notes
OpenMP is enabled; it may be useful when large number of processes (128 for example) are employed.
ELPA is enabled. GCC10, 11, 12 can't pass some of the tests as described above. (Intel onAPI classic compilers canpass all the tests.)
GIPAW for QE 7.3 is not yet available.
D3Q (latest one is for QE 7.1?) seems to depend on old functions of PH. It cannot be compiled for QE 7.3.
GCC 10,11,12 failed to build WANT and YAMBO due to the syntax errors.
Intel Compiler can compile them.
GCC version shows slightly better performance of PW than Intel Compiler version.
Performance of PW is comparable among those builds. GCC 10, 11, 12 versions show similar test results. Still,
GCC10 version shows the least errors. We thus choose GCC10 for release build.
OpenBLAS+Scalapack build shows a better performance than MKL build.
(Even for Intel Compiler version, openblas+scalapack shows slightly better peformance than MKL.)