OpenMolcas for LX (2019/6/4)

ウェブページ

https://gitlab.com/Molcas/OpenMolcas

ビルド環境

  • Intel Parallel Studio 2018update4
  • cmake 3.8.2

ビルドに必要なファイル

  • openmolcas (2019/6/4 時点の最新)
  • chemps2 (2019/6/5 時点の最新)
  • hdf5-1.10.5.tar.bz2
  • ga-5.7.tar.gz (Global Arrays)

ビルド手順

hdf5 (今回インストールする openmolcas 専用)

#!/bin/sh
tar jxf hdf5-1.10.5.tar.bz2
cd hdf5-1.10.5
# --enable-fortran2003 might be simply ignored
./configure --prefix=/local/apl/lx/openmolcas20190604/hdf5-1.10.5 --enable-fortran --enable-cxx --enable-fortran2003
make -j8
make check
make install

global arrays (今回インストールする openmolcas 専用)

#!/bin/sh

GA_VERSION=5.7
GA_DIR=/home/users/qf7/Software/GlobalArrays/${GA_VERSION}
GA_SOURCE=${GA_DIR}/ga-${GA_VERSION}.tar.gz

WORKDIR=/work/users/${USER}
INSTALLDIR=/local/apl/lx/openmolcas20190604/ga-5.7

#---------------------------------------------------------------------
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_parallelstudio/2018update4

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

export F77=mpiifort
export F90=mpiifort
export FC=mpiifort
export CC=mpiicc
export CXX=mpiicpc
export MPIF77=mpiifort
export MPICC=mpiicc
export MPICXX=mpiicpc

export GA_FOPT="-O3 -ip -w -xHost"
export GA_COPT="-O3 -ip -w -xHost"
export GA_CXXOPT="-O3 -ip -w -xHost"

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

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

chemps2

#!/bin/sh

VERSION=20190605 # date instaed of version

SOURCEDIR=/home/users/qf7/Software/CheMPS2
TARBALL=${SOURCEDIR}/chemps2.${VERSION}.tar.gz

WORKDIR=/work/users/${USER}
INSTALL_DIR=/local/apl/lx/openmolcas20190604/chemps2
#-----------------------------------------------------------
umask 0022

module purge
module load intel_parallelstudio/2018update4
module load cmake/3.8.2

cd $WORKDIR
if [ -d chemps2.${VERSION} ]; then
  mv chemps2.${VERSION} chemps2_tmp
  rm -rf chemps2_tmp &
fi

tar zxf ${TARBALL}
cd chemps2.${VERSION}
mkdir build && cd build
CXX=mpiicpc cmake .. -DMKL=ON \
                     -DCMAKE_INSTALL_PREFIX=${INSTALL_DIR} \
                     -DWITH_MPI=OFF
make -j8
make test
make install

openmolcas

#!/bin/sh

VERSION=20190604 # date
SOURCEDIR=/home/users/qf7/Software/OpenMolcas
TARBALL=${SOURCEDIR}/OpenMolcas.${VERSION}.tar.gz

INSTALL_DIR=/local/apl/lx/openmolcas20190604
GAROOT=${INSTALL_DIR}/ga-5.7
CHEMPS2_DIR=${INSTALL_DIR}/chemps2/bin
PARALLEL=8

WORKDIR=/work/users/${USER}

export GAROOT
export MOLCAS_NPROCS=2
export OMP_NUM_THREADS=2
#--------------------------------------------------------
umask 0022
ulimit -s unlimited

export LANG=
export LC_ALL=C

module purge
module load intel_parallelstudio/2018update4
module load cmake/3.8.2

export HDF5_ROOT="/local/apl/lx/openmolcas20190604/hdf5"

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/grid_it
git submodule update --init External/libmsym

sed -i -e 's/HDF5 COMPONENTS C/HDF5 COMPONENTS C Fortran/' \
       -e 's/find_library(HDF5_Fortran/#find_library(HDF5_Fortran/' \
    CMakeLists.txt

mkdir build && cd build

export FC=mpiifort
export CC=mpiicc
export CXX=mpiicpc

cmake .. -DCMAKE_INSTALL_PREFIX=${INSTALL_DIR} \
         -DMPI_Fortran_COMPILER=mpiifort \
         -DMPI_C_COMPILER=mpiicc \
         -DMPI_CXX_COMPILER=mpiicpc \
         -DMPI=ON \
         -DGA=ON \
         -DOPENMP=ON \
         -DLINALG=MKL \
         -DHDF5=ON \
         -DTOOLS=ON \
         -DFDE=ON \
         -DGRID_IT=ON \
         -DNECI=OFF \
         -DMSYM=ON \
         -DCHEMPS2=ON \
         -DCHEMPS2_DIR=${CHEMPS2_DIR}
make -j${PARALLEL}
pymolcas verify
make install

テスト

(OpenMolcas 以外については全て正常にパスしています。)
/local/apl/lx/openmolcas20190604/test_results 以下にテスト結果を置いています。
  • i18_impi_par: 2 MPI, 2 OMP でのテスト
  • i18_impi_ser: 1 MPI, 1 OMP でのテスト
  • 850_sample, 851_sample: CheMPS2 のテスト。上記テスト時に PATH の不備があったため個別テスト
シリアル版は standard, additional の全てでエラーは無し。
並列版は additional でいくつか数値エラーが発生。そもそも並列で動作しないものがいくつか有り。また、852 についてはエラー終了。

メモ

  • モジュール名は openmolcas/20190604 です。
  • サンプルは /local/apl/lx/openmolcas20190604/samples 以下にあります。
  • 演算ノードの python 環境に対応するため、必要なパッケージをインストールディレクトリ内に置き、さらに pymolcas に以下の行を追加しています。
    • sys.path.append("/local/apl/lx/openmolcas20190604/python")
  • CheMPS2 は /local/apl/lx/openmolcas20190604/chemps2 以下に導入しています。openmolcas から呼び出す際には PATH が通っている必要があります。
    • (サンプルや module では対応済みです。)
  • Molcas に存在し、OpenMolcas に存在しない機能はマニュアルで確認した限りでは以下のものです。
    • DGA: (OpenMolcas における GA に相当)
      • MOLCAS_FIM: 環境変数、DGA に含まれる機能を使っている
    • CMOCORR, DIMERPERT, EMBQ, FALCON, GEO, MKNEMO, MULA, NEMO