FMO 創薬コンソーシアム FMODD 京での FMO 計算練習会 2015 年 5 月 22 日 理化学研究所
本講習会の内容 1. 京の構成とABINIT-MPの概要 2. 京にログイン 計算環境の準備 3. ジョブの投入練習 1(TrpCageの例題を用いた基本ジョブ実行練習 ) 4. ジョブの投入練習 2(ERαの例題を用いた実践的なジョブ実行練習 ) 5. 新規作成構造のジョブの投入に関する注意点 6. 質疑応答 TrpCage ERα-EST 複合体 2
京のサーバ構成概要 home 領域主にプログラム開発用 (/home/hp150160/k0xxxx) SSHログイン ( 公開鍵認証 ) PuTTYなど 移動 cd コマンド ファイルコピーの流れ Upload AJF,PDB Download LOG,CPF data 領域出力ファイル用 (/data/hp150160/k0xxxx) 作業場所 ジョブの投入 結果の回収 ステージイン ステージアウト 計算サーバ WinSCP など 京にログインするとまず home 領域に入ります しかし実際の計算の投入 結果の回収は data 領域で行いますので 作業場所に移動します
data 領域について data 領域 ( /data/hp150160 以下 右図参照 ) の構成は次のようになっています ABINIT-MP6+ ディレクトリ ABINIT-MP 関連ファイル群 データディレクトリ本日使用するデータなどの共有場所 各ユーザディレクトリ各自がファイル編集やジョブ投入を行う作業場所 まず各自で /data/hp150160 以下にローカルアカウント名のディレクトリを作成して下さい data 領域の構成 ( 課題 hp150160) /data/hp150160/ ABINIT-MP6+/ abinitmp_smp mkinp_pub6.tcl FMODD_SHARE/ 20150522_sample/ k01867/ k0xxxx/ ABINIT-MP ディレクトリ ABINIT-MP 実行体 AJF 整形スクリプト データディレクトリ 本日使用データ 各ユーザディレクトリ
京 での計算環境の準備 京のログイン ファイルの転送に必要なソフト PuTTY, Teratermなど WinSCP 京にログインし データ領域に自分のディレクトリを作成 Linuxマシンからログインする場合 ssh USER_ID i 秘密鍵ファイル USER_ID@k.aics.riken.jp 複数秘密鍵を持っている場合には -i オプションで秘密鍵ファイルを指定可 各自の USER_ID で FMO 計算を投げるためのディレクトリを作成 klogin6$ cd /data/hp150160 klogin6$ pwd /data/hp150160 klogin6$ mkdir USER_ID 5
全電子計算に必要な一連の作業手順 1 PDB からタンパク質構造をダウンロード 2 構造の補正 ( 水素付加 力場による最適化など ) 3 FMO 計算の入力ファイルの作成 利用ソフトウェア 分子設計支援ソフト等 BioStation Viewer 入力ファイルを計算サーバにアップロード 4 FMO 計算の実行 ( 並列計算 ) ABINIT-MP 出力ファイルをローカルにダウンロード 5 計算結果 (log cpf ファイル ) の解析 BioStation Viewer 本講習会では 京 での 4 のステップの実行方法について説明 6
ジョブ投入に必要なファイル FMO 計算を 京 で実行するうえで必要な 3 つのファイル 1. タンパク質構造ファイル (PDB ファイル ; *.pdb) 2. FMO 計算入力ファイル (AJF ファイル ; *.ajf ) 3. ジョブ投入用スクリプトファイル ( *.sh) ジョブ投入練習 1 (TrpCage:20 残基 ) TrpCage.pdb TrpCage_MP2-631Gd.ajf TrpCage_MP2-631Gd.sh ジョブ投入練習 2(ER- リガンド複合体 : 約 240 残基 ) ERa-EST.pdb FMO 計算入力ファイル ジョブ投入用スクリプトファイル 黒字 : 事前配布ファイル赤字 : 講習会中に TrpCage のファイルを編集して各自で作成 7
基本の計算条件など FMO 計算レベル FMO2-MP2/6-31G* 計算 計算オプションとしてコレスキー分解の利用 フラグメント分割 アミノ酸 1 残基を1フラグメント 1リガンドは1フラグメント ( 分子量 600 以下?) FMO 創薬コンソーシアムで流す本番ジョブは この条件に揃えます! 8
ジョブ投入練習 1 (TrpCage:20 残基 ) TrpCage(20 残基 フラグメント数 20) を用いて 京 の 24 ノード (192 コア ) を用いてジョブ投入の基本練習 1. FMO 計算用ディレクトリの作成 (/data/hp150160/user_id/test/trpcage) 2. ユーザーの端末 (Windows) で準備した入力 (AJF PDB ジョブ投入用スクリプト ) を 京 にアップロード 3. ジョブ投入用スクリプトのチェック (pjstgchk コマンド ) 4. ジョブの投入 (pjsub コマンド ) 5. ジョブ状態の表示 (pjstat コマンド ) 6. ジョブのキャンセル (pjdel コマンド ) 7. 計算中の log の確認方法 (pjget コマンド ) 遅くなるので 極力行わないこと 8. 計算完了後 log ファイルと cpf ファイルが得られること確認 9
TrpCage の計算環境の準備 作業ディレクトリの作成 klogin7$ cd /data/hp150160/user_id klogin7$ mkdir p test/trpcage klogin7$ cd test/trpcage TrpCage の入力ファイル一式を WinSCP でアップロード 1. TrpCage.pdb 2. TrpCage_MP2-631Gd.ajf 3. TrpCage_MP2-631Gd.sh 10
ジョブキューについて 京コンピュータは 同時に複数ユーザーが利用するシステムであるため 計算はまず待ち行列 ( キュー ) に投入されます その後 計算資源が確保され次第 順次実行されます 入力ファイルを持って行列に並ぶ (AJF, PDB) ステージイン計算サーバに入力ファイルをコピー ノード ノード ノード ジョブ投入 待ち行列 自動的に振り分けられて実行 計算サーバ ステージアウト自分のディレクトリに出力ファイルをコピー キューは 計算規模に応じて複数設定されています
ジョブキューについて キュー名 ノード数 計算時間 最大 ジョブ投入可能時間帯 実行遷移可能時間帯 ジョブ投入数制限 同時実行数制限 small Min: 1 Max: 384 large Min: 385 Max: 36,864 24 時間常時 大規模ジョブ実行期間以外 グループ全体で 15 システム全体で 1200 なし 他に huge キュー ( 大規模ジョブ用 ) や micro キューがありますが ここでは触れません 大規模ジョブ実行期間は 1 ヶ月に一度 連続 4 日間ほど占有する形で設定されています スケジュールは利用者ポータルサイトで確認することができます (3 ヶ月先まで )
ジョブ投入用スクリプトの準備 バッチジョブで ABINIT-MP を利用した FMO 計算を流す場合には 下記のようなスクリプトを書いて pjsub コマンドを用いて実行します < TrpCage_MP2-631Gd.sh > #!/bin/sh #----- pjsub option -----# #PJM --stg-transfiles all # ステージイン ステージアウト情報出力 #PJM --stgin /data/hp150160/abinit-mp6+/abinitmp_smp./ # ABINIT-MP バイナリの指定 #PJM --stgin "./TrpCage.pdb./" #PJM --stgin "./TrpCage_MP2-631Gd.ajf./input.ajf" # 分子構造ファイルを指定 # 入力ファイルを指定 #PJM --stgout "rank=0./stdout./trpcage_mp2-631gd.out" # 出力ファイルを指定 #PJM --stgout "rank=0./ TrpCage_MP2-631Gd.cpf./" # cpf ファイルを指定 #PJM --rsc-list "elapse=01:00:00" # 最大計算時間の指定 ( 指定方法は [ 時間 : 分 : 秒 ]) #PJM --rsc-list rscgrp=small #PJM --rsc-list "node=24" # キュー (small/large) を指定 # 使用するノード数を指定 #PJM --mpi "proc=24" # プロセス数を指定 ( スレッド 8 の場合 ノード数と一致 ) # 次のスライドに続く ( 以下は修正なし ) 赤字の箇所だけ各自で編集して下さい 13
ジョブ投入用スクリプトの準備 ( 続き ) < TrpCage_MP2-631Gd.sh > 続き #PJM --mpi "use-rankdir" #PJM j #PJM s # # ランクディレクトリ使用宣言 # 標準エラー出力を標準出力ファイルへ出力 # 統計情報出力. /work/system/env_base_1.2.0-15 # 環境変数の指定 # export OMP_NUM_THREADS=8 # スレッド数の指定 (1 プロセスあたりに使用するコア数 ) export THREAD_STACK_SIZE=256000 # #----- program execution -----# mpiexec -stdin./input.ajf -stdout stdout./abinitmp_smp ここは このままでいいです # スレッド毎のスタック領域の大きさを K byte' 単位で指定 # FMO 計算実行 使用するノード数は 12 の倍数とすること ( 例 1)TrpCage(20 フラグメント ) 24 ノード使用 (12 2) ( 例 2)Erα- 阻害剤複合体 (238 フラグメント ) 240 ノード使用 (12 20) 14
バッチジョブ用スクリプトのチェック (pjstgchk コマンド ) バッチジョブを投入する前に入力ファイル 入力ファイル 及びバッチジョブ用スクリプトの内容のチェックをします klogin7$ pjstgchk TrpCage_MP2-631Gd.sh 0 error(s). 0 error(s). というメッセージが出ればOK 9 files (106,248,958 bytes) will be transferred for stage-in. バッチジョブの投入 (pjsub コマンド ) バッチジョブの実行形式は以下の通りです klogin7$ pjsub TrpCage_MP2-631Gd.sh [INFO]PJM 0000 pjsub Job 12345 submitted. 投入したジョブの JOB_ID 15
ジョブ状態の表示 (pjstat コマンド ) 投入したジョブ状態やリソース情報を確認する場合 pjstat コマンドを使用します klogin7$ pjstat ACCEPT QUEUED STGIN READY RUNNING RUNOUT STGOUT HOLD ERROR TOTAL 0 1 0 0 0 0 0 0 0 1 s 0 1 0 0 0 0 0 0 0 1 JOB_ID JOB_NAME MD ST USER GROUP START_DATE ELAPSE_TIM NODE_REQUIRE RSC_GRP SHORT_RES 2835758 TrpCage-MP2-631G NM QUE k01873 hp150160 [--/-- --:--:--] 0000:00:00 12:- small RSCGRP STOP ジョブ情報の表示項目 項目名 内容 JOB_ID ジョブID です JOB_NAME ジョブ名です MD ジョブモデルです NM は通常ジョブ または 会話型ジョブです ST はステップジョブです BU はバルクジョブです ST ジョブの現在の処理状態です 詳細は後述のジョブのステータスを参照してくだ さい USER 実行ユーザ名です GROUP 実行ユーザのグループ名です START_DATE ジョブが実行前の場合は 開始予測時刻 実行中および実行後の場合は実際 に開始した時刻です 予測時刻の場合 時刻が '[', ']' で囲まれた状態で表示さ れます ELAPSE_LIM ジョブがRUN 状態以降 経過時間を表示します NODE_REQUIRE ジョブの投入時のノード形状とノード数です RSC_GRP ジョブの投入時のリソースグループ名です REASON ジョブの何らかの処理に対して 異常があった場合にメッセージが表示されます 16
ジョブ状態の表示 ( 続き ) ジョブのステータス一覧 表示内容 状態 状説明 ACC ACCEPT ジョブ投入が受け付けられた状態です RJT REJECT ジョブ投入が受け付けられなかった状態です QUE QUEUED ステージイン待ち状態です SIN STGIN ステージイン処理中です RDY READY ジョブ実行待ち状態です RNA RUNNING-A ジョブ実行に必要な資源の獲得中です RUN RUNNING ジョブ実行中です RNO RUNOUT ステージアウト待ちです ステージングをしない場合は ジョブ終了処理完了待ちです SOT STGOUT ステージアウト中です EXT EXIT ジョブ終了処理完了です CCL CANCEL ジョブ実行中止による終了です HLD HOLD ユーザによるジョブホールド状態です ERR ERROR エラーによるジョブホールド状態です ジョブのキャンセル (pjdel コマンド ) ジョブのキャンセルは以下のとおりです klogin7$ pjdel JOB_ID 17
計算中のログの確認方法 (pjget コマンド ) ジョブスクリプトで指定した出力ファイルは 計算終了後にステージアウトされるまで確認出来ません そのため 計算の途中にログを確認したい場合には pjget コマンドを用いてログを書き出します ログを書き出したい計算ジョブの JOB_ID の確認 klogin7$ pjstat ACCEPT QUEUED STGIN READY RUNNING RUNOUT STGOUT HOLD ERROR TOTAL 0 1 0 0 0 0 0 0 0 1 s 0 1 0 0 0 0 0 0 0 1 JOB_ID JOB_NAME MD ST USER GROUP START_DATE ELAPSE_TIM NODE_REQUIRE RSC_GRP SHORT_RES 2835758 TrpCage-MP2-631G NM QUE k01873 hp150160 [--/-- --:--:--] 0000:00:00 12:- small RSCGRP STOP pjget コマンドを用いて計算途中のログの書き出し klogin4$ pjget 2835758 0:stdout XXX.log JOB_ID 計算機サーバ上でのログファイル 書き出すファイル名 ログの書き出しは適切な間隔で行いましょう ( 例 :1 時間ごと ) 18
結果ファイル FMO 計算を 京 で実行後の 2 つの結果ファイル 1. 出力結果ファイル (Log ファイル ) 2. 可視化解析用ファイル (CPF ファイル ) ジョブ投入練習 1 (TrpCage:20 残基 ) TrpCage_MP2-631Gd.out TrpCage_MP2-631Gd.cpf IFIE 解析例 (Trp6) WinSCP で各自の PC にダウンロードして ファイルの中身を確認してみてください Log ファイル : 出力結果の確認 ( 正常終了の確認 Total energy など ) CPF ファイル :BioStation Viewer15+ で IFIE 解析 19
ジョブ投入練習 2 (ERα:236 残基 ) ERα(236 残基 )- 阻害剤 - 結晶水の複合体の例題を用いて 京 で数百ノードを用いた実践的なジョブ投入の練習 1. FMO 計算用ディレクトリの作成 (/data/hp150160/user_id/test/era) 2. ユーザーの端末から PDB ファイルを 1 で作成したディレクトリにアップロード 3. 使用するノード数を決定するため PDB ファイルと BioStation Viewer15+ を利用してフラグメント数の確認 4. 練習 1 の TrpCage の ajf を利用して ERα 用の ajf ファイルの準備 5. 練習 1 の TrpCage の ajf を利用して ERα 用のジョブ投入用スクリプトの準備 6. ジョブ投入用スクリプトのチェック (pjstgchk コマンド ) ここまで出来たらジョブを投入せずにお待ちください 7. ジョブの投入 (pjsubコマンド) 8. ジョブが流れていたら 計算中のlogの確認 (pjcatコマンド) 9. 計算完了後 outファイルとcpfファイルが得られていることを確認 20
フラグメント数の確認 使用する計算ノードを決定するため BioStaion Viewer15+ を用いて 複合体のフラグメント数を数える 作業手順の詳細は 付録を準備予定です 21
各 PDB に対応した AJF 編集箇所 各計算ターゲットごとに変更する箇所 PDB ファイルの指定 CPF ファイルの指定 リガンド電荷の指定 ( リガンドがあり 且つ電荷を持っている場合にのみ ) &CNTRL ReadGeom='ERa-RAL.pdb' WriteGeom= ERa-RAL_MP2-631Gd.cpf' / &FMOCNTRL LigandCharge= RAL=1 / 22
BioStation Viewer15+ で作成した AJF 入力設定からの変更点 計算レベル (MP2/6-31G*) 使用メモリ NBO 電荷の計算 &CNTRL Method='MP2' Memory=8000 / &SCF IFCD='YES' / &BASIS BasisSet='6-31G*' / &POP NBOANL='ON' / 新たに Viewer から AJF を作った場合には 同じになるように指定をお願いします 23
ERα-EST 複合体の計算環境の準備 1. 作業ディレクトリの作成 klogin6$ cd /data/hp150160/user_id/test klogin6$ mkdir ERa klogin6$ cd ERa 2. ERa の構造 (PDB) を WinSCP で京にアップロード 3. TrpCage の入力ファイルをコピー klogin6$ cp../trpcage/trpcage_mp2-631gd.ajf ERa-EST_MP2-631Gd.ajf klogin6$ cp../trpcage/trpcage_mp2-631gd.sh ERa-EST_MP2-631Gd.sh 24
ERα-EST 複合体の AJF 編集例 ( 中性リガンド ) ERa-EST_MP2-631Gd.ajf の以下の箇所を編集する &CNTRL ReadGeom= ERa-EST.pdb' / WriteGeom= ERa-EST_MP2-631Gd.cpf' &FMOCNTRL LigandCharge= EST=0 リガンド (EST) が中性の場合 17b-estradiol (EST) / 25
ERα-RAL 複合体の AJF 編集例 ( 荷電リガンド ) ERa-RAL_MP2-631Gd.ajf の以下の箇所を編集する &CNTRL ReadGeom= ERa-RAL.pdb' Raloxifene (RAL) WriteGeom= ERa-RAL_MP2-631Gd.cpf' / &FMOCNTRL LigandCharge= RAL=1 リガンド (RAL) が +1 の正味電荷を持っているため / 26
ERα-EST 複合体のジョブスクリプト編集例 ERa-EST_MP2-631Gd.sh の以下の赤字の箇所を編集する #!/bin/sh #----- pjsub option -----# #PJM --stg-transfiles all #PJM --stgin /data/hp150160/abinit-mp6+/abinitmp_smp./ #PJM --stgin "./ERa-EST.pdb./" #PJM --stgin "./ERa-EST_MP2-631Gd.ajf./input.ajf" #PJM --stgout "rank=0./stdout #PJM --stgout "./ERa-EST_MP2-631Gd.cpf./"./ERa-EST_MP2-631Gd.out" #PJM --rsc-list elapse=03:00:00 # 最大計算時間の指定 ( 指定方法は [ 時間 : 分 : 秒 ]) #PJM --rsc-list rscgrp=small #PJM --rsc-list "node=240" # キュー (small/large) を指定 # 使用するノード数を指定 #PJM --mpi proc=240 # プロセス数を指定 ( スレッド 8 の場合 使用ノード数と一致 ) # ######## 以下変更なし ######## 入力ファイルの編集後 pjstgchk コマンドでスクリプトを確認後 pjsub コマンドでジョブを投入 27
新規作成構造の ジョブの投入に関する注意点 新規の PDB 構造を流す際には 以下のチェックをしてから MP2/6-31G* 計算を流すようにしてください 1. コストの小さい HF/STO-3G 計算が完走することを 少数ノードで確認する Method= HF BasisSet= STO-3G 例えば 48 ノードを使用し 1 時間程度の設定にする 2. ( オプション ) 本計算の設定のもと ノード数と計算時間を 12 ノード 数分に減らして MonomerSCC 計算まで動くかどうかを確認 途中経過までの Log, 及び空の CPF ファイルが回収出来るかを確認 28