Quantum ESPRESSO 7.6

ウェブページ

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

バージョン

7.6

ビルド環境

  • GCC 15.1.1 (gcc-toolset-15)
  • Open MPI 4.1.8
  • OpenBLAS 0.3.29 (lp64)
  • Scalapack 2.2.2

ビルドに必要なファイル

  • q-e-qe-7.6.tar.gz
  • 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.6/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/15
module load openmpi/4.1.8/gcc15
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 \
           --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.6
VERSION=1.14.6
INSTALL_PREFIX=/apl/qe/7.6/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/15
module -s load openmpi/4.1.8/gcc15

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 # very long 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)
    • 987 - H5REPACK-remove_all (Disabled)
    • 988 - H5REPACK-deflate_convert (Disabled)
    • 989 - H5REPACK-szip_convert (Disabled)
  • The following tests FAILED:
    • 137 - MPI_TEST_t_shapesame (Timeout)

libxc-7.0.0

#!/bin/sh

QE_VERSION=7.6
VERSION=7.0.0
INSTALL_PREFIX=/apl/qe/7.6/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/15
module -s load cmake/3.31.11

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 \
     -DDISABLE_FHC=ON
make -j${PARALLEL}
make install
make test

テストは全てパス。

QE

#!/bin/sh

QE_VERSION=7.6
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"
ENVIRON_VER=v3.1.1

WORKDIR=/gwork/users/${USER}

INSTDIR=/apl/qe/7.6
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 cmake/3.31.11
module -s load gcc-toolset/15
module -s load openmpi/4.1.8/gcc15
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} -b ${ENVIRON_VER} 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
# ad hoc fix for GOMP_teams4 issue of gcc-toolset
sed -i -e "s/teams distribute//" EPW/src/use_wannier.f90

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="pw2qmcpack;legacy" \
 -DQE_ENABLE_FOX=OFF \
 -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

テスト結果(QE)

以下のテストに失敗。ログのコピーが /apl/qe/7.6/testlog 以下にあります。

  • 391 - system--oscdft_pp--normalize (Failed)
  • 392 - system--oscdft_pp--normalize.oscdft (Failed)
  • 393 - system--oscdft_pp--pw (Failed)
  • 394 - system--oscdft_pp--view (Failed)
  • 395 - system--oscdft_pp--view.oscdft (Failed)
  • 396 - system--oscdft_pw-correctness (Failed)
  • 397 - system--oscdft_pw--k (Failed)
  • 398 - system--oscdft_pw--k.oscdft (Failed)
  • 399 - system--oscdft_pw--nooscdft (Failed)
  • 400 - system--oscdft_pw--normcons (Failed)
  • 401 - system--oscdft_pw--normcons.oscdft (Failed)
  • 402 - system--oscdft_pw--relax (Failed)
  • 403 - system--oscdft_pw--scf (Failed)
  • 404 - system--oscdft_pw--scf.oscdft (Failed)
  • 405 - system--oscdft_pw--view (Failed)
  • 406 - system--oscdft_pw--view.oscdft (Failed)
    • oscdft.x が存在しないことが原因に見えます。

メモ

  • Rocky 8.x で、gcc-toolset-12 以降の gcc を使う場合、OpenMP を有効にした場合はエラーが発生する。libgomp.so に GOMP_teams4 が存在しないことが原因。
    • ネイティブの gcc12 以降であればおそらくこの問題は発生しないが、gcc-toolset を使っている関係で発生していると思われる。(gcc 8.5 由来の /usr/lib64/libgomp.so を使うため。)
    • gcc-toolset-12 以降の libgomp.a では GOMP_teams4 があるようなので、static link は可能かもしれない(未検証)
    • OpenMP を無効化するか、GOMP_teams4 未対応の gcc11 以前を使えば回避可能。
    • 今回は EPW/src/use_wannier.f90 で使われている問題の機能を使わないことで無理矢理回避。
  • d3q は 2026/8/18 時点では対応バージョンが無い模様。最新コードを使ってもコンパイルエラーが発生。
  • gipaw も 2026/8/18 時点では対応バージョンが無い模様。最新コードを使ってもコンパイルエラーが発生。
  • FoX を有効にしていると 62 - system--pw_berry--berry-1 (Failed) 他のテストでエラーが発生する。
    • 以前の実行結果を使う際に Error in arraytointeger Too many elements found というエラーが出る。
    • gipaw は FoX に依存しているため、こちらの意味でも有効にできず。
  • aocl を使うと 348 - system--cp_cluster-correctness (Failed) などの追加エラーが発生するため回避。
    • ELPA も含めてビルドは問題なく成功。
  • libxc 7.1.0 以降ではテストに pytest が必須となっているが、簡単には動作させられなかったため、今回は libxc 7.0.0 で妥協。
  • libxc は -DDISABLE_FHC=ON (cmake) や --disable-fhc (configure) をつけてのビルドが推奨されていたが、これまで対応できていなかった。今回のビルドよりこのフラグを追加。