Quantum ESPRESSO 6.3 for LX

ウェブページ

https://www.quantum-espresso.org/

バージョン

6.3

ビルド環境

  • Intel Parallel Studio 2017update4

ビルドに必要なファイル

  • q-e-qe-6.3.tar.gz
  • want-latest.tar.gz
    • (本インストール時に相手方のサーバから取得できなかったため。通常はスクリプトによる自動取得で問題ありません。)

ビルド手順

#!/bin/sh

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

INSTDIR=/local/apl/lx/espresso63
#LIBXC=${INSTDIR}/libxc-4.2.3
WANT_LATEST=${BASEDIR}/want-latest.tar.gz

PARALLEL=12

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

module purge
module load intel_parallelstudio/2017update4

export LANG=
export LC_ALL=C
# from $MKLROOT/tools/mkl_link_tool
MKL_SCALAPACK_LIBS=-"L${MKLROOT}/lib/intel64 -lmkl_scalapack_lp64 -lmkl_blacs_intelmpi_lp64 -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread -lm -ldl"

cd ${INSTDIR}
if [ -d q-e-qe-${VERSION} ]; then
  mv q-e-qe-${VERSION} q-e-qe-erase
  rm -rf q-e-qe-erase &
fi

tar zxf ${TARBALL}
mv q-e-qe-${VERSION}/* .
mv q-e-qe-${VERSION}/.[a-z]* .
rmdir q-e-qe-${VERSION}

export MPIF90=mpiifort
export MPIFC=mpiifort
export MPIF77=mpiifort
export MPICC=mpiicc
export MPICXX=mpiicpc

FC=ifort F90=ifort F77=ifort CC=icc \
FFLAGS="-O2 -assume byterecl -ip -g" BLAS_LIBS="-mkl=sequential" \
LAPACK_LIBS="-mkl=sequential" FFT_LIBS="-mkl=sequential" \
SCALAPACK_LIBS=$MKL_SCALAPACK_LIBS LDFLAGS="-static-intel" \
    ./configure --with-scalapack

# MKL instead of FFTW and add libxc
#LIBXC_ESC=`echo ${LIBXC} | sed -e 's/\//\\\\\//g'`
#sed -i -e "s/D__FFTW3/D__DFTI -D__LIBXC/" \
#       -e "/^LD_LIBS/s/$/ -L${LIBXC_ESC}\/lib -lxcf90 -lxc/" \
#       -e "/^IFLAGS/s/$/ -I${LIBXC_ESC}\/include/" \
#    make.inc
sed -i -e "s/D__FFTW3/D__DFTI/" make.inc

cp ${WANT_LATEST} archive

echo "==== plumed ===="
make -j${PARALLEL} plumed
for i in pw cp neb ph pp pwcond ld1 xspectra upf tddfpt; do
  echo "==== $i ===="
  make -j${PARALLEL} $i
done

for i in want gipaw yambo gwl; do
  echo "==== $i ===="
  make $i
done
# i couldn't understand the situation of west and d3q
WANNIER90_VER=2.1.0
cd install; make -f plugins_makefile uncompress-w90; cd ../
PWD_ESC=`pwd | sed -e 's/\//\\\\\//g'`
sed -i -e "/include/s/.*/include ${PWD_ESC}\/wannier90-${WANNIER90_VER}\/make.inc/" wannier90-${WANNIER90_VER}/src/Makefile.2
for i in epw w90 SternheimerGW couple; do
  echo "==== $i ===="
  make -j${PARALLEL} $i
done

cd test-suite
make run-tests-serial
make clean
make run-tests-parallel
cd ..

テスト

全てパス。test-suite/userconfig で定義されるtoleranceのデフォルト値が変更されたことが主な原因のようです。

メモ

  • 最適化オプションで -O3 -xHost を有効にするとむしろ遅くなる(公式ベンチマーク small-benchmarks/test_4 での検証)
  • OpenMPは有効にしていません
  • libxc(4.2.3で試行)を用いると小さくない数値エラーを出すテストが複数あったため今回は回避
  • Westは指定のバージョンのダウンロードができず、他バージョンを使った場合もコードが対応していないように見えたため断念
  • d3q は状況が良くわからないため回避