Molpro 2018.2 for LX

ウェブページ

http://www.molpro.net/

バージョン

2018.2

ビルド環境

  • Intel Parallel Studio 2017 update8
    • ifort 17.0.8
    • icc 17.0.8
    • impi 2017.0.4
  • Global Arrays Toolkit 5.7

ビルドに必要なファイル

  • Molpro2018.2.0.tar.gz
  • ga-5.7.tar.gz
  • work.patch

--- utilities/molpro.template.orig      2018-12-10 16:29:50.000000000 +0900
+++ utilities/molpro.template   2018-12-10 16:39:13.000000000 +0900
@@ -446,6 +446,12 @@
  shift
 done
 
+MOLPRO_OPTIONS="\
+-d/work/users/$USER/ \
+-I/work/users/$USER/ \
+-W/work/users/$USER/wfu \
+$MOLPRO_OPTIONS"
+
 if test "x${option_d}" = x ; then
 # Now we have to replicate everything inside molpro.exe to try and get the same value of -d that it would
  option_d="/tmp"

  • token

ビルド手順

#!/bin/sh

GA_VERSION=5.7
MOLPRO_VERSION=2018.2
MOLPRO_DIRNAME=Molpro_release
PARALLEL=12
BASEDIR=/home/users/qf7/Software/Molpro/2018.2.0
MOLPRO_TARBALL=${BASEDIR}/Molpro2018.2.0.tar.gz
PATCH=${BASEDIR}/work.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

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-3 # gcc 4.9 or later is necessary
                             # some fixes required for gcc 6 (qexp etc.)
module load intel_parallelstudio/2017update8

tar zxf /home/users/qf7/Software/GlobalArrays/5.7/ga-5.7.tar.gz
cd ga-${GA_VERSION}

export F77=mpiifort
export F90=mpiifort
export FC=mpiifort
export CC=mpiicc
export CXX=mpiicpc
export MPIF77=mpiifort
export MPICC=mpiicc
export MPICXX=mpiicpc
export GA_FOPT="-O3 -ip -w -xHost"
export GA_COPT="-O3 -ip -w -xHost"
export GA_CXXOPT="-O3 -ip -w -xHost"

./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 < ${PATCH}

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

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

# failed tests
# hamiltonian.test loc_eom3.test

#make install # do it manually

テスト

  • 以下の二つのテストでエラー。なお、公式提供のバイナリ版でも同様のエラーが発生することを確認済み
    • hamiltonian.test: 終了時にエラー返す。出力の数字自体は問題無いように見える
    • loc_eom3.test: 数値エラーが発生

メモ

  • openmpi ではエラーが多かったため断念し、intel mpiでビルド
    • openmpiを使った場合、テストのエラーが少し増え、さらに計算終了時にエラーが発生する(ほとんどの場合計算結果の数値に問題は無い)