Quantum ESPRESSO 7.5
ウェブページ
https://www.quantum-espresso.org/
https://gitlab.com/QEF/q-e
バージョン
7.5
ビルド環境
- GCC 12.2.1 (gcc-toolset-12)
- Open MPI 4.1.8
- OpenBLAS 0.3.29 (lp64)
- Scalapack 2.2.2
ビルドに必要なファイル
- q-e-qe-7.5.tar.gz (gitlab よりダウンロード)
- elpa-2025.06.001.tar.gz
- hdf5-1.14.6.tar.gz
- libxc-7.0.0.tar.bz2
- (以下の手順内でもダウンロードしている)
ビルド手順
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.gzPARALLEL=12
#---------------------------------------------------------------------------
umask 0022
ulimit -s unlimited
export OMP_NUM_THREADS=4module 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
テストはすべて通過。
hdf5-1.14.6 (並列対応)
#!/bin/sh
QE_VERSION=7.5
VERSION=1.14.6
INSTALL_PREFIX=/apl/qe/7.5/hdf5-1.14.6BASEDIR=/home/users/${USER}/Software/HDF5/${VERSION}
TARBALL=${BASEDIR}/hdf5-${VERSION}.tar.gz
WORKDIR=/gwork/users/${USER}PARALLEL=32
export LANG=C#---------------------------------------------------------------------
umask 0022module -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 &
fitar 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
テスト結果:
- 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.0BASEDIR=/home/users/${USER}/Software/libxc/${VERSION}
TARBALL=${BASEDIR}/libxc-${VERSION}.tar.bz2
WORKDIR=/gwork/users/${USER}PARALLEL=32
export LANG=C#---------------------------------------------------------------------
umask 0022module -s purge
module -s load gcc-toolset/12
cd ${WORKDIR}
if [ -d libxc-${VERSION} ]; then
mv libxc-${VERSION} libxc-erase
rm -rf libxc-erase &
fitar 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.5
BASEDIR=/home/users/${USER}/Software/QE/${QE_VERSION}
TARBALL=${BASEDIR}/q-e-qe-${QE_VERSION}.tar.gzENVIRON_URL="https://github.com/environ-developers/Environ.git"
WORKDIR=/gwork/users/${USER}
INSTDIR=/apl/qe/7.5
PARALLEL=24ELPA_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 0022module -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.1export LANG=C
export LC_ALL=C
ulimit -s unlimited
export LANG=C
export LC_ALL=C
ulimit -s unlimitedif [ ! -d ${WORKDIR} ]; then
mkdir -p ${WORKDIR}
ficd ${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=ONmake -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
テスト結果(QE)
以下のテストに失敗。ログのコピーは /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 が存在しない。oscdft_et.x や oscdft_pp.x は存在。
メモ
- gcc13, gcc14 ではごくわずかに速度が落ちるように見えるため gcc12 を採用。
- Open MPI 5.0.x を使うと挙動が怪しくなるため 4.1.8 を使用。
- Intel oneAPI 2025 環境では条件によっては gcc 版よりも速度が出るケースがある。しかし d3q や Environ が有効にできないため今回は回避
- Intel oneAPI 2024 環境を使うとはっきり速度が出ない。(原因については未検証)
- gcc + intelmpi は elpa のテストで固まるなどするため回避
- gcc + mkl より gcc + openblas の方がわずかに速度が出ているように見えたため、openblas を採用。
- (aocc は未検証)