WinmostarからのLAMMPSリモートジョブの投入方法を紹介します。
リモートジョブ投入には、前提としてSSH接続設定、LAMMPS連携パッケージ(matlantis-lammps) のインストールが完了している必要があります。事前にこれらを完了していただくようお願いします。
方法はそれぞれ下記をご参照ください。
なお、Winmostarの公式マニュアルはこちらをご参照ください。
Winmostar を使ったモデリングなど操作方法についてはこちらのチュートリアルをご参照ください。
検証環境:
-
Winmostar 11.12.1
(Winmostar V11プロフェッショナル版エリートのみ) - Python 3.9 および Python 3.11
- matlantis-lammps v0.1.1
手続きの流れ
1. 接続設定
準備:Winmostar でプロジェクトやファイルをなにも開いていない状態で設定します。
(なにか開いている場合は、ファイル> 閉じる で閉じてください)
1.1 ローカルマシンの .ssh/config の変更
手元のPCのSSH接続設定ファイルにポートフォワードの設定を追記します。
C:¥Users¥[USERNAME]¥.ssh フォルダ内の config ファイルを以下のように書き換えます。
# SSH configuration for connecting directly to Matlantis
Host matlantis
ProxyCommand C:\Users\[USERNAME]\MyScripts\ssh_matlantis.bat
User jovyan
IdentityFile C:\Users\[USERNAME]\.ssh\id_rsa
LocalForward 10335 localhost:2222
# Note: For Windows, use an absolute path like C:\Users\[USERNAME]\.ssh\id_rsa
※ id_rsa の部分は pem ファイルでも問題ありません。
※ pem ファイルはこの後の手順で生成します
1.2 Winmostar用鍵生成(pem ファイル)
Winmostarではpem 形式の接続のみサポートされています。既存の秘密鍵を pem 形式に変更します。
ssh-keygen -p -N "" -m pem -f (秘密鍵のファイル名)参考:https://winmostar.com/jp/manual_jp/html/winmos/winmos_remote.html#ssh
1.3 SSH接続テスト
1.3-1 Matlantis への SSH接続の確認
PowerShell やコマンドプロンプトなどのターミナルでssh接続をします。
ssh matlantis
※接続できない場合は、SSH接続 設定方法をご確認ください
1.3-2 ポートフォワード接続の確認
別のターミナルを開き、sshでポート転送接続をします。
ssh -p 10335 jovyan@localhost
1.4 Winmostarのリモートジョブ設定
ツール> リモートジョブ投入で「Submit Remote Job」画面を開き、Manage > Add Profile で プロファイルを設定します。
1.4-1 プロファイルの設定(Connection)
以下のように設定して、「TEST Connection」を「SSH接続のみ」として実行します。「テストが正常に終了しました」と表示されれば問題ありません。
- Profile name : プロファイルに名前をつけます。(例:matlantis)
- Host Name:localhost
- User Name:jovyan
- Port:10335
- SSH Private Key:pem ファイルを指定します。
- Local Port:2222
1.4-2 プロファイルの設定(Queue & Solver )
以下のように設定します。
- Queue:Run
- Solver:lammps
- Sell Script: Use Template > lammps.txt
- Add > Add Template で名前をつけてください。
テンプレートの中身は以下のように書き換えます。
- # Insert command here と #Do not modify the following の間を編集
- 元々のMPI_COMMAND, BIN_LAMMPS の行はコメントアウト(削除でもOK)
- matlantis-lammps をインストールしたPythonバージョンに合わせて設定
Python3.9の場合:
# Insert commands here
# MPI_COMMAND="mpirun -n %WM_NUM_PROC% "
# BIN_LAMMPS=lmp_mpi
export PATH=/home/jovyan/.py39/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/pyenv/versions/3.9.16/lib:$LD_LIBRARY_PATH
MPI_COMMAND=""
BIN_LAMMPS=lmp_serial
# Do not modify the followings
Python3.11の場合:
# Insert commands here
#MPI_COMMAND="mpirun -n %WM_NUM_PROC% "
#BIN_LAMMPS=lmp_mpi
export PATH=/home/jovyan/.py311/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/pyenv/versions/3.11.11/lib:$LD_LIBRARY_PATH
MPI_COMMAND=""
BIN_LAMMPS=lmp_serial
# Do not modify the followings
※ LD_LIBRARY_PATH は環境によって変更が必要な場合があります。
libpython3.9.so.1 が見つからない場合:
find /usr -name "libpython3.9.so.1.0" 2>/dev/null
1.4-3 テスト接続
「Test Connection」で「SSH接続とジョブスケジューラとLAMMPS」を選択して「OK」で接続に問題がないか確認してください。
14項目あります。
2. PFP 対応LAMMPSインプット作成準備
Winmostarの ツール > 環境設定 で設定を変更します。
計算タブで、MDセクションにある以下を有効にして、「適用」で設定を保存してから「OK」で画面を閉じます。
- LAMMPS の dataファイル内で同一パラメータのtypeを統合
- LAMMPS の pair_style, Potential file の入力を許可
3. リモートジョブの投入
3.1 新規プロジェクトの作成
ファイル>新規プロジェクトでプロジェクト名を入力し、保存します。
3.2 初期構造の作成
リモートジョブ設定のため、サンプルファイルを使います。
ファイル>インポート>Samples ファイル > Si.cif
(現在の構造を破棄して新しい構造を読み込みますか?>はい)
3.3 力場の設定
MD > LAMMPS > ワークフロー設定
電荷が設定されていない分子が含まれます。電荷を設定しますか? > いいえ
3.3-1 パラメータファイルを使用
3.3-2 PFP力場を設定
- Atom styple :"charge" を選択
-
Pair style:PFPの設定
書式:pfp_api(半角スペース) vN.0.0(PFPバージョン)(半角スペース) CRYSTAL_U0(PFPのcalc mode)
例:pfp_api v7.0.0 CRYSTAL_U0 -
Potential file:species
species
3.4 ワークフロー設定
テストのためここではNVT, NPT を削除して minimizeのみとします。(「-」ボタンで削除できます)
3.5 リモートジョブの実行
以下のように設定します。
- リモートジョブを実行を選択
- プロファイル: 1.4-1 で設定したプロファイルを選択
- of MPI Procs : 「1」に設定
「Test Connection」 で接続に問題がないことを確認してから「実行」してください。
いくつかの警告が表示されます。「はい」を選択してください。
3.6 リモートジョブ実行中
- Winmostar Job Manager の 一番上にいま実行したジョブが表示されます。
- Status が「WAIT」「SEND」「PEND」「RECV」「END」と変化します。「END」が表示されれば計算が正常終了しています。
3.7 結果の確認
- Matlantis 上では ホームディレクトリ(/home/jovyan)wm_[UserName]という名前のフォルダが作成され、その中にWinmostarのリモートジョブで実行したファイルが格納されています。
- Winmostar での結果解析方法は公式マニュアルをご確認ください。
https://winmostar.com/jp/tutorials/index.html#LAMMPS