Molpro 2022.3.0 (mvapich)

ウェブページ

https://www.molpro.net/

バージョン

2022.3.0

ビルド環境

  • GCC 10.3.1 (gcc-toolset-10)
  • GCC 11.2.1 (gcc-toolset-11)
  • MVAPICH 2.3.7
  • openblas 0.3.15 (Rocky Linux 8 のもの)

ビルドに必要なファイル

  • molpro-2022.3.0.tar.gz
  • ga-5.8.2.tar.gz
  • work.patch
  • patch-argos-binput.F
  • patch-cic-ItfFortranInt.h
  • patch-common_modules-common_cconf1
    • パッチファイルは /apl/molpro/2022.3.0-mva/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=2022.3.0
MOLPRO_DIRNAME=molpro-${MOLPRO_VERSION}
PARALLEL=12
BASEDIR=/home/users/${USER}/Software/Molpro/${MOLPRO_VERSION}
MOLPRO_TARBALL=${BASEDIR}/${MOLPRO_DIRNAME}.tar.gz

PATCH_SNPRINTF=$BASEDIR/secure_snprintf.patch
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}-mva

#------------------------------------------
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 gcc-toolset/10
module load mvapich/2.3.7/gcc11

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
cp config.log ${GA_INSTALLDIR}

module switch gcc-toolset/11

cd ../
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 -I/usr/include/openblas" \
LDFLAGS="-L${GA_INSTALLDIR}/lib" \
    ./configure --prefix=${INSTALLDIR} \
                --with-lapack="-L/usr/lib64 -lopenblas" \
                --enable-slater

sed -i -e "s/-J\.//" build/Makefile # ?

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

make tuning

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

make install

メモ

  • hpc-x (openmpi) 版とは異なり、Disk option を有効にしても正常に動作します。
    • HPC-X 2.13.1, HPC-X 2.11, Intel MPI 2021.7.1 の場合、Disk option を使うとハングするようです(IMPI 2021.7.1 の時は実行開始後即座にフリーズ。HPC-X の時は確率(?)でフリーズ)
      • HPC-X の場合は libhcoll 内部のルーチンでフリーズする場合もありますが、libhcoll を利用しない場合(mpirun に -mca coll_hcoll_enable 0 を追加)でもフリーズします。
    • Open MPI 3.1.6 の場合は disk option も正常に動作するようです。(ただし、計算結果には直接影響は無さそうなものの、別途エラーが出ます。)
    • Intel MPI 2021.5.1, 2021.8.0, 2021.9.0 の利用時は問題ありません。実行時に 2021.7.1 のライブラリを使った場合にだけ問題が発生しています。
    • 上記問題があるバージョンでも disk option を使わない場合(--ga-impl ga)は、ひとまずフリーズは起きないようです。