REIN-K講習会
宮下 尚之
理化学研究所 神戸研究所
生命システム研究センター
分子機能シミュレーション研究チーム
創薬支援アプリ(ISLiMソフトウェア)講習会 ２０１４年２月２６日
公益財団法人都市活力研究所 (NPO法人バイオグリッドセンター関西)

京コンピュータ
• 性能 10 PFlops (LINPAC)
June 2011 No.1(8.162PF),
Nov. 2011 No.1(10.51PF),
June 2012 No.2,
Nov. 2012 No.3,
June 2013 No.4
• 試験利用 from Apr. 2011 to
Sep. 2012• 88,128 node, 705,024 core
(超並列スーパーコンピュータ）,8 core/node (2GHz)• 3D トーラスネットワーク• SPARC, Fujitsu compiler (C, C++, Fortran), MPI-2, OpenMP!2

京コンピュータとSCLS FX10

京コンピュータ

SCLS FX10#Core/node

8 core16 core#Node88,128 node

48 nodeTotal core

705,024 core

768 core

File system

Staging/Shared

Shared (home)

CPU

2.0GHz(sparc64VIIIfx)

1.6GHz(sparc64IXfx)

性能

10PF

10.1TF京コンピュータのディスク

ステージングによるデータ転送

Frontend shared HDD
計算ノード shared HDD
X 通信不可計算ノード local HDD
動的プロセス生成では、shared HDDのみ利用可(REINで利用)
SCLS FX10ではステージングは無い目次

1. REINの概要
2.
3.
4.
5.
6.
7.
8.

レプリカ交換法の基礎
レプリカ交換法を用いたアプリケーション例
REIN-Kとは
REIN-Kのしくみ
インストール
実行の為の準備
REINの実行

9. 実習手順書

多次元レプリカ交換インターフェースプログラム
Replica-Exchange INterface program for K
REIN-K

REIN プラットフォーム（計算科学）
モデル

REINはbinary形式のプログラムを京コンピュータもしくはPCクラスタ上で複数起動させる機能

任意のパラメータを変えて並列に起動し、ある周期毎に任意のパラメータの交換ができる

対応モジュール

京コンピュータで動くnamd（とmarble）に対応
PCクラスタで動くnamdに対応
インターフェースモジュールの開発により他にも対応

REMDの対応機能

現時点では、パラメータの交換対象は、温度とアンブ
レラポテンシャル

今後

将来的には対応するMDの種類と、レプリカ交換計算の種類を増やします。

利用目的・対応状況（分子シミュレーション）
機能

REINは既存の分子動力学(MD)プログラムを利用して、多次元レプ
リカ交換(MREM)シミュレーションを行う為のプログラム対応機種

REINは京コンピュータ, FX10とPCクラスタに対応

対応スケジュ
ーラ

富士通のスケジューラ、Grid Engine

計算対象は、生体高分子の構造予測, 分子間の結合自由エネルギー
想定する研究計算、構造変化揺らぎの予測です。
現時点ではMDはNAMD2を利用します
利用するMD(MARBLEもKでは対応はしていますが、現時点ではNAMD2でのプログラム
利用を推奨します。)
レプリカ交換の対応機能

現状、温度レプリカ交換、距離、角度、二面角のレプリカ交換ア
ンブレラサンプリングに対応

今後

将来的には対応するMDの種類と、レプリカ交換計算の種類、対応
機種・スケジューラを増やします。

レプリカ交換法の基礎

Replica-exchange molecular dynamics (REMD)
Replica #4

Not Accept

AcceptAcceptReplica #3• 同じシステムを複数用意（レプリカ）• 異なる温度（パラメータ）を与える

AcceptNot Accept
Replica #2• MDを実行

Accept• あるステップ毎にメトロポリスクライ

Acceptテリアに従って隣合う温度を持つレプ
リカ間で交換評価

Replica #1
AcceptAcceptAccept

時間[REM]	  K.	
  Hukushima,	
  and	  K.	
  Nemoto,	
  J.	
  Phys.	
  Soc.	
  Jpn.	
  65,	
  1604-­‐1608	
  	
  (1996)	
  
[1]	
  Y.	
  Sugita	
  and	  Y.	
  Okamoto,	
  Chem.	
  Phys.	
  Lett.	
  314,	
  141-­‐151,	
  (1999)	
  
[2]	
  Y.	
  Sugita,	
  A.	
  Kitao	
  and	  Y.	
  Okamoto,	
  J.	
  Chem.	
  Phys.	
  113,	
  6042-­‐6051	
  (2000)

6

MCMC
普通のモンテカルロ法：
静的モンテカルロ法

x1 → x2 →..... → xi → xi+1 →•マルコフ連鎖モンテカルロ（動的モンテカルロ法）•手順：乱数をふるが、一つ手前の情報を用いて、次の状態を得る方法

MCMCの条件• どんな初期分布P から初期状態x を選ん
00

でも、t→ でPt(x)は定常分布P(x)に収
束する。

詳細釣合

• 先の条件を満たす条件• 遷移確率R(x|y): 状態yからxを生成
R(x|y)f(y) = R(y|x)f(x)R(x|y)f(y)：事前確率メトロポリス法
同じ確率ならT(x|y)=1/4xxx1 → x2 →..... → xi → xi+1 →

x
x

• 手順
• 候補を選ぶ（y→x) Trial: T(x|y) dxT (x | y) = 1∫• 受理するかどうかを決める
y

受理の確率(Acceptance Prob.): A(x|y)
遷移確率：R(x|y)=A(x|y)T(x|y)
A(x|y)T(x|y)f(y)=A(y|x)T(x|y)f(x)A(x|y)=T(x|y)f(y)=A(y|x)T(x|y)f(x)T (y | x) f (x)A(x | y) =A(y | x)T (x | y) f (y)A(x|y)=r(x|y)A(y|x)
A(x|y)=1 => A(y|x)<1、r(x|y)>1
A(y|x)=1 => A(x|y)<1, r(x|y)<1
この場合A(x|y)=r(x|y)
Acceptance Probability:A(x|y)=min[1,r(x|y)]r(x|y)>1の時は、必ず受理。r(x|y)<1なら、乱数をふって、r(x|y)>randなら受理、
r(x|y)<randなら不採用。

レプリカ交換法の受理確率
今、M個のパラメータで、M個のレプリカがあるとする。全体の分配関数は、
!

Z =Π

M
m=1

確率分布関数はf (X; β ) = ΠM
m=1Z(β m )exp(− β m H (X m ))Z(β m )

詳細釣合の式を思い出す。
R(x|y)f(y) = R(y|x)f(x)T (y | x) f (x)r(x | y) =T (x | y) f (y)β = 1 / kBT

隣り合うパラメータ間の交換は、T(x|y)=T(x|y)

今、H(p,q)=K(p)+U(q), ただしpとK(p)はMDの時
ここではMCの時を仮定。H(x)=U(x)とする。
f (x) exp(− β n H (yn ))exp(− β m H (xm ))=f (y) exp(− β m H (ym ))exp(− β n H (xn ))= exp(− β n (H (yn ) − H (xn )) − β m (H (xm ) − H (ym ))) 尚、MDの時は温度ス
ケーリングを考慮す= exp(− β n (U(y) − U(x)) + β m (U(y) − U(x)))
ること。
= exp[−(β n − β m )(U(y) − U(x))]= exp[−Δ],Δ = (β n − β m )(U(y) − U(x))

A(y|x)=min[1,exp(-Δ)]

例：タンパク質の構造予測
通常のMDでは構造探索あまりできない
通常の分子動力学法（MD）

P(E) 30℃

E
エネルギー空間、局所最小値に捕まる
正しい構造が見つからない!18

通常のMDでも高温だといろいろな構
造をサンプルできる。しかし
P(E)

70℃

E
エネルギー空間、局所最小値に捕まらないが知りたい温度の構造が得られない!19

レプリカ交換分子動力学法(REMD)
温度上のランダムウォーク
レプリカ交換法P(E)40℃ 60℃
30℃ 50℃ 70℃

5パラメタ 1 2 3 4 5
5レプリカあるステップ毎にメ
トロポリスクライテ
リアに従って、隣り合う温度を交換

それぞれ異なる温度をもつ
複数のレプリカを用意しMD計算

エネルギー空間、構造空間を幅広くサンプリングできる
統計処理を行い知りたい温度での構造決定!20E

バリアを乗越える事ができる
温度の異なるMDを行い、ピコ秒毎に温度を交換

@100℃
@90℃
@80℃
@70℃
@60℃
@50℃
@40℃
@30℃

!21

多次元レプリカ交換法(MREM)
温度•

温度だけでなく、距離や角度、二面角、その他のパラメー
タ交換にも拡張可能。
たとえばReplica-exchange umbrella sampling(REUS)[2]•

それらを組み合わせて多次元レプリカ交換
Multi-dimensional REMD (MREM) [2]•

ただし、レプリカ数が増える

距離
角度

距離

replica[2] Y. Sugita, A. Kitao and Y. Okamoto, J.
Chem. Phys. 113, 6042-6051 (2000)

京コンピュータの沢山のノードを利用した計算が実現できる。

温度

レプリカ交換法を用いたアプリケーション例

Villin HP36のフォールディング
REMDとMulticanonicalを組み合せた方法
Yoda, T., Sugitate, Y. & Okamoto, Y., Hydrophobic core formation and dehydration in protein
folding studied by generalized-ensemble simulations. Biophysical Journal, 99(5), pp.
1637–1644. (2010)hydrophobic coreの形成の際に水が抜ける

依田先生（長浜バイオ大）膜タンパク質の二量体構造予測

アミロイド前駆体タンパク質の二量体構造予測
インターフェースの変化がAβペプチド生成に影響
Naoyuki Miyashita, John E Straub, D Thirumalai, and Yuji Sugita,
Transmembrane structures of amyloid precursor protein dimer predicted byreplica-exchange molecular dynamics simulations. Journal of the American
Chemical Society, 131(10), pp.3438–3439 (2009)

20 ns

30 ns

REINの応用例

糖鎖分子の構造予測
Suyong Re, Naoyuki Miyashita, Yoshiki Yamaguchi, Yuji Sugita, Structural Diversity and Changes in
Conformational Equilibria of Biantennary Complex-Type N-Glycans in Water Revealed by Replica-Exchange
Molecular Dynamics Simulation, !

李博士(理研)Biophys. J. 101, Pages L44–L46 (2011)

REINでのREMD計算で糖鎖（N-glycan）の構造予測を行った。分子に付いた糖鎖の揺らぎは分子間の認識に重要である。実験の予想どおり
bisecting GlcNAcは揺らぎにおおきな影響を及ぼしている事がわかった。

ゆらぐ

抑制

bisect無し

bisectありカポジウィルス由来タンパク質の免疫システムへの攻撃実験との共同研究
Mizuho Kajikawa, Pai-Chi Li, Eiji Goto, Naoyuki Miyashita, Masami Aoki-Kawasumi, Mari Mito-Yoshida,
Mika Ikegaya, Yuji Sugitate, and Satoshi Ishido,
The intertransmembrane region of Kaposi's sarcoma-associated herpesvirus modulator of immune
recognition 2 contributes to B7-2 downregulation. Journal of Virology, 86(9), pp.5288–5296 (2012)

梶川博士(昭和薬大)Pai-chi Lee博士（理研）

タンパク質リガンド結合

最近の論文

リガンドータンパク間距離と、溶媒温度の2次元レプリカ交換分子動力学
シミュレーション
Two-Dimensional Replica-Exchange Method for Predicting Protein–Ligand Binding Structures!
Hironori Kokubo, Toshimasa Tanaka, and Yuko Okamoto, !

小久保博士（Takeda Pharmo.）

Journal of Computational Chemistry 2013, 34, 2601-2614 (2013)!

Pyrimidine-2-amine

1T4EとBenzodiazephineの結合

REIN-Kとは

よく使われる MD パッケージ
MDパッケージ

Hybrid

Speed

REMD

MREM
○

on K

CHARMM

[1]

Slow

○

AMBER

[2]

Medium/Fast

○

NAMD

[3]

○

Fast

○

○

△*

GROMACS

[4]

○

Fast

○

○

△

DESMOND

[5]

○

Fast

○

TINKER[6]

MARBLE

[7]

Slow
○

Fast

○ (Native)[1] B. R. BROOKS et al., J Comput. Chem 30: 1545‒1614, 2009[2] D. A. Pearlman et al., Comput. Phys. Comm. 91, 1-41, 1995
[3] J. C. Phillips et al., J. Comput. Chem. 26:1781-1802, 2005
[4] H.J.C. Berendsen et al., Comput. Phys. Comm. 91:43-56, 1995
[5] K. J. Bowers et al., In SC ʼ06: Proceedings of the 2006 ACM/IEEE
conference on Supercomputing, New York, NY,USA, 2006. ACM Press.

• REMD/MREMの使い勝手が悪い!
• Kに未対応* NAMD flat MPI版を京コンピュータにインス[6] J. W. Ponder and F. M. Richards, J. Comput. Chem., 8, 1016-1024,

トールした。hybrid(MPI/pthread)版はAICS佐藤1987.

チーム （神戸大）鎌田准教授と共同でインス[7] M. Ikeguchi, J Comput Chem 25: 529‒541, 2004

トールした。
!30

REIN以外のレプリカ交換法のインターフェースプログラム
Interface Software

Control

MD program

異なるMDパッケージでも、同じルール（似たインプット）でレプリカ交換計算ができる。
パッケージ

MD

言語

MDの制御

MDの修正

MREM

K対応

aarex.pl in MMTSB
toolsets [1]

CHARMM!
AMBER!
NAMD

Perl/
TCP socket

binary run (fork, exec function)

no

○

×

Necessary○×

PLUMED [2]GROMACS!
NAMD!
DLPOLY!
AMBER!
python/ (patch:
Plugin style!
ACEMD!
depend on(It needs recompile with patch)
LAMMPS!
each MD)QUANTUMESPRESSO!
CPMD[1] M. Feig et al., Journal of Molecular Graphics andModelling 22 (2004) 377‒395[2] M. Bonomi, D. Branduardi, G. Bussi, C. Camilloni, D.
Provasi, P. Raiteri, D. Donadio, F. Marinelli, F. Pietrucci, R.A.
Broglia and M. Parrinello, PLUMED: a portable plugin for
free energy calculations with molecular dynamics, Comp.
Phys. Comm. 180, 1961 (2009), Available also on arXiv:
0902.0874•

Advantage : 柔軟性が高い→ それぞれのMD packageの機能が使える→ REMD/MREMのインプットが簡単→ 拡張が簡単!

•!31

Kでは動かない

レプリカ交換インターフェースプログラム(REIN)
MD部分の修正 バイナリ形式の外部プログラム（既存のMDプログラムなど）を用いる（i/oのみ参照）
不要
PCクラスタでも京コンピュータでも動く（Laptopでも）高速な並列化

並列化はMPI/OpenMP

簡単実行

基本的なREMDの実行が簡単にできる（サポーティングソフトウエア）

詳細設定

交換の仕方などの細かい設定もできる。

モジュール化

テンプレートモジュールとして他の外部MDプログラムの追加、機能追加ができる。

インプットやバッチファイルの設定を自動で行なうサポーティングソフトウェアでは、テンプレートを利用。

Replica-exchange Interface Program (REIN)
多次元レプリカ交換シミュレーションができる
Control

REIN

MD program
MDのコード

パッケージ

MD

言語

MDの制御

REIN version
1.0.4

NAMD
MARBLEFORTRAN95,
03/MPI/
OpenMPbinary run[mpi_comm_spawn orsystem function ]

修正

MREM

K対応

○

○

no

MARBLE: Optimized on K.!
NAMD: Currently flat MPI version are available on K.

REIN:
MachineCompiler

K computer (sparc), FX10 (sparc),!PC cluster (x86_64), RICC(富士通のスパコン)
Fortran (Intel, fujitsu, (gfortran))

MPI-2 (Open MPI, Fujitsu MPI)/MPI-

多次元レプリカ交換（MREM）：
REMD
軸

REUS

温度

距離

角度

二面角

Atom

Group

Atom

Group

Atom

Group

NAMD

○

○

○

○

○

○

○

MARBLE

○

○

○

○

×

○

×

REIN-Kのしくみ

REINパッケージの構成

•

rein
!

•

supporting software
input̲builder
batch̲builder
remd̲convert

REINは既存のバイナリの外部プログラム(MD)を子プログラムとして複数同時に起動する
２つの仕組みspawn

no spawn

利用技術

MPI̲COMM̲SPAWNSYSTEM関数

対象コンピュータ

超並列コンピュータ
K, FX10, PCクラスタ

PCやPCクラスタ、小規模並列コン
ピュータ、GPGPU等も含む

制約

MPI-2(動的プロセス)対応, NFS(共有ディスク)対応, 子プログラムは
MPIでコンパイルされている事。

MDはノード内並列のみ対応
MPIを使わない特徴

１ノード分、MD制御プロセスとしMD制御プロセスは各々のレプリカて使用する。レプリカ数 x MDの並の使用するノード上で起動する。
列数 + 1ノード使用する。

計算速度

新しい機能なのでシステムのmpi̲comm̲spawnの対応/整備状
況に依存。大規模系で大規模計算向き。

速い

MPI̲COMM̲SPAWN•

動的プロセス生成•
MPIのプロセスからMPIを実行する•
MPI-2に対応していればどの計算機でも動く•
スケジューラが制限をかけている場合がある•
Master processが必要•
Child Jobはnodeをまたぐ事ができる

制限の無いPCクラスタ

Master
Process

1
1

1

2
2

2

5

1

4

5

2

2

3

5

6

2

3

3

5

6

4

6

6

5

１つのノード内に2つ以上のJobは入らない

5

4

4

2

1

5

5

3

2

6

3

3

2

6

6

Master process: 1 coreChild Job: 12 core x 2 Job生成

京コンピュータ, FX10

6

5

6

4

1

4

3

１

1

京コンピュータ, FX10
44nodeのMPI/OpenMP化

Master process: 1 coreChild Job: 3 core x 6 Job生成
3

4

京コンピュータ, FX10でMaster

例：4 core x 8 nodeのシステム

3

1

Child Jobはノードをまたぐ事ができる

1

1

2

2

2

2

1

1

2

2

2

2

1

1

1

1

2

2

1

1

1

1

2

2

system 関数を用いたレプリカの制御
!
•

•
•

•

•

MPIのプロセスからSystem関数を実行
大抵のPCクラスタで動く
しばしばスケジューラが制限をかけている場合がある
Master processは必要ないが、Child Jobの実行プロセスの１
coreが制御にも使われる。
現状ではMPIプロセスを生成できない（nodeをまたぐ事ができない）
例：4 core x 8 nodeのシステム

Child Jog: 2 core x 6 Job生成
1

1

3

3

2

2

4

4

5

5

6

6

Child Jog: 3 core x 6 Job生成

Child Jog: 4 core x 6 Job生成

３つのサポーティングソフトウェア

名称

機能

理由

input̲builder

REINのインプットを自動生成する

柔軟性の為、数多くのインプ
ットファイルが必要であるがそれらを一括で自動生成する

batch̲builder

バッチキュー用のスクリプ
ト生成と、REINのインプ
ットの修正を自動で行なう

レプリカ数やノード数、スレ
ッド数、ステージングの設定などの設定は非常に複雑な為

レプリカ毎やパラメータ毎
remd̲convertにトラジェクトリーファイ
ルを収集する

レプリカが多くなると、デー
タ収集が非常に複雑になる為サポーティングプログラムのしくみ
input_builder← ib.inp$ input_builder -h ctrl

インプットのテンプレート$ input_builder -h ctrl all 全てのオプションが表示される$ input_builder ib.inp

実行

テンプレートファイルを読んで、reinのインプットを作成• namdやmarble, rein.inpのテンプレートが入っている• 必要に応じてテンプレートを直す• 追加も同じ形式（形式）で作成できる

基本的には３ステップで実行
1) Input_builder ! rein.inp

reinのインプットを自動作成!

#input_builder ib.inp
2) Batch_builder ! rein.sh

ステージングなどの煩雑なバッチスクリプトを自動生成!
#batch_builder bb.inp
3) あとはバッチスクリプトを投入するだけ。!
# pjsub rein.sh

Restart !
#batch_builder bb.inp restart（restartと付けるだけで自動生成）

remd_converter ! トラジェクトリをまとめる!
#remd_converter rc.inp!41

インストールREINパッケージの構成
2014/02/26時点でversion 1.0.4です。
REIN---- README.md: README file!
|-- AUTHORS.md: authors file!
|-- note.md: release notes!
|-- update.md: update!
|-- COPYING: GPL licence file!
|-- src/: main code of REIN!
|-- tools/: supporting software for REIN!
|-- examples/: For tutorial!
`-- manual/manual.pdf : manual!

情報：
質問など：

@rein_devel http://twitter.com/rein_devel!
yukimya+rein@gmail.com

REINのコンパイル１
京コンピュータ、FX10$ cd src$ ./conﬁgure.sh sparc k
京用のNAMDのバイナリは提供しますのでご連絡下さい。

PCクラスタなど(no spawn版)$ cd src$ ./conﬁgure.sh x86̲64 gfortran nospawn
NAMDのhomepageからDLしたバイナリがそのまま使えます。

PCクラスタなど(spawn版)$ cd src$ ./conﬁgure.sh x86̲64 ifort
NAMDをMPI用にコンパイルして下さい。

REINのコンパイル２
インストール$ make$ make installsrc/と同じ場所にあるbin/にreinという実行ファイルが格納されます

clean$ make clean
objectファイルなどが消去されます。

distclean$ make distclean
objectファイルだけでなくbin/に入っているreinも消去されます。

サポーティングソフトウェアのコンパイル
京コンピュータ、FX10$ cd tools$ ./conﬁgure x86̲64 gfortran京, fx10のフロントエンドはx86̲64マシンなのでPCクラスタなど(no spawn版)$ cd src$ ./conﬁgure x86̲64 ifort
ifortも使えます。gfortranも可。

インストール$ make$ make installbin/にinput̲builder, batch̲builder, remd̲converter, templates/
がインストールされます。clean, distcleanはreinと同じ。

実行の為の準備

REIN実行前の準備１

事前に、通常の分子動力学シミュレーションを行う
時と全く同じ準備をする。

1. NAMD: VMDなどでpdbファイルからpsfファイルを作成。（REINの初期設定の力場はC27+CMAP）
MARBLE: molxでmdatとcrdファイルを作成。
2. MDプログラムを用いてMinimizationする。
3. MDプログラムを用いて平衡化計算を行う。

REIN実行前の準備２
REMD/MREMシミュレーションのプログラムとイ
ンプットの準備をします。
ここではrun/というディレクトリ内でシミュレーションを行うとする。
ここでは、最も単純な方法を述べる。

1. rein/bin/にある全てのソフトウェアとtemplates/をrun/にコピーする。
2. 平衡化で得られた計算結果(coord, vel, xsc, xst)とinputのpdb, psfを、initial.XXX (XXXはそれぞれの拡張子)という名前に変えてrun/へコピーする。
3. parameterファイルもrun/へコピーする

REIN実行前の準備３
input̲builderを使ってreinのinputファイルと実行用バッチファイルを作成する。
1. $ cd run/
2. $ ./input̲builder -h ctrl > ib.inp
3. $ vi ib.inp
レプリカの情報とPMEメッシュの修
正
その他はbatch̲builderでも修正可能
4. $ ./input̲builder ib.inp > ib.out
5. rep.1/, rep.2/, .....というディレクトリと、ﬁle̲*.dというファイルが生成。rein.inpのひな形が生成。

例: Input ﬁle of Input builder
REINのインプットは複雑な計算にも対応している。
簡単にREINのインプットを自動生成する。
温度 - 距離
2D-REMD# control parameters in input_builder
rein_input
spawn

=

= rein.inp
yes[REMD]# rein input file nameaxis001= temperature# axis (TEMPERATURE/HARMONIC)

num_replicas001= 4# # of replicas for the axis

range001= 300.0 360.0# lowest, highest value

division001= exp# (EQUIV/EXP/CYCLE)

axis002= harmonic

num_replicas002= 4

range002= 2.0 8.0

division002= equiv

distance002= ADP CR 1-1 ADP CL 1-1

spring_const002

= 2.0

!

!

ex)

１次元目：この場合、温度

REIN/NAMD, NVT

２次元目：この場合、原子間距離

MD steps: 1000 steps (2ps)
Exchange: 100 exchanges

等間隔

Number of Replicas:
Temperature : 4 replicas
Distance: 4 replicas
Total: 4 x 4 = 16 replicas[MD]
md_program= namd# md program (NAMD/MARBLE)

md_exe_file= ./namd2# md exe filemd_temperature= 300.0# md temperature

md_steps= 1000# md steps / exchangesystem_size_x= 23.4# system size --automatically create pme grids

system_size_y= 23.2#system_size_z= 23.9#!

Alanine Dipeptide

システムサイズを入れると自動的にPMEのメッシュの数を計算する!51

Range of Temperature: 300-360K
Range of Distance: 2.0-8.0Å$ input̲builder ib.inp
実演REINのインプット：サポーティングソフトウェアで自動生成!
sample/ ------ rein.inp|!
|--- file_rank.d(For REIN)

レプリカとパラメータの対応表!

|--- file_value.d(For REIN)

パラメータの具体的な値!

|--- file_on.d(For REIN)計算に用いるレプリカ（input_builderのoutputをそのまま使って下さい）!

|--- file_axis_ex.d(For REIN)!

(For REIN)

軸の順序（同上）!

|--- file_coef.d(For REIN)

インプットに対する温度比!

|--- file_ex.d(For REIN)

交換ルール!

|!
|--- initial.pdb(NAMD)

テンプレート構造!

|--- initial.psf(NAMD)

トポロジーファイル!
パラメータファイル!

|--- par_all27_prot_lipid.prm (NAMD)|--- initial.inp(NAMD modified)

namdインプットファイル。パラメータにタグを付けている。!

|--- initial.colvar [for REUS] (NAMD modified)

namdインプットファイル。束縛情報。同上!

|!
|--- rep.1/ ----- rep.1.0.coor (NAMD)

初期構造!

|

|--- rep.1.0.vel (NAMD)

初期速度!

|

`--- rep.1.0.xsc (NAMD)

初期環境（体積、圧力）!

|--- rep.2/ ----- rep.2.0.coor (NAMD)!
||--- rep.2.0.vel (NAMD)!
|`--- rep.2.0.xsc (NAMD)!
|--- rep.3/ ----- rep.3.0.coor (NAMD)!
||--- rep.3.0.vel (NAMD)!
|`--- rep.3.0.xsc (NAMD)!
`--- rep.4/ ----- rep.4.0.coor (NAMD)!
|--- rep.4.0.vel (NAMD)!
`--- rep.4.0.xsc (NAMD)

自動生成して、必要な部分を修正すると良いREIN実行前の準備４

batch̲builderを使って計算機環境に合わせたreinのinputの書き換え、と実行用バッチファイルを作成する。
1. $ ./batch̲builder -h ctrl > bb.inp
2. $ vi bb.inp MPIやthreadに関する情報を記載する。
スケジューラに関する情報を記載する。
3. $ ./batch̲builder bb.inp > bb.out
4. rein.inpが完成し、rein.shが生成

例: input ﬁle of Batch builder
レプリカの数だけ、ファイル転送する必要があるが、その際のステージングやFTLなど面倒な記述を自動で作成する。
REIN: 16 core (2 node)
MD: 4 node x 16 replica = 64 node(512 core)# control parameters in batch_builder!

rein_input= rein.inp

spawn

= yes

chain_job= no# REIN input file name

Total node: 66 nodeThread: 8 (hybrid MPI)

[BATCH]
batchfile_name= rein.sh# batch filename

job_scheduler= K# job scheduler type ([K]/GE/RICC)

queue_name= small

num_mpiproc_rein= 2# number of process for rein

num_threads_md= 8# number of threads in md

num_mpiproc_md= 4# # of mpi process for md

cpu_time= 01:00:00# cpu time

num_core_cpu= 8# number of core in cpu, for k = 8, for fx10 = 16, ...

replica_exchange= yes# ([YES]/NO): replica exchange / umbrella sampling

num_of_exchange_steps= 100# number of exchange steps!

!

# queue name, k:([SMALL]/LARGE),fx10: REGULAR..

[REMD]!

Exchange steps :100 exchanges

現在、K (fx10) , RICC, SGE タ
イプのスケジューラに対応.
新規スケジューラもテンプレートの追加で対応できる.
!
$ batch̲builder bb.inp$ batch̲builder bb.inp restart!54

REINの実行

REIN実行
1. $ pjsub rein.sh
2. $ ./batch̲builder bb.inp restart > bb.out2
REIN終了後、run/内に結果データの入ったSTGOUT̲DIR/が作成される。
batch̲builderでrestartをかけると全ての結果ファイルがresults/の中に格納される。
以上を繰返す。

実行後：トラジェクトリーをreplica単位かパラメー
タ単位にまとめ直す
1. $ ./remd̲convert -h ctrl > rc.inp
2. $ vi rc.inp
ファイルのあるディレクトリを指定
3. $ ./remd̲convert rc.inp > rc.out

例: input ﬁle of remd̲convert
解析の前に、結果のトラジェクトリをレプリカ毎かパラメータ毎にまとめると便利# control parameters in remd_convert!
[INPUT]!

REINを3回リスタートした場
合の例

psffilereffiletrj_format= initial.psf= initial.pdb= DCD

directory001
directory002
directory003= ./results/result0000001_0000010= ./results/result0000011_0000020= ./results/result0000021_0000030

repeat001
trj_filename001
energy_trj001= 3= rep.{rep_no}/rep.{rep_no}.{step}.dcd= replica.trj!
!

!
energy_column!
[OUTPUT]!

=# (DCD/MARBLE/PDB)

レプリカでまとめている。

# column of output energy, ex. = 1 2-4, empty: all column

out_pdbfile
trj_filename
trj_format= out.pdb= out.{type}.{number}.{extension}= DCD# (DCD/MARBLE/AMBER/TINKER/PDB/GROMACS)

type
rank

= REPLICA=!
[CONVERT]!

!
[SELECTION]!

# select_atom# select_atom# mole_name001# mole_name002# (REPLICA/CONDITION)# ex. = 1 2-8, empty: output all rank

= all= molname:protein | molname:lipid= protein P1:1:TYR P1:5:MET= lipid
OLEO:PCGL:OLEO!57$ remd̲convert rc.inp

REIN連続投入
京、FX10の場合：tools/auto̲submitter/auto̲submitter.plを用いる。

••$ vi auto̲submitter.pl$ perl auto̲submitter.pl

PCクラスタの場合、２通り••

auto̲submitter.plの利用
chain̲job = yes (bb.inp)とすると
rein.shの最後に１行加わる。

...
${MPIEXEC} ${EXEC}!

./batch_builder bb.inp restart...
${MPIEXEC} ${EXEC}./batch_builder bb.inp restart${MPIEXEC} ${EXEC}./batch_builder bb.inp restartOutput format (replicat.trj)#========= EXCHANGE_STEP = 1!
1
1
290.14150
22309.04970
3
3314.56290
44313.8316055304.91160
6
6309.8476077299.44280
88288.62440#========= EXCHANGE_STEP = 2!
12
306.76840
21
317.18100
34310.83750
43
284.34980
56294.21380
6
5336.6426078296.55280
87299.56080-1624.33470-1677.37840-1658.91060-1657.91540-1642.47860-1635.80170-1685.76920-1683.47140

370.15570
394.27840
401.31190
400.37900
388.99900
395.29630
382.02210
368.22020-1994.49040!
-2071.65680!
-2060.22250!
-2058.29450!
-2031.47760!
-2031.09800!
-2067.79130!
-2051.69170!

-1664.28540-1651.98420-1629.92330-1655.03960-1680.86470-1606.88210-1698.13390-1662.84080

391.36800
404.65210
396.55920
362.76680
375.35110
429.48070
378.33510
382.17260-2055.65340!
-2056.63630!
-2026.48240!
-2017.80640!
-2056.21580!
-2036.36280!
-2076.46900!
-2045.01340

Replica#, condition#, Temperature, ( Distance etc.. ), Potential, Kinetic,Total, Extra#========= EXCHANGE̲STEP = 1111322.72880
28333.08190
3
6355.33950
4
5321.22060
52351.72040
6
9371.11030
7
7284.53280
8
4276.94870
93
334.14340#========= EXCHANGE̲STEP = 126.61182
7.132126.55514
6.67915
6.10475
7.01426
7.15645-1643.34560-1575.02380-1523.72050-1597.99230-1554.42320-1485.12630-1680.79330

411.72990
424.93810
453.33390
409.80570
448.71660
473.45380
363.00030-2055.07550-1999.96190-1977.05440-2007.79800-2003.13980-1958.58020-2043.79360

6.52260
7.480200.09900
0.05150
4.81970
7.943107.386406.584866.26521-1677.11400-1528.19240

353.32460
426.29240-2030.43860-1954.48480

0.086205.33080!59

remd_convertで得られたOutputのformat (out.xxx.#.enetrj)
1
2
3
4
5
6
7
8
9
10

1
1
1
1
1
1
1
1
1
1

1
2
3
4
4
3
3
4
4
4

297.75270
317.02580
310.59180
315.72080
319.46520
321.01360
300.87790
298.17360
299.28800
295.37950-1671.67350-1639.88920-1617.55910-1601.63910-1626.64460-1633.93310-1678.91540-1661.42740-1656.02570-1657.20690

379.86590
404.45410
396.24580
402.78920
407.56620
409.54160
383.85290
380.40290
381.82470
376.83830-2051.53940-2044.34340-2013.80490-2004.42820-2034.21090-2043.47480-2062.76830-2041.83030-2037.85040-2034.04520#, Replica#, condition#, Temperature, ( Distance etc.. ), Potential, Kinetic,Total, Extra

1
2
3
4
5
6
7
8
9
10

1
1
1
1
1
1
1
1
1
1

1
1
1
1
1
2
2
2
2
1

286.98240
312.47330
289.37010
296.36820
289.88810
314.75100
330.75970
332.70610
330.66870
308.05460

6.37033
6.44694
6.00928
6.238496.28432
6.02690
6.421436.61133
5.60459
6.21432-1717.17430-1653.73810-1643.07150-1679.83210-1653.50920-1618.84470-1606.04790-1573.92340-1552.42150-1668.87810!60

366.12540
398.64610
369.17160
378.09960
369.83240
401.55200
421.97540
424.45860
421.85930
393.00890-2083.29970-2052.38420-2012.24300-2057.93170-2023.34170-2020.39670-2028.02330-1998.38200-1974.28080-2061.88700

5.67950
5.94070
4.52790
5.24390
5.39340
4.581105.853106.52090
3.39190
5.16590

まとめレプリカ交換インターフェースプログラム
Replica-exchange interface program for K
REIN-K
京コンピュータで大規模な多次元レプリカ交換シミュレーシ

プログラム開ョンを実施する事を想定したプログラム
発の目的
様々なMDプログラムを利用したレプリカ交換をサポート
ファンド

次世代計算科学研究開発プログラム 次世代生命体統合シミュレーション研究開発プロジェクト(ISLIM)にて作成

その他ファン
理化学研究所生命システム研究センター(QBiC)
ド
SCLS（HPCI戦略プログラム 戦略分野1）
講習会
RIKEN情報基盤センター
ダウンロードバイオグリッドセンター関西、バイオスーパーコンピューティ
サイトなど
ング研究会

REINの情報
Main developer

Naoyuki Miyashita

AuthorNaoyuki Miyashita and Yuji Sugita

ライセンス

ライセンス：GPL version 3

引用

Naoyuki Miyashita, Yuji Sugita, M-2: Replica-exchangeinterface program (REIN), http://www.islim.org/islimdl̲e.html

サポート

理研QBiC 宮下

e-mailyukimya+rein@gmail.com

Twitter@rein̲devel http://twitter.com/
rein̲devel

謝辞

•
•
•
•
•
•
•
•

杉田有治 主任研究員, 理研, 理研QBiC, 理研AICS!
池口満徳 准教授, 横浜市大!
李秀栄 研究員, 理研!
二島渉 協力研究員, 理研, Pai-chi Li 協力研究員, 理研!
高瀬規男, 磯子ソフト!
HPCIヘルプデスク!
松田元彦 研究員, 理研AICS, 丸山直也 チームリーダー, 理研AICS!
本研究開発は以下の支援を受けて行われたものである。 !

•
•
•
•
•

文部科学省 最先端・高性能汎用スーパーコンピューターの開発利用「次世代生命体統合シミュレーションソフトウェアの研究開発」(RIKEN SCRP
ISLiM)!
理研 生命システム研究センター!
理研

計算科学研究機構

JSPS科研費
理研

京コンピュータ!

若手研究（B） Number 24700299.!

計算機センター RIKEN Integrated Cluster of Clusters (RICC)!64

実習手順書各自のPCにダウンロード
http://www.islim.org/islim-dl̲j.html

クリック

選択
クリック

選択

名前
所属
部門名

your@e-mailyour@e-mailrein-v.1.0.4.tarをscls fx10へコピー$ scp rein-v.1.0.4.tar.gz hoge@hpci-scls.riken.jp:.
rein-v.1.0.4.tarを展開$ tar -zxvf rein-v.1.0.4.tar.gz$ cd rein-v.1.0.4[miya@scls rein-v.1.0.4]$ ls
AUTHORS.md COPYING README_v.1.0.4.md[miya@scls rein-v.1.0.4]$

examplesmanualnotes_v1.0.4.md

reinのコンパイル$ cd src[miya@scls src]$ ls
Makefile Makefile.lib[miya@scls src]$

archconfigure.shliblibmarble

libnamd

main

src

tools

update_v.1.0.4.md

reinのコンパイル続き$ sh conﬁgure.sh sparc k.openmp[miya@scls src]$ ls
Makefile Makefile.comp[miya@scls src]$!

Makefile.lib

Makefile.machinearchconfigure.shliblibmarble

libnamdmain!

$ make[miya@scls src]$ ls
Makefile
Makefile.lib
Makefile.comp Makefile.machine[miya@scls src]$!

archconfigure.shliblibmarble

libnamdmain

rein_k_openmp!

$ make install$ cd ..
[miya@scls rein-v.1.0.4]$ ls
AUTHORS.md COPYING README_v.1.0.4.md[miya@scls rein-v.1.0.4]$!

$ ls bin[miya@scls rein-v.1.0.4]$ ls bin
rein[miya@scls rein-v.1.0.4]$

bin

examplesmanualnotes_v1.0.4.md

src

tools

update_v.1.0.4.md

サポーティングソフトウエアのコンパイル$ cd tools[miya@scls tools]$ ls
Makefile arch auto_submitter[miya@scls tools]$!

batch_builder

configure.sh

input_builder

lib

remd_converter!

$ sh conﬁgure.sh x86̲64 gfortran[miya@scls tools]$ sh configure.sh x86_64 gfortran[miya@scls tools]$ ls
Makefile Makefile.machine arch auto_submitter batch_builder[miya@scls tools]$!

configure.sh

input_builder!

$ make$ make install$ cd ..
$ ls bin[miya@scls rein-v.1.0.4]$ ls binbatch_builder input_builder rein[miya@scls rein-v.1.0.4]$

remd_convert

templates

全てrein-v.1.0.4/binに格納される

lib

remd_converter

templatesには様々な設定のテンプレートが入っている[miya@scls rein-v.1.0.4]$ ls bin/templates/
t_archive.sht_batch_ricctar
t_namd.inp
t_batch_fx10
t_marble.inp
t_namd_colvar_ang
t_batch_ge
t_marble_atom_ht_namd_colvar_dih
t_batch_kt_marble_copyfiles t_namd_colvar_dis
t_batch_nostfx10 t_marble_groupt_namd_copyfiles
t_batch_ricc
t_marble_group_ht_namd_harmonict_batch_ricc_upc t_namd.colvar
t_rein.inp[miya@scls rein-v.1.0.4]$

t_rein_axis.inp
t_reininp_modify
t_restart_ge
t_restart_kt_restart_nostfx10
t_restart_num
t_restart_ricc

t_restart_ricc_upc
t_restart_ricctar
t_staging_k_marble
t_staging_k_namd
t_staging_ricc_namd
t_staging_ricctar_namdt̲batch : バッチキューのテンプレート• t̲marble, t̲namdなど : それぞれのMDのインプットのテンプレート• t̲rein : reinの基本設定• t̲restart : リスタート時の動作ルール• t̲staging : スパコンなどで、ファイル転送がある場合•の転送ルールを記載

例題を試すexamplesにalanine dipeptideの例が格納されている
remd: 温度レプリカ交換
reus: end-to-end距離のレプリカ交換
mrem: 温度とend-to-end距離の二次元のレプリカ交換

シミュレーションの準備$ cd examples/remd/namd!

[miya@scls namd]$ ls
bb.inpbb.inp.ricctar
bb.inp.nostfx10 ib.inp[miya@scls namd]$

ib.inp.nostfx10
ib.inp.ricc

initial.coor
initial.pdb

initial.psf
initial.vel

initial.xsc
par_all27_prot_lipid.prm

rein

!

ツールを全てコピーする!
$ cp -r ../../../bin/* .
#必要なプログラムをコピー$ cp /home/miya/bin/namd2 . # namd2をコピー[miya@scls namd]$ ls
batch_builder
bb.inp.ricctar
bb.inpib.inpbb.inp.nostfx10 ib.inp.nostfx10[miya@scls namd]$

ib.inp.ricc
initial.coor
initial.pdb

initial.psf
initial.vel
initial.xsc

input_builder
namd2
par_all27_prot_lipid.prm

rein
remd_convert
templates

Input builderによるreinのインプット作成$ ./input̲builder ib.inp.nostfx10[miya@scls namd]$ ls
batch_builder
file_coef.dbb.inpfile_ex.dbb.inp.nostfx10 file_on.dbb.inp.ricctar
file_rank.d
file_axis_ex.d
file_value.d

ib.inpib.inp.nostfx10
ib.inp.ricc
initial.coor
initial.inp

initial.pdb
initial.psf
initial.vel
initial.xsc
input_builder

namd2
par_all27_prot_lipid.prm
rein
rein.inp
remd_convert

rep.1
rep.2
rep.3
rep.4
rep.5

rep.6
rep.7
rep.8
templates

それぞれのレプリカのディレクトリ(rep.#)とreinのインプットファイル(ﬁle̲xx.d, rein.inp)、MDのテンプレート(initial.inp)が自動生成される。

batch builderによるreinのインプット作成$ ./batch̲builder bb.inp.nostfx10[miya@scls namd]$ ls
batch_builder
file_coef.dbb.inpfile_ex.dbb.inp.nostfx10 file_on.dbb.inp.ricctar
file_rank.d
file_axis_ex.d
file_value.d[miya@scls namd]$

ib.inpib.inp.nostfx10
ib.inp.ricc
initial.coor
initial.inp

initial.pdb
initial.psf
initial.vel
initial.xsc
input_builder

namd2
par_all27_prot_lipid.prm
rein
rein.inp
rein.shremd_convert
rep.1
rep.2
rep.3
rep.4

rep.5
rep.6
rep.7
rep.8
templatesreinの実行$ pjsub rein.shjobの状態チェック$ pjstat[miya@scls namd]$ pjstat!

ACCEPT QUEUED
0
0
s
0
0

!

JOB_ID
14306

!

STGIN
0
0

!

JOB_NAME
rmd2!

READY RUNING RUNOUT STGOUT
0
1
0
0
0
1
0
0
MD ST USERNM RUN miya

START_DATE
02/25 15:45:52

HOLD
0
0

ERROR
0
0

TOTAL
1
1

ELAPSE_LIM NODE_REQUIRE
0000:20:00 10$ pjstat -A
jobの出力状態チェック$ pjcat -o #jobnumber$ pjstat -e #jobnumber

[miya@scls namd]$ pjstat!

ACCEPT QUEUED
0
0
s
0
0

!

STGIN
0
0

READY RUNING RUNOUT STGOUT
0
0
0
0
0
0
0
0

[miya@scls namd]$ ls
batch_builder
file_ex.dbb.inpfile_on.dbb.inp.nostfx10 file_out_coef.dbb.inp.ricctar
file_out_rank.d
file_axis_ex.d
file_rank.d
file_coef.d
file_value.d[miya@scls namd]$

ib.inpib.inp.nostfx10
ib.inp.ricc
initial.coor
initial.inp
initial.pdb

HOLD
0
0

ERROR
0
0

TOTAL
0
0

initial.psf
initial.vel
initial.xsc
input_builder
namd2
par_all27_prot_lipid.prm

rein
rein.inp
rein.shremd_convert
rep.1
rep.2

rep.3
rep.4
rep.5
rep.6
rep.7
rep.8

replica.trj
rmd2.e14306
rmd2.i14306
rmd2.o14306
templatesbatch builderによるデータ処理と、次のインプット作成$ ./batch̲builder bb.inp.nostfx10 restart[miya@scls namd]$ ls
batch_builder
file_ex.dbb.inpfile_on.dbb.inp.nostfx10 file_rank.d
bb.inp.ricctar
file_value.d
file_axis_ex.d
ib.inpfile_coef.d
ib.inp.nostfx10[miya@scls namd]$

ib.inp.ricc
initial.coor
initial.inp
initial.pdb
initial.psf
initial.vel

initial.xsc
input_builder
namd2
par_all27_prot_lipid.prm
rein
rein.inp[miya@scls namd]$ ls results/
result0000001_0000010[miya@scls namd]$ ls results/result0000001_0000010/
file_axis_ex.d file_ex.d file_out_coef.d file_rank.d
file_coef.d
file_on.d file_out_rank.d file_value.d[miya@scls namd]$

再度reinの実行$ pjsub rein.shrein.inp
rein.sh

rep.1
rep.2

rein.shremd_convert
rep.1
rep.2
rep.3
rep.4

rep.3
rep.4

rep.5
rep.6

rep.5
rep.6
rep.7
rep.8
resultsrmd2.e14306

rep.7
rep.8

rmd2.i14306
rmd2.o14306
templates

replica.trj

トラジェクトリの整理$ ./remd̲convert -h ctrl > rc.inp
rc.inpファイルの変更# control parameters in remd_convert!

[INPUT]!

psffilereffiletrj_format= initial.psf= initial.pdb= DCD

directory001
directory002
directory003= ./results/result0000001_0000010= ./results/result0000011_0000020= ./results/result0000021_0000030

repeat001= 3

trj_filename001
energy_trj001= rep.{rep_no}/rep.{rep_no}.{step}.dcd= replica.trj

energy_column

=

!
!
!
!

# (DCD/MARBLE/PDB)（→ 1に変更）# column of output energy, ex. = 1 2-4, empty: all column[OUTPUT]!

out_pdbfile
trj_filename= out.pdb= out.{type}.{number}.{extension}.dcd

trj_format= DCD# (DCD/MARBLE/AMBER/TINKER/PDB/GROMACS)= REPLICA=# (REPLICA/CONDITION)# ex. = 1 2-8, empty: output all rank

!

(追加)

[CONVERT]

!

type
rank

!

remd̲convertの実行$ ./remd̲convert rc.inp[miya@scls namd]$ ls
batch_builder
ib.inpbb.inpib.inp.nostfx10
bb.inp.nostfx10 ib.inp.ricc
bb.inp.ricctar
initial.coor
file_axis_ex.d
initial.inp
file_coef.d
initial.pdb
file_ex.dinitial.psf
file_on.d
initial.vel
file_rank.d
initial.xsc
file_value.d
input_builder[miya@scls namd]$

namd2
out.pdb
out.replica.1.crdtrj
out.replica.1.enetrj
out.replica.2.crdtrj
out.replica.2.enetrj
out.replica.3.crdtrj
out.replica.3.enetrj
out.replica.4.crdtrj
out.replica.4.enetrj

out.replica.5.crdtrj
out.replica.5.enetrj
out.replica.6.crdtrj
out.replica.6.enetrj
out.replica.7.crdtrj
out.replica.7.enetrj
out.replica.8.crdtrj
out.replica.8.enetrj
par_all27_prot_lipid.prm
rc.inprein
rein.inp
rein.shremd_convert
rep.1
rep.2
rep.3
rep.4
rep.5
rep.6

rep.7
rep.8
resultsrmd2.e14306
rmd2.i14306
rmd2.o14306
templates

out.replica.#.crdtrj : replicaのdcd ﬁleout.replica.#.enetrj : energyなどのトラジェクトリ
番号はレプリカ。更に、[CONVERT] typeを”REPLICA”から”CONDITION”に変更するとコンディションに対するトラジェクト
リが得られれる。これらのデータから様々な解析ができる。

是非、VMDなどの画像ソフトウェアを使って動画などを見て下さい。

PCでの簡単な実行例
no spawn option
３レプリカの場合<ib.inp>
rein_input= rein.inp
spawn = noopenmp_rein = yes# rein input file name!

$ ./input_builder ib.inp > ib.out!
インストール$ cd src$ ./configure.sh x86_64 gfortran local$ make; make install$ cd ../tools$ ./configure.sh x86_64 gfortran$ make; make install

必要なファイルのコピー$ cd ../../test$ cp -r ../rein/bin/* .
$ cp ../rein/example/input/namd/*
予めバイナリ形式のNAMDをnamd ディレクトリへ
ダウンロード$ cp ../namd/Linux_x86_64/namd2 .
$ cp ../namd/Linux_x86_64/charmrun .

<bb.inp>
rein_input= rein.inp# REIN input file namespawn = noopenmp_rein = yes[BATCH]
batchfile_name= rein.sh
job_scheduler= GE
queue_name= all.q!

num_threads_md=1
num_mpiproc_md=1
cpu_time= 01:00:00
num_core_cpu=1
num_mpiproc_rein=3!

$ ./batch_builder bb.inp > bb.out!

$ sh ./rein.sh > rein.out1 &$ ./batch_builder bb.inp restart > bb.out2$ sh ./rein.sh > rein.out2 &