OpenMolcas v20.10
Webpage
https://gitlab.com/Molcas/OpenMolcas
Version
v20.10Build 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).