intel parallel studioでVASP5.4.4.pl2とlammpsのコンパイル,CUDAセットアップ
インテル Parallel Studio XE 2020 Composer Edition for Fortran & C++ Linux アカデミック 日本語版+OpenMPI-4.0.5でVASP5.4.4.pl2のコンパイル
- プリインストール版計算機を買ったんだが環境変数が設定されてなく,ifortが使えなかった
→ログインディレクトリの.bashrcに以下を追加し,source ~/.bashrcして環境変数更新
source /opt/intel/bin/compilervars.sh intel64
- https://www.open-mpi.org/から安定版のファイルをダウンロード.このときはopenmpi-4.0.5.tar.gz
ホームフォルダにinstalled_packagesというディレクトリを作って,そこにこのファイルを置き,そのディレクトリで以下を実行
tar zxvf openmpi*.gz
- 展開されたフォルダに移動して以下を実行し自分の環境に合わせたコンパイル準備
./configure --prefix=/usr/local/openmpi CXX=icpc CC=icc FC=ifort F90=ifort F77=ifort
上ではインストールディレクトリを/usr/local/openmpiに,Cコンパイラをicc, C++コンパイラをicpc, fortranコンパイラをifortに
当然ながらicc, icpc, ifortと打って「コマンドが見つかりません」と出たらインテルコンパイラが入ってない
- make allと打って一般ユーザーでコンパイル
- エラーが出なければスーパーユーザーになってmake all install 2>&1 | tee make.log
(画面とmake.logにコンパイル時のメッセージ出力,下記のような警告は出てるがコンパイルは出来た)
../../../.././ompi/mpiext/pcollreq/use-mpi-f08/mpiext_pcollreq_usempif08.h(33): リマーク #5140: 識別できないディレクティブです。
!DIR$ IGNORE_TKR sendbuf, recvbuf
|
ハマるな危険!
スーパーユーザーになってインストールする際に,source /opt/intel/bin/compilervars.sh intel64を実行しないとエラー出る(当然)
ハマりましたw
- 一般ユーザーに戻って.bashrcに以下を追加
export MPIROOT=/usr/local/openmpi
export PATH=$MPIROOT/bin:$HOME/bin:$PATH
export LD_LIBRARY_PATH=$MPIROOT/lib:$LD_LIBRARY_PATH
- source ~/.bashrcして環境変数更新,mpif90と打って
「ifort: コマンドライン・エラー: ファイルが指定されていません。ヘルプを表示するに は "ifort -help" と入力してください。」
と出ること確認,以上でOpenMPIのセットアップ完了
- VASPのIDとPWを入手してダウンロードサイトから
vasp.5.4.4.pl2.tgz
をダウンロード,installed_packagesに保存し,そのディレクトリでtar zxvf vasp*.tgzとして展開
- archの中のmakefile.include.linux_intelをmakefile.includeとし,中身を編集
FC = mpif90
FCL = mpif90 -mkl=sequential -lstdc++
BLACS = -lmkl_blacs_openmpi_lp64
MPI_INC = /usr/local/openmpi/include
エラーがでなければ,binの下にvasp_gam vasp_ncl vasp_stdが生成される.これを実行パスに置いて使用する
BLACSを変えずにコンパイルすると,次のようなエラーで停止する(エラーメッセージがヒントに)
parallel_studio_xe_2019_update4_cluster_editionのインストール
- parallel_studio_xe_2019_update4_cluster_edition.tgzを入手
- インストール方法はググれば出てくるので省略
- 必要要件不足が表示されたので,
#yum install libXScrnSaver 実行
- ~/.bashrcに以下を追加
source /opt/intel/bin/compilervars.sh intel64
(実行出来ないときはsource ~/.bashrcしてみる)
→ifort, icc, mpiifort, mpiexecなどが実行出来るようになる
lammpsのコンパイル
- 最新版ではコンパイル失敗したが,lammps-11Aug17ではサクッと行けた
2020.10.01追記最新版(Mar20)はtar.gzとなっていながら中身は.tar, 下のCUDAセットアップ参照
- lammps-stable.tar.gzをフォルダにコピー
- $tar zxvf lammps*.gzで展開,lammps-11Aug17フォルダが生成される
- $cd lammps-11Aug17
$cd src
$make mpi
これでlmp_mpiが生成された
- lmp_mpiをコピーして使うか,実行パスが通ったフォルダにコピー
(~/.bashrcの中にexport PATH=$HOME/bin:$PATHと記述して~/binにlmp_mpiを置く)
- lammps-11Aug17/example/aireboに移動して
mpirun -np 4 lmp_mpi < ./in.airebo で動くこと確認
(注意点:< ./in.airebo とせずに < in.aireboとすると,binにあるlmp_mpiがbinにin.aireboを探すためファイルが無い,とエラー返す)
- 2019.07.10追記 過去の切断シミュレーションのスクリプト使ったら
ERROR: Unknown fix style rigid (../modify.cpp:854)
Last command: fix 2 wall rigid single force 1 off off off
とエラーが.lammpsコンパイル時にrigidパッケージをオンにしていなかったため.
- lammps/srcフォルダでmake package-statusと打つとパッケージが確認出来る
- make rigid yesでrigidパッケージを有効に
- make mpiで lmp_mpiを作り直す
CUDAのセットアップ
- ・cuda_9.2.148.396.37_linux.runをダウンロード
- スーパーユーザーになる
- 端末でinit 3と入力してXserver停止
- #sh cuda_9.2.148.396.37_linux.runを実行,デフォルトで進める
- init 5を実行してXserver起動
- ホームディレクトリの.bashrcに以下を追加
export PATH=/usr/local/cuda-9.2/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-9.2/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
|
GPUを使用するようにlammpsコンパイル
- 最新版lammpsをダウンロード,500MBぐらいあって時間かかる
- lammps-stable.tar.gzをlinuxのホームフォルダにコピー
- $tar xvf lammps*.gzで展開(zxvfするとエラー,.gzでありながらtarファイル),lammps-3Mar2フォルダが生成される
- $cd lammps-3Mar2
$cd lib/gpu
- Makefile.mpiをviエディタで編集.CUDA_HOME =/usr/local/cudaとなってるのをCUDA_HOME =/usr/local/cuda-9.2に変更
- make -f Makefile.mpiを実行
- 2020.10.08追記:CUDAインストール済みの計算機にてmake -f Makefile.mpiでエラーがでる.
CUDA_ARCH = -arch=sm_20を#つけてコメントアウトして,一番最新のCUDA_ARCH = -arch=sm_75を有効にしてコンパイル
このページでsm_75を調べた
- ./nvc_get_devicesとうつとGPU情報が表示される
- cd ../../srcしてlammps-3Mar2の下のsrcに移動
- make psしてオプション確認,GPU使用,剛体,Tersoff,剛体,xtcファイルdumpなどのオプションのため以下を実行してYESにする
make yes-gpu
make yes-rigid
make yes-peri
make yes-USER-MISC
make yes-USER-MOLFILE
make yes-MOLECULE
make yes-MANYBODY
make yes-MISC
make yes-KSPACE
|
- make mpiしてコンパイル,長々とメッセージ流れた後にエラーメッセージでなければlmp_mpiが生成される.
下はコンパイル成功したときのメッセージ
write_restart.o xdr_compat.o -lgpu -ldl -lcudart -lcuda -o ../lmp_mpi
size ../lmp_mpi
text data bss dec hex filename
14944214 22296 362296 15328806 e9e626 ../lmp_mpi
make[1]: ディレクトリ `/home/mdcalc/install_packages/lammps-3Mar20/src/Obj_mpi' から出ます
|
- 2020.10.08追記 ifort+OpenMPIでこちらのようなエラーでコンパイル失敗.
書かれているようにsrcディレクトリのpair_list.h, pair_list.cppを削除してコンパイル
- 実行ファイルlmp_mpiを実行パスを通したフォルダにコピー⇒$cp lmp_mpi ~/bin/lmp_mpi
- 実行パスを通すには.bashrcを編集
export PATH=$HOME/bin:$MPIROOT/bin:$PATH
|
上の例ではもともとの$PATHに,$MPIROOT/binと$HOME/binを追加している.