OpenMolcas v20.10

Webpage

https://gitlab.com/Molcas/OpenMolcas

Version

v20.10

Build Environment

  • Intel Compiler 19.1.2 (intel parallel studio 2020 update 2)
  • Intel MKL 2020.0.2 (intel parallel studio 2020 update 2)
  • OpenMPI 3.1.0
  • cmake 3.16.3

Files Required

  • openmolcas-v20.10.tar.gz (git clone and then git checkout)
  • ga-5.8.zip (Global Arrays)

Build Procedure

Global Arrays-5.8

#!/bin/sh

GA_VERSION=5.8
GA_DIR=/home/users/${USER}/Software/GlobalArrays/${GA_VERSION}
GA_SOURCE=${GA_DIR}/ga-${GA_VERSION}.zip

WORKDIR=/work/users/${USER}
INSTALLDIR=/local/apl/lx/openmolcas20.10/ga-5.8

#---------------------------------------------------------------------
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

module purge
module load intel/19.1.2
module load mkl/2020.0.2
module load mpi/openmpi/3.1.0/intel20

#tar zxf ${GA_SOURCE}
unzip ${GA_SOURCE}
cd ga-${GA_VERSION}

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 -ip -w -xHost"
export GA_COPT="-O3 -ip -w -xHost"
export GA_CXXOPT="-O3 -ip -w -xHost"

sh autogen.sh
./configure --with-blas8=-mkl \
            --with-scalapack8=-mkl \
            --enable-i8 \
            --prefix=${INSTALLDIR}

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

OpenMolcas-20.10

#!/bin/sh

VERSION=v20.10
SOURCEDIR=/home/users/${USER}/Software/OpenMolcas/${VERSION}
TARBALL=${SOURCEDIR}/OpenMolcas-${VERSION}.tar.gz

INSTALL_DIR=/local/apl/lx/openmolcas20.10
GAROOT=${INSTALL_DIR}/ga-5.8
PARALLEL=8

WORKDIR=/work/users/${USER}

export GAROOT
#--------------------------------------------------------
umask 0022
ulimit -s unlimited

export LANG=
export LC_ALL=C

module purge
module load intel/19.1.2
module load mkl/2020.0.2
module load mpi/openmpi/3.1.0/intel20
module load cmake/3.16.3

cd $WORKDIR
if [ -d OpenMolcas-${VERSION} ]; then
  mv OpenMolcas-${VERSION} OpenMolcas_tmp
  rm -rf OpenMolcas_tmp
fi

tar zxf ${TARBALL}
cd OpenMolcas-${VERSION}
#git submodule update --init External/NECI
git submodule update --init External/libmsym
git submodule update --init External/efp

# simply ridiculous.
uniq src/integral_util/drvefp.f src/integral_util/drvefp.f.tmp
mv -f src/integral_util/drvefp.f.tmp src/integral_util/drvefp.f

mkdir build && cd build

export FC=mpif90
export CC=mpicc
export CXX=mpicxx

cmake .. -DCMAKE_INSTALL_PREFIX=${INSTALL_DIR} \
         -DMPI_Fortran_COMPILER=${FC} \
         -DMPI_C_COMPILER=${CC} \
         -DMPI_CXX_COMPILER=${CXX} \
         -DMPI=ON \
         -DGA=ON \
         -DOPENMP=ON \
         -DLINALG=MKL \
         -DHDF5=ON \
         -DTOOLS=ON \
         -DFDE=ON \
         -DEFPLIB=ON \
         -DNECI=OFF \
         -DMSYM=ON \
         -DNEVPT2=OFF \
         -DDMRG=OFF

make -j${PARALLEL}
export MOLCAS_NPROCS=1
export OMP_NUM_THREADS=1
pymolcas verify
export MOLCAS_NPROCS=2
export OMP_NUM_THREADS=2
pymolcas verify

make install

Test Result

Tests of Global Arrays are passed without problems. OpenMolcas test results are available under /local/apl/lx/openmolcas20.10/test_results directory.

Serial version

  • Only additional:409 failed.
    • # of iteration differs from the reference; may not be a serious problem.

Parallel version

  • standard:076 (scf) = numerical error (minor?)
  • additional
    • 139 (scf) = input error
    • 221 (alaska) = numerical error (minor?)
    • 259 (scf) = memory error
    • 308 (cht3) = memory error
    • 309 (cht3) = memory error
    • 310 (alaska) = parallel not supported
    • 330 (alaska) = parallel not supported
    • 339 (alaska) = parallel not supported
    • 358 (alaska) = numerical error (minor?)
    • 405 (rasscf) = input error
    • 409 (alaska) = numerical error (NOT minor one)
    • 801 (cht3) = memory error
    • 804 (scf) = input error
    • 806 (mbpt2) = numerical error (minor?)
    • 809 (alaska) = parallel not supported
    • 810 (alaska) = parallel not supported
    • 811 (mbpt2) = numerical error (minor?)
    • 812 (mbpt2) = numerical error (minor?)
    • 814 (alaska) = numerical error (minor?)
    • 820 (scf) = large numerical error only on "E_CNO". Others were OK.
    • 821 (scf) = internal error
    • 822 (alaska) = parallel not supported
    • 852 (rasscf) = input error
    • 863 (alaska) = numerical error (minor?)
    • 864 (alaska) = numerical error (minor?)
    • 898 (rasscf) = internal error

Notes

  • If EFPLIB enabled, duplicated variables declaration in "drvefp.f" shall be dealt with.
  • Do not add chemps2 support this time; it does not seem to be maintained.
  • QCMaquis didn't work with Intel compiler. Exactly the same reason as the following issue.
    • https://gitlab.com/Molcas/OpenMolcas/-/issues/125
    • gcc-8, gcc-9 failed to build QCMaquis.
    • We thus avoided QCMaquis in this build.
    • (NOTE: the license of QCMaquis may not be problem; the non-GPL binary executable was called as an external program.)
  • Intelmpi 19-20 failed on GA.
  • Intel 17-20 + intel mpi 2017/2018 failed on test000 (caspt2). (001, 002 were passed)
  • gcc6 + intelmpi 2018 build can pass test000.
    •  (patch to chovec_io and other files are required in intelmpi cases. (integer*4 => integer*8))
  • Openmpi + intel18 or former needs special setting of "PSM2_MQ_RECVREQS_MAX" environment variable (maybe Omni-Path related; we employ 2097152 this time). Otherwise, perf_strided test of GA failed.
    • (Intel20 can pass the test without additional setting; libpsm2 version problem?)
  • The performance of this build might be slightly worse than the previous build (2019/6/4 ver)?
    • (We only did some short (< 10 minutes) benchmark tests, though.)
    • No significant slowdown is observed for core computations (such as scf, rasscf).