Molpro 2023.1.0

ウェブページ

https://www.molpro.net/

バージョン

2023.1.0

ビルド環境

  • GCC 12.1.1 (gcc-toolset-12)
  • Open MPI 4.1.5
  • Eigen 3.4.0
  • MKL 2023.2.0

ビルドに必要なファイル

  • molpro-2023.1.0.tar.gz
  • ga-5.8.2.tar.gz
  • work.patch
  • patch-argos-binput.F
  • patch-cic-ItfFortranInt.h
  • patch-common_modules-common_cconf1
    • 大きな CI 計算のためのパラメータの変更と、一時ディレクトリのデフォルトの場所を変更しています。
    • パッチファイルは /apl/molpro/2023.1.0/patches 以下に置いています。
  • token

ビルド手順

#!/bin/sh

GA_VERSION=5.8.2
GA_ARCHIVE=/home/users/${USER}/Software/GlobalArrays/${GA_VERSION}/ga-${GA_VERSION}.tar.gz

MOLPRO_VERSION=2023.1.0
MOLPRO_DIRNAME=molpro-${MOLPRO_VERSION}
PARALLEL=12
BASEDIR=/home/users/${USER}/Software/Molpro/${MOLPRO_VERSION}
MOLPRO_TARBALL=${BASEDIR}/${MOLPRO_DIRNAME}.tar.gz

PATCH0=${BASEDIR}/work.patch
PATCH1=${BASEDIR}/patch-argos-binput.F
PATCH2=${BASEDIR}/patch-cic-ItfFortranInt.h
PATCH3=${BASEDIR}/patch-common_modules-common_cconf1

TOKEN=${BASEDIR}/token

WORKDIR=/gwork/users/${USER}
GA_INSTALLDIR=${WORKDIR}/ga-temporary
INSTALLDIR=/apl/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 -s purge
module -s load gcc-toolset/12
module -s load openmpi/4.1.5/gcc12
module -s load eigen/3.4.0

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-mpi-pr \
            --prefix=${GA_INSTALLDIR}

make -j ${PARALLEL}
make check
make install

# mkl for molpro
module -s load mkl/2023.2.0

cd ${WORKDIR}
tar zxf ${MOLPRO_TARBALL}
cd ${MOLPRO_DIRNAME}

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

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

CPPFLAGS="-I${GA_INSTALLDIR}/include" \
LDFLAGS="-L${GA_INSTALLDIR}/lib64" \
    ./configure --prefix=${INSTALLDIR} \
                --enable-slater

make -j ${PARALLEL}
cp $TOKEN lib/.token # this file will be protected manually later

make tuning

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

make install
cp -a testjobs ${INSTALLDIR}/molpro*/
cp -a bench ${INSTALLDIR}/molpro*/

テスト

  • h2o_rvci と h2o_rvci_dip のテストが以下のようなエラーで失敗します。
    • コンパイラや MPI のソフトを変えたり、MKL のかわりに OpenBLAS を使っても内容は変わりません。
    • 一見正常に実行できるというわけでもないので、今回は無視しています。

Running job h2o_rvci.test
At line 453 of file ../src/vscf/mod_surf_headquarter.F90 (unit = 86)
Fortran runtime error: Cannot open file '********/molpro-2023.1.0/testjobs/h2o_dip.pot_NEW': No such file or directory
--------------------------------------------------------------------------
Primary job  terminated normally, but 1 process returned
a non-zero exit code. Per user-direction, the job has been aborted.
--------------------------------------------------------------------------
--------------------------------------------------------------------------
mpirun detected that one or more processes exited with non-zero status, thus cau
sing
the job to be terminated. The first process to do so was:

  Process name: [[29951,1],0]
  Exit code:    2
--------------------------------------------------------------------------
**** PROBLEMS WITH JOB h2o_rvci.test
h2o_rvci.test: ERRORS DETECTED: non-zero return code ... inspect output
**** For further information, look in the output file
**** /**********/molpro-2023.1.0/testjobs/h2o_rvci.errout
Running job h2o_rvci_dip.test
At line 453 of file ../src/vscf/mod_surf_headquarter.F90 (unit = 86)
Fortran runtime error: Cannot open file '/*************/molpro-2023.1.0/testjobs/h2o_dip.pot_NEW': No such file or directory
--------------------------------------------------------------------------
Primary job  terminated normally, but 1 process returned
a non-zero exit code. Per user-direction, the job has been aborted.
--------------------------------------------------------------------------
--------------------------------------------------------------------------
mpirun detected that one or more processes exited with non-zero status, thus causing
the job to be terminated. The first process to do so was:

  Process name: [[31011,1],0]
  Exit code:    2
--------------------------------------------------------------------------
**** PROBLEMS WITH JOB h2o_rvci_dip.test
h2o_rvci_dip.test: ERRORS DETECTED: non-zero return code ... inspect output
**** For further information, look in the output file
**** /*************/molpro-2023.1.0/testjobs/h2o_rvci_dip.errout

メモ

  • GA ビルド時に mkl を有効にした場合はエラーが出たため、GA では MKL を使わないようにしています。
  • gcc11 を使った場合は molpro のビルドに失敗しました。gcc10 では問題無くビルドできています。
  • 以前のビルドでは hpc-x 2.13.1 を使っていましたが、hpc-x 2.13.1 では低確率で問題が発生する可能性が示唆されたため、通常の Open MPI を使っています。
    • hpc-x (2.13.1 or 2.11)を使った場合、hcoll ライブラリ内のコードを実行中にハングするケースがあったため、hcoll を除外する意味でも通常の Open MPI を使っています。
    • こちらの問題については引き続き調査を行う予定です。
  • MVAPICH でもビルドは可能でしたが、MCSCF 実行時に異常に遅くなるケースが確認されているため、今回は回避しました。
  • Disk option (シングルノード時のデフォルト設定) を使って PNO-LCCSD が使われる時、以下のメッセージでエラー終了する場合があります。
    • こちらについては今のところ解決方法がわかっていません。

ERROR: Error setting an MPI file to atomic mode
The problem occurs in PNO-LCCSD

  • Open MPI でビルドしたもので Disk option を利用した場合、一つのノードで複数の並列 molpro 計算が実行されるとうまく動かない場合がある、との記述が公式ページにありますが、今のところこちらでは確認が取れていません。
    • 上記の hpc-x, hcoll 由来と思われるエラーでハングしたケースはありましたが、この件と同一であるかが判断できていない状況です。
    • 公式ページの情報: https://www.molpro.net/manual/doku.php?id=ga_installation
  • 並列計算で計算プロセスが複数になる場合(MPI並列数 >= 3)、計算を行うたびに非常にわずかながら毎回結果が異なるようです。積算等の処理が atomic 操作で順不同に行われるためだと推測されます。
    • 通常の HF や DFT 計算では、出力ファイルでの表示上値が変わることは稀です。ただし、MCSCF 計算の場合にはかなり大きな紛れが出るケースが確認されています。ただ、その場合も並列数 2 以下で計算する範囲においては結果がきちんと一致することが確認できています。
    • (これはこのバージョンに限ったことではありません。以前のバージョンでも同様の仕様だと思われます。)