憂鬱神楽坂

西千葉メランコリー

物性研(System B Ohtaka)でのVTST-VASPコンパイル

内輪用です!(重要!)

下準備

まずはmodule loadから

module purge
module load oneapi_compiler/2023.0.0 oneapi_mkl/2023.0.0 oneapi_mpi/2023.0.0  

次にHDF5のインストール

HDF5® Source Code - The HDF Group

ここからソースコードをダウンロードしてください。

ダウンロードできたらHDF5のディレクトリ内で以下を実行します。
prefix=は各々のディレクトリを指定してください。

./configure --prefix=/home/test/hdf5-1.8.18/ --enable-fortran CC=mpicc FC=mpiifort CXX=mpicxx
make
make install

VASPのコンパイル

ここではVASPのバージョンは6.4.1を使用してます。

-VTSTの準備

ここではvtstcode 6.4を使用します。

Download — Transition State Tools for VASP

ここから入手できます。
解凍するとvtstcode6.4というディレクトリがあるので、その中に入ってるものを使用します。


"vasp.6.4.1/src"内にmain.Fというファイルがあるのでそれを開いて以下の箇所を次のように書き換えます。

CALL CHAIN_FORCE(T_INFO%NIONS,DYN%POSION,TOTEN,TIFOR, &
     LATT_CUR%A,LATT_CUR%B,IO%IU6)

この箇所はこんな感じに

CALL CHAIN_FORCE(T_INFO%NIONS,DYN%POSION,TOTEN,TIFOR, &
     TSIF,LATT_CUR%A,LATT_CUR%B,IO%IU6)


IF (LCHAIN) CALL chain_init( T_INFO, IO)

この箇所はこんな感じに

CALL chain_init( T_INFO, IO)

そうしたら"vtstcode6.4"内にあるすべてのファイル/ディレクトリを"vasp.6.4.1/src"内にコピーします。
その際chain.Fが置き換えられるので、バックアップ取るなりなんなりしておいてください。

次に".objects"ファイルを編集します。"vasp.6.4.1/src"内にあります。
隠しファイルなので、なんとかして頑張って開いてください。

ファイルを見てみると

~~~
hamil_rot.o  \
chain.o  \
~~~

という箇所があるので、これを以下のように追記します。

~~~
hamil_rot.o  \
bfgs.o dynmat.o instanton.o lbfgs.o sd.o cg.o dimer.o bbm.o \
fire.o lanczos.o neb.o qm.o \
pyamff_fortran/*.o ml_pyamff.o \
opt.o chain.o  \
~~~

次に"vasp.6.4.1/src"内にある"makefile"を編集します。
適宜検索して、以下のように変更してください。

LIB= lib parser pyamff_fortran
dependencies: sources libs

これでVTSTの準備は完了です。

-makefile.includeの準備

VASPのコンパイル済みバイナリの利用について - ISSP Supercomputer Center

ここに書いてある通り、"/home/issp/vasp/makefile.include"内に各バージョンごとにmakefile.includeが置いてあるので 基本的にはそれを元にして編集していきます。

CPP_OPTIONSはDFT-D4とかを使用したい場合はVASP wikiを見て書き換えてください。
HDF5_ROOTを下準備でインストールした、HDF5を指定するように書き換えてあげてください。
実行速度を比べてことはないのでなんとも言えないですが、OFLAGを-O3に書き換えたりはあんまりしない方がいいかも?

make

以下のような"~~.sh"ファイルを作ってsbatchでjobを投げればmakeできるはずです。

#!/bin/bash
#SBATCH -J test
#SBATCH -p i8cpu
#SBATCH -N 1

cd ${SLURM_SUBMIT_DIR}

ulimit -s unlimited

module purge
module load oneapi_compiler/2023.0.0 oneapi_mkl/2023.0.0 oneapi_mpi/2023.0.0  

export PATH=$PATH:/HDF5をインストールしたディレクトリ
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/HDF5をインストールしたディレクトリ/lib
echo $PATH

make DEPS=1 -j 128 std

make時のログはslurm-"jobnumber".outに出力されてるはずです。