現在地

PSI4 1.5

(2022/4/13 CheMPS2 有効化バージョンについての記述を追加)

ウェブページ

https://psicode.org/

バージョン

1.5

ビルド環境

  • Intel Parallel Studio 2020 update2 (compilers and MKL)
  • GCC 8.3.1 (devtoolset-8)
  • cmake 3.16.3
  • (Python 3.9.10 (miniforge3))

ビルドに必要なファイル

  • psi4.tar.gz
    • git checkout e9f4d6d (version 1.5)後に tar.gz 化したもの
  • (以下の手順中でもいくつか取得)

ビルド手順

miniforge3 (概略)

RDKit 等、直接は関係ないパッケージもいくつか導入しています。

$ wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh
$ sh ./Miniforge3-Linux-x86_64.sh
...
[/home/users/***/miniforge3] >>> /local/apl/lx/psi4-15/miniforge3
...
$ /local/apl/lx/psi4-15/miniforge3/bin/conda shell.bash hook > /local/apl/lx/psi4-15/conda_init.sh
$ /local/apl/lx/psi4-15/miniforge3/bin/conda shell.csh hook > /local/apl/lx/psi4-15/conda_init.csh
$ . /local/apl/lx/psi4-15/conda_init.sh
(base) $ conda update conda
(base) $ conda update --all
(base) $ conda install pint pybind11 msgpack-python numpy networkx pydantic pytest pytest-xdist
(base) $ conda install matplotlib psutil py-cpuinfo rdkit

psi4

上記 miniforge を先に導入した上で実行します。

#!/bin/sh

# assume miniforge for psi4 was already installed

VERSION=1.5
INSTALL_PREFIX=/local/apl/lx/psi4-15

BASEDIR=/home/users/${USER}/Software/PSI4/1.5
TARBALL=${BASEDIR}/psi4.tar.gz

WORKDIR=/work/users/${USER}/
PARALLEL=12

#---------------------------------------------------------------------
umask 0022
export LANG=C
ulimit -s unlimited

module purge
module load scl/devtoolset-8
module load intel_parallelstudio/2020update2
module load cmake/3.16.3

cd ${WORKDIR}
if [ -d psi4 ]; then
  mv psi4 psi4-erase
  rm -rf psi4-erase &
fi

# load miniforge3 env
. ${INSTALL_PREFIX}/conda_init.sh

tar zxf ${TARBALL}
cd psi4

mkdir build
cd build
cmake .. \
    -DMAX_AM_ERI=7 \
    -DCMAKE_INSTALL_PREFIX=${INSTALL_PREFIX} \
    -DBUILD_SHARED_LIBS=ON \
    -DCMAKE_CXX_COMPILER=icpc \
    -DCMAKE_C_COMPILER=icc \
    -DCMAKE_Fortran_COMPILER=ifort
make -j ${PARALLEL}

ctest -j${PARALLEL}

make install

メモ

  • テストは全てパスしています。
  • ライセンスの関係上、anaconda のかわりに miniforge を用いて環境を作っています。
  • intel + gcc9/10 の組み合わせではテストで大量のエラー
    • 直接関係があるのかわからない Perl に関係したエラーなども有り。詳細な調査は行っていない
    • (Software Collection の GCC を使ったことが原因かもしれない)
  • intel2018 + gcc8 でもある程度のエラーが発生。試した範囲内では、intel2020 + gcc8 だけが正常に動作
  • Linux 版の配布バイナリに合わせて MAX_AM_ERI=7 でビルド。
  • スレッド並列時には psi4 -n (スレッド数) のように指定の必要有り。OMP_NUM_THREADS/MKL_NUM_THREADSは無視される。
    • python スクリプト中では psi4.core.set_num_threads で指定可能

 

CheMPS2 有効化バージョンに関するメモ

conda については上記のバージョンで使ったものを流用

CheMPS2 の導入

$ git clone https://github.com/SebWouters/CheMPS2.git
$ cd CheMPS2/
$ git checkout refs/tags/v1.8.12
$ module purge
$ module load scl/devtoolset-8
$ module load intel_parallelstudio/2020update2
$ module load cmake/3.16.3
$ mkdir build
$ cd build/
$ CXX=icpc cmake .. -DMKL=ON -DCMAKE_INSTALL_PREFIX=/local/apl/lx/psi4-15-chemps2/chemps2-1.8.12 -DWITH_MPI=OFF
$ make
$ make install
$ make test
$ cd CheMPS2/
$ cp ../../tests/test14.input .
$ sed -i "s/\/path\/to/..\/..\/tests\/matrixelements/" test14.input
$ ./chemps2 --file=test14.input

PSI4

#!/bin/sh

# assume miniforge for psi4 was already installed

VERSION=1.5
INSTALL_PREFIX=/local/apl/lx/psi4-15-chemps2
CHEMPS2DIR=/local/apl/lx/psi4-15-chemps2

BASEDIR=/home/users/${USER}/Software/PSI4/1.5
TARBALL=${BASEDIR}/psi4.tar.gz

WORKDIR=/work/users/${USER}
PARALLEL=12

#---------------------------------------------------------------------
umask 0022
export LANG=C
ulimit -s unlimited

module purge
module load scl/devtoolset-8
module load intel_parallelstudio/2020update2
module load cmake/3.16.3
cd ${WORKDIR}
if [ -d psi4 ]; then
  mv psi4 psi4-erase
  rm -rf psi4-erase &
fi

# load miniforge3 env
. ${INSTALL_PREFIX}/conda_init.sh

tar zxf ${TARBALL}
cd psi4

mkdir build
cd build
cmake .. \
    -DENABLE_CheMPS2=ON \
    -DCheMPS2_DIR=${CHEMPS2DIR} \
    -DMAX_AM_ERI=7 \
    -DCMAKE_INSTALL_PREFIX=${INSTALL_PREFIX} \
    -DBUILD_SHARED_LIBS=ON \
    -DCMAKE_CXX_COMPILER=icpc \
    -DCMAKE_C_COMPILER=icc \
    -DCMAKE_Fortran_COMPILER=ifort
make -j ${PARALLEL}

make install

ctest -j${PARALLEL}