Molpro 2021.1.0
ウェブページ
バージョン
2021.1.0 (latest commit: 2021/5/12 17:52:32 +0100)
ビルド環境
- GCC 9.3.1 (devtoolset-9)
- Intel Parallel Studio 2018 update4 (mkl and mpi)
- Global Arrays Toolkit 5.8
ビルドに必要なファイル
- Molpro_release.tar.gz (ダウンロードした Molpro_release を tar.gz で固めたもの)
- ga-5.8.tar.gz
- work.patch (/local/apl/lx/molpro2021.1.0/patches/work.patch; work directory のデフォルトを変更)
- binput.patch (/local/apl/lx/molpro2021.1.0/patches/binput.patch; 巨大な CI 計算のためのパラメータ変更)
- token
ビルド手順
#!/bin/sh
GA_VERSION=5.8
GA_ARCHIVE=/home/users/${USER}/Software/GlobalArrays/${GA_VERSION}/ga-${GA_VERSION}.zip
MOLPRO_VERSION=2021.1.0
MOLPRO_DIRNAME=Molpro_release
PARALLEL=12
BASEDIR=/home/users/${USER}/Software/Molpro/${MOLPRO_VERSION}
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 mkl/2018.0.4
module load mpi/intelmpi/2018.4.274
unzip -q ${GA_ARCHIVE}
#tar zxf ${GA_ARCHIVE}
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"
./autogen.sh
./configure --enable-i8 \
--with-mpi3 \
--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-slater
sed -i -e "s/^VERBOSE.*$/VERBOSE=/" CONFIG
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="" make quicktest
MOLPRO_OPTIONS=-n2 make test
# failed tests: gly2_pnolccsd.test
#make install # do it manually
#install -m 644 lib/.token ${INSTALLDIR}/molpro*/lib # do it manually
#cp -a testjobs ${INSTALLDIR}/molpro*/
#cp -a bench ${INSTALLDIR}/molpro*/
テスト
ga
- global/testing/testmult.x は 10 分以上待っても終わらないため、手動で kill している。(FAIL)
- 固まった状態では全 4 プロセス中、3 つが wait 状態で残り 1 つは何かを send しようとしているように見える
- GA_FOPT 等の最適化フラグをデフォルトに任せても改善せず
molpro
- シリアルの quicktest は全てパス
- MPI 並列については gly2_pnolccsd.test が数値エラー
メモ
- 今回も 2020.1.2 と同じく gcc-9 を利用
- ga では mkl を利用すると動作がおかしいために利用せず(明示的に指定しない限りは使われない気配)
- ga の configure で --with-mpi3 を与えない場合は molpro の acrolein_excincr.test 等のテストが完全に固まる
- --with-mpi-pr については未検証
- --with-ofi についてはビルドできず
- 今回の molpro では 8 バイト整数化した blas, lapack (mkl) が使えない?configure でどうしてもエラーになる
- https://groups.google.com/g/molpro-user/c/nvQNTnjsqxs/m/d6jl_tfACgAJ のコメントと関係しているかもしれない
- 無理やり回避する方向については未検証
- molpro と ga の blas は互換でないといけないため、ga でも blas8 は回避
- molpro のビルドに mkl 2020.0.2 を使っても gly2_pnolccsd.test は数値エラーが発生し、追加で h2o_pnolccsdf12.test 等がエラー終了する