fp.py on ISSP Ohtaka

東大物性研のスパコン[1]のシステムBというのが使えるようになったので,そこで自分のプログラムの動作確認をした.古典力場構築プログラムfp.py[2]が普通に使えたので,設定とジョブ投入方法をメモしておく.

ダウンロード

nap (Nagoya Atomistic simulation Package) を下記GitHubサイトからダウンロードする. https://github.com/ryokbys/nap

展開して,ディレクトリ名を変更して,~/src/nap というディレクトリに置かれたとする.

pmdのコンパイル

Parallel Molecular Dynamics (pmd) プログラムをコンパイルする.

$ cd ~/src/nap/
$ ./configure FCFLAGS='-O3 -march=core-avx2 -ip -ipo -g -traceback'
$ cd pmd/
$ make pmd

Pythonの設定

初期設定ではpythonへのパスは通っていない.システム内にいくつかのバージョンのpythonが入っているが,残念ながらログインノードと計算ノードでインストールされているパッケージが異なっていて,扱いづらいので,自分のディレクトリに独自のpythonをインストールする.

Homebrew for Linux を利用してpython@3.8をインストールするため,ココ に従い Homebrew for Linux をインストールする.

python@3.8 をインストールして,pythonとpipのリンクを $HOME/bin/ に入れて pythonpip コマンドを使えるようにしておく.

$ brew install python@3.8
$ cd ~/bin/
$ ln -s ~/.linuxbrew/bin/python3 python
$ ln -s ~/.linuxbrew/bin/pip3 pip

いくつか必要となるPythonパッケージをインストールする.

$ pip install numpy pandas docopt ase

nappyの設定

~/.bash_profile.local に下記を追加して,PYTHONPATH へnappyを追加しておく.

$ export PYTHONPATH=${HOME}/src/nap:${PYTHONPATH}

これがちゃんと反映されるように,~/.bash_profile の最後に下記を書いておく.

source ~/.bash_profile.local

fp.pyの動作確認

nap/examples/fp_LLZ/ を適当な場所にコピーして fp.py のテストを行う.

$ cd /path/to/testdir
$ cp -r ~/src/nap/examples/fp_LLZ ./
$ cd fp_LLZ

subjob.sh内の

pmd 2>&1 > out.pmd.NpT

の行を,

srun -N 1 -n 1 -c 1 pmd 2>&1 > out.pmd.NpT

のように srun でpmdを実行するように変更する.

in.fitpot の中に cs_num_individuals 4 という行があり,4個体並列で計算することを確認し,下記コマンドで fp.py を実行する.

$ sbatch -p B1cpu -J 'test_fp' -N 1 -n 4 -o out.fp ~/src/nap/nappy/fitpot/fp.py --nproc=4

下記のような out.fp ファイルが出力されていれば成功.

$ tail -n5 out.fp
   iid,Lr,Lth,Lvol,Llat,L=        6    0.7614     0.4336     2.4838     0.0000     3.6788
   iid,Lr,Lth,Lvol,Llat,L=        5    0.4043     0.2991     1.0301     0.0000     1.7336
   iid,Lr,Lth,Lvol,Llat,L=        9    2.1364     0.8182    27.3374     0.0000    30.2921
 step,time,best,vars=      1    137.4    1.7336  1.000  1.152  1.177  0.974  0.833  0.873  2.037  1.773  2.352  2.169  1.964  4.219  2.038  1.536  1.862  1.000
elapsed time = 137.432213 sec.

Ohtakaにおける注意

Ohtakaには1ノード当たり2CPUあり,全部で128コアあるので,fp.py では128並列まで可能なはず.

1プロセスのクロックはそれほど速くないので,スピードは速くないが,並列数が多いので広域探索が可能なのでもしかしたら収束までが速くなるかもしれない.


  1. 東京大学物性研究所スーパーコンピュータ・センター
  2. R. Kobayashi, Y. Miyaji, K. Nakano, M. Nakayama, “High-throughput production of force-fields for solid-state electrolyte materials”, APL Materials 8, 081111 (2020)