Molpro 2020.1.2

ウェブページ

https://www.molpro.net/

バージョン

2020.1.2

ビルド環境

  • GCC 9.3.1 (devtoolset-9)
  • Intel Parallel Studio 2018 update4 (mkl and mpi)
  • Global Arrays Toolkit 5.7.2

ビルドに必要なファイル

  • Molpro_release.tar.gz (ダウンロードした Molpro_release を tar.gz で固めたもの)
  • ga-5.7.2.tar.gz
  • work.patch (/local/apl/lx/molpro2020.1.2/patches/work.patch; work directory のデフォルトを変更)
  • binput.patch (/local/apl/lx/molpro2020.1.2/patches/binput.patch; 巨大な CI 計算のためのパラメータ変更)
  • token

ビルド手順

#!/bin/sh

GA_VERSION=5.7.2
MOLPRO_VERSION=2020.1.2
MOLPRO_DIRNAME=Molpro_release
PARALLEL=12
BASEDIR=/home/users/${USER}/Software/Molpro/2020.1.2
MOLPRO_TARBALL=${BASEDIR}/${MOLPRO_DIRNAME}.tar.gz
PATCH0=${BASEDIR}/work.patch
PATCH1=${BASEDIR}/binput.patch
TOKEN=${BASEDIR}/token

WORKDIR=/work/users/${USER}
GA_INSTALLDIR=${WORKDIR}/ga-temporary
INSTALLDIR=/local/apl/lx/molpro${MOLPRO_VERSION}

#------------------------------------------
umask 0022
ulimit -s unlimited

export LANG=
export LC_ALL=C
export OMP_NUM_THREADS=1

cd $WORKDIR
if [ -d ga-${GA_VERSION} ]; then
  mv ga-${GA_VERSION} ga_tmp
  rm -rf ga_tmp &
fi
if [ -d ga-temporary ]; then
  mv ga-temporary ga_tmp_tmp
  rm -rf ga_tmp_tmp &
fi
if [ -d ${MOLPRO_DIRNAME} ]; then
  mv ${MOLPRO_DIRNAME} molpro_tmp
  rm -rf molpro_tmp &
fi

module purge
module load scl/devtoolset-9
module load intel_parallelstudio/2018update4

#tar zxf /home/users/${USER}/Software/GlobalArrays/${GA_VERSION}/ga-${GA_VERSION}.tar.gz
unzip /home/users/${USER}/Software/GlobalArrays/${GA_VERSION}/ga-${GA_VERSION}.zip
cd ga-${GA_VERSION}

export CFLAGS="-mpc80"
export FFLAGS="-mpc80"
export FCFLAGS="-mpc80"
export CXXFLAGS="-mpc80"

export F77=mpif90
export F90=mpif90
export FC=mpif90
export CC=mpicc
export CXX=mpicxx
export MPIF77=mpif90
export MPICC=mpicc
export MPICXX=mpicxx
export GA_FOPT="-O3"
export GA_COPT="-O3"
export GA_CXXOPT="-O3"

# --with-ofi failed...
./autogen.sh
./configure --with-blas8 \
            --enable-i8 \
            --prefix=${GA_INSTALLDIR}

make -j ${PARALLEL}
make check
make install
cp config.log ${GA_INSTALLDIR}

cd ../
tar zxf ${MOLPRO_TARBALL}
cd ${MOLPRO_DIRNAME}

patch -p0 < ${PATCH0}
patch -p0 < ${PATCH1}

export PATH="${GA_INSTALLDIR}/bin:$PATH" # where ga-config exists

CPPFLAGS="-I${GA_INSTALLDIR}/include" \
LDFLAGS="-L${GA_INSTALLDIR}/lib" \
    ./configure --prefix=${INSTALLDIR} \
                --enable-integer8 \
                --enable-slater
            
LD_LIBRARY_PATH_ESC=`echo $LD_LIBRARY_PATH | sed -e 's/\//\\\\\//g'`
sed -i -e "s/^VERBOSE.*$/VERBOSE=/" \
       -e "s/^LD_ENV=.*$/LD_ENV=$LD_LIBRARY_PATH_ESC/" CONFIG
unset LD_LIBRARY_PATH_ESC

make -j ${PARALLEL}
cp $TOKEN lib/.token

make tuning

## manually modify tuning parameters!
#sed -i -e "s/tuning-mindgm.*/tuning-mindgm 0001/" \
#       -e "s/tuning-mindgc.*/tuning-mindgc 0001/" \
#       -e "s/tuning-mindgr.*/tuning-mindgr 0001/" \
#       -e "s/tuning-mindgl.*/tuning-mindgl 0001/" \
#       -e "s/tuning-mindgv.*/tuning-mindgv 0001/" lib/tuning.rc

MOLPRO_OPTIONS=-n2 make quicktest
MOLPRO_OPTIONS=-n2 make test

# failed tests
# loc_eom3.test and PNO-[RU]CCSD tests

#make install
#install -m 644 lib/.token ${INSTALLDIR}/molpro*/lib

最後の molpro と token のインストールは手動で行いました。

テスト

Global Arrays Toolkit

  • Global Arrays Toolkit の global/testing/elempatch.x テストでエラー(gcc 8 でも同様)

Molpro

  • 以下のテストで MPI 並列時にエラー。OpenMP 並列については問題無し。
    • h2odim_pnorccsd.test
    • h2odim_pno_singdom.test
    • gly2_pnorccsd.test
    • form_pnoccsd.test

メモ

  • このバージョンの molpro は gcc に最適化されているとの公式コメントがあります
    • intel コンパイラでビルドしたものよりも速度が出ているように見えます。
    • PNO-LCCSD を使う計算はインテル版では動きませんが、GCC 版では動きます
  • 上記テストのように、一部 MPI 並列では正常に動作しないものがあるようです。その場合も OpenMP 並列ならば動作するようです。