CP2K 7.1.0 (gnu)
Webpagehttps://www.cp2k.org/

Version
7.1.0

Build Environment
OpenMPI 4.0.2 (GCC 7.3 version)
GCC 7.3.1 (devtoolset-7)
cmake 3.16.3

Files Required
cp2k-7.1.0.tar.gz
dbcsr-2.0.1.tar.gz
tc_install_cp2k_toolchain.sh.diff--- install_cp2k_toolchain.sh.org

2020-01-31 17:07:19.000000000 +0900+++ install_cp2k_toolchain.sh 2020-01-31 17:07:30.000000000 +0900@@ -942,8 +942,8 @@./scripts/install_superlu.sh./scripts/install_pexsi.sh./scripts/install_quip.sh-./scripts/install_plumed.sh./scripts/install_gsl.sh+./scripts/install_plumed.sh./scripts/install_spglib.sh./scripts/install_hdf5.sh./scripts/install_libvdwxc.sh

tc_install_sirius.sh.diff--- install_sirius.sh.org

2020-02-25 14:50:50.000000000 +0900+++ install_sirius.sh 2020-02-25 14:48:01.000000000 +0900@@ -131,8 +131,8 @@-DSpFFT_DIR="${SPFFT_ROOT}/lib/cmake/SpFFT" \-DCMAKE_CXXFLAGS_RELEASE="${SIRIUS_OPT}" \-DCMAKE_CXX_FLAGS_RELWITHDEBINFO="${SIRIUS_DBG}" \--DCMAKE_CXX_COMPILER=mpic++ \--DCMAKE_C_COMPILER=mpicc \+-DCMAKE_CXX_COMPILER=${MPICXX} \+-DCMAKE_C_COMPILER=${MPICC} \${COMPILATION_OPTIONS} .. > compile.log 2>&1
make -j $NPROCS -C src >> compile.log 2>&1@@ -155,8 +155,8 @@-DCMAKE_CXX_FLAGS_RELWITHDEBINFO="${SIRIUS_DBG}" \-DUSE_CUDA=ON \-DGPU_MODEL=P100 \--DCMAKE_CXX_COMPILER=mpic++ \--DCMAKE_C_COMPILER=mpicc ${COMPILATION_OPTIONS} .. >> compile.log 2>&1+-DCMAKE_CXX_COMPILER=${MPICXX} \+-DCMAKE_C_COMPILER=${MPICC} ${COMPILATION_OPTIONS} .. >> compile.log 2>&1
make -j $NPROCS -C src >> compile.log 2>&1
install -d ${pkg_install_dir}/lib/cuda
install -d ${pkg_install_dir}/include/cuda

tc_install_plumed_noext.sh.diff

--- install_plumed.sh.org

2020-02-19 13:43:07.000000000 +0900+++ install_plumed.sh 2020-02-19 13:42:49.000000000 +0900@@ -40,7 +40,7 @@echo "Installing from scratch into ${pkg_install_dir}"
cd plumed-${plumed_ver}-./configure CXX="${MPICXX}" --prefix=${pkg_install_dir} --libdir="${pkg_install_dir}/lib" > configure.log 2>&1+./configure CXX="${MPICXX}" --prefix=${pkg_install_dir} --libdir="${pkg_install_dir}/lib" CXXFLAGS="-I${GSLROOT}/include" LIBS="-L${GSLROOT}/lib" --enable-external-lapack=no --enable-external-blas=no > configure.log 2>&1
make -j $NPROCS > make.log 2>&1
make install > install.log 2>&1
write_checksums "${install_lock_file}" "${SCRIPT_DIR}/$(basename ${SCRIPT_NAME})"@@ -63,7 +63,7 @@esac
if [ "$with_plumed" != "__DONTUSE__" ] ; then-

PLUMED_LIBS='-lplumed -ldl -lstdc++ -lz -ldl'+

PLUMED_LIBS='-lplumedKernel -lplumed -ldl -lstdc++ -lz -ldl'
if [ "$with_plumed" != "__SYSTEM__" ] ; thencat <<EOF > "${BUILDDIR}/setup_plumed"

prepend_path LD_LIBRARY_PATH "$pkg_install_dir/lib"

Build Procedure#!/bin/sh
INSTDIR=/local/apl/lx/cp2k710-gnu
VERSION=7.1.0
DBCSR_VERSION=2.0.1
SOURCE_ROOT=/home/users/${USER}/Software/CP2K/${VERSION}TARBALL=${SOURCE_ROOT}/cp2k-${VERSION}.tar.gz
TARBALL_DBCSR=${SOURCE_ROOT}/dbcsr-${DBCSR_VERSION}.tar.gz
TC_PATCH0=${SOURCE_ROOT}/tc_install_cp2k_toolchain.sh.diff
TC_PATCH5=${SOURCE_ROOT}/tc_install_sirius.sh.diff
TC_PATCH9=${SOURCE_ROOT}/tc_install_plumed_noext.sh.diff
PARALLEL=12#--------------------------------------------------------------------------umask 0022
export LANG=C
export LC_ALL=C
module purge
module load scl/devtoolset-7
module load mpi/openmpi/4.0.2/gnu7.3
module load cmake/3.16.3
cd $INSTDIR
if [ -d cp2k-${VERSION} ]; then
mv cp2k-${VERSION} cp2k-erase
rm -rf cp2k-erase &fitar zxf ${TARBALL}
sleep 5
mv cp2k-${VERSION}/* .
sleep 5rm -f cp2k-${VERSION}/.dockerignore
rmdir cp2k-${VERSION}
cd ${INSTDIR}/tools/toolchainpatch < ${TC_PATCH0}
cd scripts
patch < ${TC_PATCH5}
patch < ${TC_PATCH9}
cd ../
export MPICC=mpicc
export MPICXX=mpicxx
export MPIFC=mpif90./install_cp2k_toolchain.sh --math-mode=openblas \--mpi-mode=openmpi \--with-cmake=system \--with-mpich=no \--with-libxc=install \--with-libint=install \--with-fftw=install \--with-openblas=install \--with-scalapack=install \--with-reflapack=no \--with-mkl=no \--with-libxsmm=install \--with-elpa=install \--with-ptscotch=install \--with-pexsi=install \--with-parmetis=install \--with-superlu=install \--with-quip=install \--with-plumed=install \--with-gsl=install \--with-libvdwxc=install \--with-spglib=install \--with-hdf5=install \--with-spfft=install \-j ${PARALLEL}
cp install/arch/local.psmp ../../arch/rccs.psmp
cd ${INSTDIR}/exts
rmdir dbcsr
tar zxf ${TARBALL_DBCSR}
mv dbcsr-${DBCSR_VERSION} dbcsr
cd ../
make -j ${PARALLEL} ARCH=rccs VERSION=psmp

Tests
Test script below was executed on ccfep.
#!/bin/shexport LC_ALL=C
export LANG=""# gcc8module purge
module load scl/devtoolset-7
module load mpi/openmpi/4.0.2/gnu7.3
module load cmake/3.16.3#CP2K=/home/users/qf7/Software/CP2K/7.1.0/cp2k-7.1.0-gcc7-openmpi4-openblas
CP2K=/local/apl/lx/cp2k710-gnu
CP2K_ARCH=rccs
CP2K_VER=psmp

TIMEOUT=120
PARALLEL=16
ulimit -s unlimited
cd ${CP2K}/regtesting/${CP2K_ARCH}/${CP2K_VER}
rm -rf LAST-${CP2K_ARCH}-${CP2K_VER}# serial test../../../tools/regtesting/do_regtest \-nobuild \-nosvn \-arch ${CP2K_ARCH} \-version ${CP2K_VER} \-mpiranks 1 \-ompthreads 1 \-jobmaxtime ${TIMEOUT} \-cp2kdir ../../../ \-maxtasks ${PARALLEL} >& regtest_mpi1_omp1.log
rm -rf LAST-${CP2K_ARCH}-${CP2K_VER}# omp test../../../tools/regtesting/do_regtest \-nobuild \-nosvn \-arch ${CP2K_ARCH} \-version ${CP2K_VER} \-mpiranks 1 \-ompthreads 2 \-jobmaxtime ${TIMEOUT} \-cp2kdir ../../../ \-maxtasks ${PARALLEL} >& regtest_mpi1_omp2.log
rm -rf LAST-${CP2K_ARCH}-${CP2K_VER}# mpi test../../../tools/regtesting/do_regtest \-nobuild \-nosvn \-arch ${CP2K_ARCH} \-version ${CP2K_VER} \-mpiranks 2 \-ompthreads 1 \-jobmaxtime ${TIMEOUT} \-cp2kdir ../../../ \-maxtasks ${PARALLEL} >& regtest_mpi2_omp1.log
rm -rf LAST-${CP2K_ARCH}-${CP2K_VER}# mpi/openmp test../../../tools/regtesting/do_regtest \-nobuild \-nosvn \-arch ${CP2K_ARCH} \-version ${CP2K_VER} \-mpiranks 2 \-ompthreads 2 \-jobmaxtime ${TIMEOUT} \-cp2kdir ../../../ \-maxtasks ${PARALLEL} >& regtest_mpi2_omp2.log
rm -rf LAST-${CP2K_ARCH}-${CP2K_VER}# yet another mpi test../../../tools/regtesting/do_regtest \-nobuild \-nosvn \-arch ${CP2K_ARCH} \-version ${CP2K_VER} \-mpiranks 8 \-ompthreads 1 \-jobmaxtime ${TIMEOUT} \-cp2kdir ../../../ \-maxtasks ${PARALLEL} >& regtest_mpi8_omp1.log
rm -rf LAST-${CP2K_ARCH}-${CP2K_VER}# yet another mpi/openmp test../../../tools/regtesting/do_regtest \-nobuild \-nosvn \-arch ${CP2K_ARCH} \-version ${CP2K_VER} \-mpiranks 8 \-ompthreads 2 \-jobmaxtime ${TIMEOUT} \-cp2kdir ../../../ \-maxtasks ${PARALLEL} >& regtest_mpi8_omp2.log
rm -rf LAST-${CP2K_ARCH}-${CP2K_VER}■ Result: MPI1 - OMP1--------------------------------- Summary -------------------------------Number of FAILED tests 1
Number of WRONG tests 0
Number of CORRECT tests 3217
Number of NEW

tests 3

Total number of tests 3221

QS/regtest-almo-2/ion-pair.inp: RUNTIME FAIL
■ Result: MPI1 - OMP2--------------------------------- Summary -------------------------------Number of FAILED tests 1
Number of WRONG tests 1
Number of CORRECT tests 3216
Number of NEW

tests 3

Total number of tests 3221

QS/regtest-almo-2/ion-pair.inp: RUNTIME FAIL
SE/regtest/h2o_gks_e.inp: WRONG■ Result: MPI2 - OMP1--------------------------------- Summary -------------------------------Number of FAILED tests 0
Number of WRONG tests 0
Number of CORRECT tests 3278
Number of NEW

tests 8

Total number of tests 3286

■ Result: MPI2 - OMP2--------------------------------- Summary -------------------------------Number of FAILED tests 0
Number of WRONG tests 0
Number of CORRECT tests 3278
Number of NEW

tests 8

Total number of tests 3286

■ Result: MPI8 - OMP1--------------------------------- Summary -------------------------------Number of FAILED tests 0
Number of WRONG tests 9
Number of CORRECT tests 3228

Number of NEW

tests 6

Total number of tests 3243

QS/regtest-mp2-lr/H2O-mp2-gpw-lr.inp: WRONG
xTB/regtest-2/HF-field-gopt.inp: WRONG
QS/regtest-mp2-grad/H2O_grad_mme.inp: WRONG
QS/regtest-gpw-4/H2O-debug-5.inp: WRONG
QS/regtest-gpw-4/H2O-debug-6.inp: WRONG
QS/regtest-mp2-4/H2O_NO_HFX.inp: WRONG
QS/regtest-rma-3D/H2O-32-dftb-ls-2_mult.inp: WRONG
QS/regtest-rma-3D/H2O-32-dftb-ls-2.inp: WRONG
QS/regtest-mp2-2/H2O-02.inp: WRONG■ Result: MPI8 - OMP2--------------------------------- Summary -------------------------------Number of FAILED tests 0
Number of WRONG tests 9
Number of CORRECT tests 3228
Number of NEWtests 6

Total number of tests 3243

QS/regtest-mp2-lr/H2O-mp2-gpw-lr.inp: WRONG
xTB/regtest-2/HF-field-gopt.inp: WRONG
QS/regtest-mp2-grad/H2O_grad_mme.inp: WRONG
QS/regtest-gpw-4/H2O-debug-5.inp: WRONG
QS/regtest-gpw-4/H2O-debug-6.inp: WRONG
QS/regtest-mp2-4/H2O_NO_HFX.inp: WRONG
QS/regtest-rma-3D/H2O-32-dftb-ls-2_mult.inp: WRONG
QS/regtest-rma-3D/H2O-32-dftb-ls-2.inp: WRONG
QS/regtest-mp2-2/H2O-02.inp: WRONG

BenchmarkH2O-64.inp was employed for benchmark as in 6.1.0. (output of grep "CP2K " *.log is used)
Ran 21 times, and average of last 20 runs is listed below.
# of cores
jobtype (# ofnodes)

MPI OMP GPU elapse(sec)core

18 (1)

18

1-

72.685small

40 (1)

40

1-51.424small

80 (2)

80

1-36.697

small

160 (4)32

5-27.455

Notes
GPU versions were skipped for this version; they are not so useful in RCCS for now.
SIRIUS GPU version might be efficient if correctly built with MAGMA etc. But skipped this time.
We couldn't get performance improvement from libgrid (slower than the vanilla one).
pyratemp 0.3.2 was used when building libgrid.a. But this version of pyratemp cannot handle *.template files
in xyz_to_vab correctly.
Applying sed -i -e "s/\\$/\!/g" -e "s/\@</\@\!/g" -e "s/>\@/\!\@/g" to *.template files can solve the issue,
although the libgrid.a didn't bring any performance improvement...
(Use sed -i -e "s/\\\$/\!/g" -e "s/\@</\@\!/g" -e "s/>\@/\!\@/g" in the script; above one is valid only whenmanual execution on terminal.)
libsmm is simply ignored as in the case of 6.1.0.
Released version of dbcsr was used in this build. Using master branch of dbcsr is not a good way to build reliablebinary.
At least for GCC build, OpenBlas is better than MKL in terms of performance.
GCC + Intel MPI failed on building cp2k. MPI module is concerned with this error, but we cannot identify the cause ofthis error. It might come from the wrong include path setting.
Couldn't build correctly with OpenMPI 3.1.0. It turned out to be a known issue.
https://github.com/cp2k/dbcsr/issues/141

Explicit legacy MPI1 support is required when built with OpenMPI 4.x. (Requested by scalapack (or mkl).)
gcc8 build is not good as gcc7 one in terms of performance and reliability.