Más contenido relacionado La actualidad más candente (19) Similar a ALPSチュートリアル(3) アプリケーション実習 (20) Más de Computational Materials Science Initiative (20) ALPSチュートリアル(3) アプリケーション実習3. ALPS アプリケーション実行チュートリアル
ALPS シミュレーションの流れ
●●
ALPS によるシミュレーション| ワークフロー
Parameter File
LATTICE = "square lattice"
MODEL = "spin"
L = 16
Jxy = 1
Jz = 2
SWEEPS = 10000
THERMALIZATION = 1000
{ T = 0.1 }
{ T = 0.2 }
{ T = 0.5 }
{ T = 1.0 }
parameter2xml
tool
application programs
(0,1)
Python based evaluation tools
Parameter XML File
Model XML File
Σ ] Σ i
< i,j>
[ Sz
i Sz
j + ( S+
i S-j
+ S-i
S+
j )/ 2 - h
Outputs in HDF5 & XML
Quantum Monte Carlo
H = J
Quantum Lattice Model
Exact Diagonalization DMRG
Lattice XML File
square lattice
<LATTICES>
<LATTICE name="square lattice" dimension="2">
<PARAMETER name="a" default="1"/>
<BASIS><VECTOR>a 0</VECTOR><VECTOR>0 a</VECTOR></BASIS>
</LATTICE>
<UNITCELL name="simple2d" dimension="2">
<VERTEX/>
<EDGE>
<SOURCE vertex="1" offset="0 0"/>
<TARGET vertex="1" offset="0 1"/>
</EDGE>
<EDGE>
<SOURCE vertex="1" offset="0 0"/>
<TARGET vertex="1" offset="1 0"/>
</EDGE>
</UNITCELL>
<LATTICEGRAPH name="square lattice">
<FINITELATTICE>
<LATTICE ref="square lattice"/>
<EXTENT dimension="1" size="L"/>
<EXTENT dimension="2" size="L"/>
<BOUNDARY type="periodic"/>
</FINITELATTICE>
<UNITCELL ref="simple2d"/>
</LATTICEGRAPH>
</LATTICES>
(0,0)
(1,0)
<MODELS>
<BASIS name="spin">
i
Sz
<SITEBASIS name="spin">
<PARAMETER name="local_S" default="1/2"/>
<QUANTUMNUMBER name="S" min="local_S" max="local_S"/>
<QUANTUMNUMBER name="Sz" min="-S" max="S"/>
<OPERATOR name="Sz" matrixelement="Sz"/>
<OPERATOR name="Splus" matrixelement="sqrt(S*(S+1)-Sz*(Sz+1))">
<CHANGE quantumnumber="Sz" change="1"/>
</OPERATOR>
<OPERATOR name="Sminus" matrixelement="sqrt(S*(S+1)-Sz*(Sz-1))">
<CHANGE quantumnumber="Sz" change="-1"/>
</OPERATOR>
</SITEBASIS>
</BASIS>
<HAMILTONIAN name="spin">
<PARAMETER name="J" default="1"/>
<PARAMETER name="h" default="0"/>
<BASIS ref="spin"/>
<SITETERM>
-h * Sz(i)
</SITETERM>
<BONDTERM source="i" target="j">
J * (Sz(i)*Sz(j) + (Splus(i)*Sminus(j)+Sminus(i)*Splus(j)))/2
</BONDTERM>
</HAMILTONIAN>
</MODELS>
Plots
DMFT
3 / 33
4. ALPS アプリケーション実行チュートリアル
ALPS シミュレーションの流れ
●●
シミュレーションの入出力
典型的には、一つのシミュレーションは複数のパラメータセッ
トからなる
(異なる温度など)
「ジョブ(job)」: シミュレーション全体、「タスク」の集合
「タスク(task)」(または「simulation」): 一つのパラメータ
セットに対する計算、「ラン」の集合
「ラン(run)」(または「clone」): 異なる乱数の種に対する個々
の計算
XML 入力ファイルと出力ファイル
myjob.in.xml
myjob.task1.in.xml
myjob.task2.in.xml
myjob.task3.in.xml
myjob.out.xml
myjob.task1.out.xml
myjob.task2.out.xml
myjob.task3.out.xml
run a simulation
4 / 33
5. ALPS アプリケーション実行チュートリアル
ALPS シミュレーションの流れ
●●
XML の基礎
XML = eXtensible Marckup Landuage
構造化文書を作成するのに適している
「タグ」を使って、文章の構造を記述
大文字と小文字は区別される
XML の例: HTML (XHTML)
an attribute
contents
empty element (no contents)
opening tag
closing tag
<html>
<h1 align=”center”>Header</h1>
<p>A paragraph... And below it an image</p>
<img src=”img.jpg”/>
</html>
5 / 33
6. ALPS アプリケーション実行チュートリアル
ALPS シミュレーションの流れ
ー●
XML の文法
「開始タグ」には対応する「終了タグ」が必要
ある要素の「開始タグ」と終了タグは共通の親ノードに含まれ
なければならない
XML の「木」表示
html
h1 p img
align="center" Header A paragraph... src="img.jpg"
<html>
<h1 align=”center”>Header</h1>
<p>A paragraph... And below it an image</p>
<img src=”img.jpg”/>
</html>
⇒
XML では、ユーザが独自のタグ(要素の名前) を定義すること
が可能
(参考: Document Type De 8. ALPS アプリケーション実行チュートリアル
ALPS シミュレーションの流れ
ー●
なぜXML を使うのか?
plain text file
# parameters
10 0.5 10000 1000
# mean, error
-10.451 0.043
XML file
<PARAMETER name=“L”>10</PARAMETER>
<PARAMETER name=“T”>0.5</PARAMETER>
<PARAMETER name=“SWEEPS”>10000</PARAMETER>
<PARAMETER name=“THERMALIZATION”>1000</PARAMETER>
<AVERAGE name=“Energy”>
<MEAN> -10.451 </MEAN>
<ERROR> 0.043 </ERROR>
</AVERAGE>
人間にはどちらが読みやすい?
機械にはどちらがよみやすい?
数年後に読んで理解できるのはどっち?
7 / 33
9. ALPS アプリケーション実行チュートリアル
ALPS シミュレーションの流れ
ー●
データ形式の拡張性
新しいパラメータを追加すると、、、
# parameters
10 0.5 10000 1000 12
# RNG
“lagged fibonacci”
# mean, error
-10.451 0.043
<PARAMETER name=“L”>10</PARAMETER>
<PARAMETER name=“T”>0.5</PARAMETER>
<PARAMETER name=“SWEEPS”>10000</PARAMETER>
<PARAMETER name=“THERMALIZATION”>1000</PARAMETER>
<PARAMETER name=”SEED”>12</PARAMETER>
<RNG name=”lagged fibonacci”/>
<AVERAGE name=“Energy”>
<MEAN> -10.451 </MEAN>
<ERROR> 0.043 </ERROR>
</AVERAGE>
テキスト形式の場合、これまでのプログラムは動かなくなる
XML の場合には問題ない(必要のないパラメータは読まれ
ない)
8 / 33
10. ALPS アプリケーション実行チュートリアル
ALPS シミュレーションの流れ
●●
Job XML ファイル
myjob.in.xml
<JOB xmlns:xsi=”....” ....>
<OUTPUT file="myjob.out.xml"/>
<TASK status="new">
<INPUT file="myjob.task1.in.xml"/>
<OUTPUT file="myjob.task1.out.xml"/>
</TASK>
<TASK status="new">
<INPUT file="myjob.task2.in.xml"/>
<OUTPUT file="myjob.task2.out.xml"/>
</TASK>
...
</JOB>
myjob.out.xml
<JOB xmlns:xsi=”....” ....>
<TASK status="finished">
<INPUT file="myjob.task1.out.xml"/>
</TASK>
<TASK status="finished">
<INPUT file="myjob.task2.out.xml"/>
</TASK>
<TASK status="running">
<INPUT file="myjob.task3.out.xml"/>
</TASK>
...
</JOB>
9 / 33
11. ALPS アプリケーション実行チュートリアル
ALPS シミュレーションの流れ
●●
Task XML ファイル
myjob.task1.in.xml
<SIMULATION xmlns:xsi=”....” ....>
<PARAMETERS>
<PARAMETER name="LATTICE">chain
lattice</PARAMETER>
<PARAMETER name="MODEL">spin
</PARAMETER>
<PARAMETER name="L">128
</PARAMETER>
<PARAMETER name="T">0.01
</PARAMETER>
</PARAMETERS>
</SIMULATION>
myjob.task1.out.xml
<SIMULATION xmlns:xsi=”....” ....>
<PARAMETERS>
....
</PARAMETERS>
<AVERAGES>
<SCALAR_AVERAGE name=”Energy”....>
...
</AVERAGES>
<MCRUN>
<EXECUTED phase=”equilibration”>
....
</MCRUN>
</SIMULATION>
10 / 33
12. ALPS アプリケーション実行チュートリアル
ALPS シミュレーションの流れ
●●
ALPS が作成するバイナリ形式ファイル
HDF5 (拡張子.h5)
実行結果や実行時情報は, Task 毎にHDF5 形式ファイルに保存
される
pyalps ツールは, HDF5 ファイルから計算結果を読み込む
XDR (拡張子.xdr)
実行途中のチェックポイント情報(スピン配位等) が定期的に保
存される
シミュレーションのリスタート時は, 最後のチェックポイント
から再開される
11 / 33
13. ALPS アプリケーション実行チュートリアル
ALPS シミュレーションの流れ
●●
parameter2xml ツール
パラメータセットを簡易形式で書いて、parameter2xml ツール
でXML に変換する
LATTICE_LIBRARY=”lattices.xml”;
LATTICE=”chain lattice”;
MODEL_LIBRARY=”models.xml”;
MODEL=”spin”;
THERMALIZATION=10000;
SWEEPS=1000000;
L=128;
{ T=0.2; }
{ T=0.4; }
{ T=0.6; }
{ T=0.8; }
{ T=1.0; }
myjob.in.xml
myjob.task1.in.xml
myjob.task2.in.xml
myjob.task3.in.xml
myjob.task4.in.xml
myjob.task5.in.xml
parameter2xml
pyalps (後述) では、pyalps.writeInputFiles() メソッドが利用で
きる
12 / 33
14. ALPS アプリケーション実行チュートリアル
ALPS シミュレーションの流れ
●●
格子とモデルの指定
格子とモデルを指定するための特別なパラメータ
name description default
LATTICE_LIBRARY
path to an XML file containing lattice
descriptions (e.g. “mylattice.xml”)
$ALPS_HOME/lib/
xml/lattices.xml
LATTICE name of the lattice (e.g. “square lattice”) N.A.
MODEL_LIBRARY
path to an XML file containing model
descriptions (e.g. “mymodel.xml”)
$ALPS_HOME/lib/
xml/models.xml
MODEL name of the model (e.g. “spin”) N.A.
13 / 33
15. ALPS アプリケーション実行チュートリアル
ALPS シミュレーションの流れ
●●
パラメータファイルでの数式の使用
改行, セミコロン, コンマで
変数を区別
四則演算、初等関数(sin,
cos, exp など) が使える
(PI), 虚数単位(I) などを
文字で指定
C 風, C++風のコメント
f g で囲んだ変数は異なる
セット
「循環参照」がある場合には
エラーになる
LATTICE = chain lattice;
L = 16,
SEED = 2873
// C++ style comment
SWEEPS = 4096;
THERMALIZATION = SWEEPS/8;
/* C style comment */
{ T = 2; Sq = 2*PI/3; }
{ T = 1.8; }
14 / 33
16. ALPS アプリケーション実行チュートリアル
ALPS チュートリアル
ー●
ディレクトリ構成(例)
/opt/nano/alps/alpsvars.sh
ALPS 環境変数($PATH, $ALPS HOME 等) 設定スクリプト
/opt/nano/alps/tutorials
アプリケーションのチュートリアル用入出力ファイル
/opt/nano/alps/notebook
iPython ノートブックによるチュートリアル
alpsvars.sh はALPS がインストールされたスパコン全てに用意され
ています
https://github.com/wistaria/installer/wiki
15 / 33
17. ALPS アプリケーション実行チュートリアル
ALPS チュートリアル
ー●
実習準備
1 実習システムにログイン
$ ssh -X guestXX@hostname
2 環境変数の設定
$ source /opt/nano/alps/alpsvars.sh
3 ALPS が動くかどうか確認
$ pconfig
4 チュートリアルをコピー
$ cp -rp /opt/nano/alps/tutorials/ .
5 iPython ノートブックをコピー
$ cp -rp /opt/nano/alps/notebook/ .
16 / 33
18. ALPS アプリケーション実行チュートリアル
ALPS チュートリアル
ー●
実習準備(ローカル環境を使う場合)
1 環境変数の設定
$ source $HOME/alps/bin/alpsvars.sh
2 ALPS が動くかどうか確認
$ pconfig
3 チュートリアルSourceForge からダウンロード
$ tar zxf tutorials-20140623-r7482.tgz
4 iPython ノートブックをSourceForge からダウンロード
$ tar zxf alps-notebook-20141016.tgz
17 / 33
19. ALPS アプリケーション実行チュートリアル
ALPS チュートリアル
ー●
実習準備(MateriApps LIVE!を使う場合)
1 ALPS が動くかどうか確認
$ pconfig
2 チュートリアルをコピー
$ cp -rp /usr/share/alps/tutorials/ .
3 iPython ノートブックをSourceForge からダウンロード
$ tar zxf alps-notebook-20141016.tgz
18 / 33
20. ALPS アプリケーション実行チュートリアル
ALPS チュートリアル
ー●
ALPS の実行シナリオ
1 コマンドライン(旧来からの方法)
$ parameter2xml param
$ loop param.in.xml
2 シェルスクリプト(バッチ処理)
3 Python (対話的or バッチ)
パラメータの準備からグラフ作成まで統一的に
対話的にもバッチコマンドとしても実行可能
グラフの作成も、Python のMatplotlib を用いる
4 IPython notebook
ブラウザ上でPython コマンドを実行
入力、出力を「ノートブック」としてまとめて保存
グラフの描画もブラウザ上で可能
5 VisTrails (履歴管理ツール)
19 / 33
21. ALPS アプリケーション実行チュートリアル
ALPS チュートリアル
ー●
ALPS アプリケーション
fulldiag 厳密対角化(全対角化法)
sparsediag 厳密対角化(Lanczos 法)
spinmc 古典モンテカルロ法
loop 量子モンテカルロ法(ループアルゴリズム)
dirloop sse 量子モンテカルロ(向き付きループアルゴリズム)
worm 量子モンテカルロ(ワームアルゴリズム)
dmrg,tebd 密度行列繰り込み群
hirshfye,interaction,hybridization 動的平均場近似のQMC ソルバ
20 / 33
22. ALPS アプリケーション実行チュートリアル
ALPS チュートリアル
ー●
コマンドライン実行(厳密対角化ed-01)
1 実習システムにログイン
$ ssh -X guestXX@hostname
2 (必要に応じて) 計算ノードにログイン
3 環境変数の設定
$ source /opt/nano/alps/alpsvars.sh
4 入力XML ファイルの準備
$ cd tutorials/ed-01-sparsediag
$ parameter2xml parm1a
5 sparsediag の実行
$ sparsediag --write-xml parm1a.in.xml
6 結果はparm1a.task1.out.xml に出力される
21 / 33
23. ALPS アプリケーション実行チュートリアル
ALPS チュートリアル
ー●
シェルスクリプトによる実行(厳密対角化ed-01)
1 実習システムにログイン
$ ssh -X guestXX@hostname
2 (必要に応じて) 計算ノードにログイン
3 シェルスクリプト(バッチファイル) の準備
$ cd tutorials/ed-01-sparsediag
$ vi batch.sh
4 batch.sh の中身
#!/bin/sh
source /opt/nano/alps/alpsvars.sh
parameter2xml parm1a
sparsediag --write-xml parm1a.in.xml
5 シェルスクリプトを実行(あるいはバッチキューに投入)
6 物性研スパコンでのジョブスクリプトの書き方⇒ [LINK]
22 / 33
24. ALPS アプリケーション実行チュートリアル
ALPS チュートリアル
ー●
Python での対話的実行(厳密対角化ed-01)
1 実習システムにログイン
$ ssh -X guestXX@hostname
2 (必要に応じて) 計算ノードにログイン
3 環境変数の設定
$ source /opt/nano/alps/alpsvars.sh
4 IPython の起動
$ cd tutorials/ed-01-sparsediag
$ ipython
5 チュートリアルページにしたがって、コマンドを実行(コマン
ドはTAB で補完できる)
23 / 33
25. ALPS アプリケーション実行チュートリアル
ALPS チュートリアル
ー●
Python でのバッチ実行(厳密対角化ed-01)
1 実習システムにログイン
$ ssh -X guestXX@hostname
2 (必要に応じて) 計算ノードにログイン
3 環境変数の設定
$ source /opt/nano/alps/alpsvars.sh
4 バッチ実行
$ cd tutorials/ed-01-sparsediag
$ python tutorial1a.py
24 / 33
26. ALPS アプリケーション実行チュートリアル
ALPS チュートリアル
ー●
IPython notebook での実行(厳密対角化ed-01)
1 実習システムにログイン
$ ssh -X guestXX@hostname
2 IPython notebook サーバの起動
$ source /opt/nano/alps/alpsvars.sh
$ cd notebook/jp
$ ipython notebook --no-browser --pylab inline
3 起動時に出力されるポート番号(8888 等) を控えておく
4 手元のPC でもう一つポートフォワーディング付きでSSH セッション
を開く
$ ssh guestXX@hostname -L 8888:localhost:8888
5 PC でブラウザを起動し、http://localhost:8888 を開く
6 ED-01 SparseDiagonalization.ipynb を開き、[Shift+Return] で実行し
ていく
注: フロントエンドでの実行のため、他の人のジョブと干渉して遅くなる場
合がある
25 / 33
27. ALPS アプリケーション実行チュートリアル
ALPS チュートリアル
ー●
IPython notebook での実行(ローカル環境を使う場合)
IPython notebook の起動
$ source $HOME/alps/alpsvars.sh
$ cd notebook/jp
$ ipython notebook --pylab inline
Mac OS X の場合は, ipython-2.7 を使う
MateriApps LIVE!の場合は, 1 行目は不要
26 / 33
30. ALPS アプリケーション実行チュートリアル
ALPS チュートリアル
ー●
シミュレーションの並列実行
パラメータセットに関する並列実行が可能(embarassingly
parallel)
アプリケーションによって、ALPS parallelizing スケジューラ
か、ALPS/parapack スケジューラのいずれかが使われている
(オプション-l により確認可)
ALPS parallelizing スケジューラ(spinmc 等)
OpenMP スレッド並列には対応していない。MPI 並列のみ
MPI 実行例(4 プロセス):
mpirun -np 4 spinmc --mpi parm2a.in.xml
ALPS/parapack スケジューラ(loop 等)
OpenMP スレッド並列とMPI 並列に対応。デフォルトで自動
的にスレッド並列実行
実行例(16 スレッド):
loop -r 16 parm2c.in.xml
28 / 33
31. ALPS アプリケーション実行チュートリアル
ALPS チュートリアル
ー●
厳密対角化チュートリアル
ED-01 Sparse Diagonalization (Lanczos)
S = 1 の量子1 次元系(サイト数4) について, Lanczos 法によ
り固有値を求め, 固有値, 相関関数などを出力する.
ED-02 Spin gaps of 1D quantum systems
S = 1 の量子1 次元系(サイト数4{14) について, Lanczos 法
で固有値計算を行う. 求めたエネルギー固有値からエネルギー
ギャップを求めプロットする.
ED-03 Spectra of 1D quantum systems
次の2 種類の量子格子模型について, Lanczos 法で固有値計算
を行う.
S = 1=2 量子1 次元ハイゼンベルグ模型
S = 1=2 梯子系ハイゼンベルグ模型
29 / 33
33. eld theory description of 1D critical spectra
横磁場イジング模型について, Lancos 法を用いた固有値計算を
行う. 相関関数の臨界指数とエネルギーギャップとの共形場理
論から導かれる関係を数値計算から求めた固有値により実証
する.
ED-05 Phase transition in a frustrated spin chain
次近接相互作用をもつハイゼンベルグ鎖について, Lanczos 法
を用いて固有値計算を行う. 得られたエネルギー固有値から臨
界点を求める. さらに共形場理論を利用した解析も行う.
ED-06 Full Diagonalization
S = 1 の反強磁性ハイゼンベルグ鎖(8 サイト) について全対角
化を行う. 得られた固有値をもとにいくつかの物理量について
熱力学的振る舞いをプロットする.
30 / 33
34. ALPS アプリケーション実行チュートリアル
ALPS チュートリアル
ー●
モンテカルロ法チュートリアル
mc-01-autocorrelations
mc-01b-equilibration-and-convergence
mc-02-susceptibilities
mc-03-magnetization
mc-04-measurements
mc-05-bosons
mc-06-qwl
mc-07-phase-transition
mc-08-quantum-phase-transition
31 / 33
35. ALPS アプリケーション実行チュートリアル
ALPS Lattice Model チュートリアル
ー●
ALPS Lattice チュートリアル
ALPS Lattice HowTo
辺と頂点を単位として簡単なグラフを指定する方法
格子と単一セルを指定する方法
単位格子に対応するグラフを指定する方法
格子とグラフのライブラリの生成方法
格子の定義から生成されたグラフを確認する方法
lattice2xml ツール、あるいは(wxPython とVTK がインストー
ルされている環境では) lattice-preview 格子可視化ツールも利
用可
32 / 33
36. ALPS アプリケーション実行チュートリアル
ALPS Lattice Model チュートリアル
ー●
ALPS Model チュートリアル
ALPS Model HowTo
デフォルトのモデルライブラリファイル
モデルライブラリファイルの構造
単一サイトの基底
完全格子モデルの基底
量子演算子
ハミルトニアンの取扱い
33 / 33