Recommended
PDF
ALPSチュートリアル(3) アプリケーション実習
PDF
ALPSチュートリアル(5) ALPS Python入門
PDF
ALPSチュートリアル(2) ALPSのインストール
PDF
ALPSチュートリアル(7) アプリケーションのALPS化
PDF
PDF
ALPSチュートリアル(6) Matplotlib入門
PDF
PDF
Fork/Join Framework。そしてLambdaへ。
PDF
PPTX
「Lispインタープリター」勉強会 2014.12.04
PDF
PPTX
PPTX
PDF
TensroFlow XLA : JIT編 (r1.3版)
PDF
Python で munin plugin を書いてみる
PDF
Tensorflow dynamically loadable XLA plugin ソースコード解析
PDF
PDF
TensorFlow XLAは、 中で何をやっているのか?
PDF
Cloud TPU Driver API ソースコード解析
PDF
PPT
PDF
TensorFlow XLA 「XLAとは、から、最近の利用事例について」
PDF
PDF
PDF
Async design with Unity3D
PDF
PostgreSQL - C言語によるユーザ定義関数の作り方
PDF
PDF
PDF
PDF
How to setup MateriApps LIVE!
More Related Content
PDF
ALPSチュートリアル(3) アプリケーション実習
PDF
ALPSチュートリアル(5) ALPS Python入門
PDF
ALPSチュートリアル(2) ALPSのインストール
PDF
ALPSチュートリアル(7) アプリケーションのALPS化
PDF
PDF
ALPSチュートリアル(6) Matplotlib入門
PDF
PDF
Fork/Join Framework。そしてLambdaへ。
What's hot
PDF
PPTX
「Lispインタープリター」勉強会 2014.12.04
PDF
PPTX
PPTX
PDF
TensroFlow XLA : JIT編 (r1.3版)
PDF
Python で munin plugin を書いてみる
PDF
Tensorflow dynamically loadable XLA plugin ソースコード解析
PDF
PDF
TensorFlow XLAは、 中で何をやっているのか?
PDF
Cloud TPU Driver API ソースコード解析
PDF
PPT
PDF
TensorFlow XLA 「XLAとは、から、最近の利用事例について」
PDF
PDF
PDF
Async design with Unity3D
PDF
PostgreSQL - C言語によるユーザ定義関数の作り方
PDF
PDF
More from Computational Materials Science Initiative
PDF
PDF
How to setup MateriApps LIVE!
PDF
How to setup MateriApps LIVE!
PDF
PDF
PDF
How to setup MateriApps LIVE!
PDF
How to setup MateriApps LIVE!
PDF
PDF
PDF
How to setup MateriApps LIVE!
PDF
How to setup MateriApps LIVE!
PDF
PDF
How to setup MateriApps LIVE!
PDF
PDF
PDF
How to setup MateriApps LIVE!
PDF
PDF
MateriApps: OpenMXを利用した第一原理計算の簡単な実習
PDF
CMSI計算科学技術特論C (2015) ALPS と量子多体問題②
PDF
CMSI計算科学技術特論C (2015) ALPS と量子多体問題①
ALPSチュートリアル(1) ALPSの概要 1. ALPS チュートリアル{ ALPS の概要
ALPS チュートリアル{ ALPS の概要
CMSI ハンズオン
ALPS Collaboration
http://alps.comp-phys.org/
2014-10-16
1 / 43
2. ALPS チュートリアル{ ALPS の概要
Outline
1 チュートリアルの概要
2 量子格子模型とは?
3 ALPS プロジェクト
4 ALPS の開発
5 ALPS の構成
6 ALPS ライブラリ
7 ALPS アプリケーション
2 / 43
3. ALPS チュートリアル{ ALPS の概要
チュートリアルの概要
ALPS チュートリアル資料
ALPS チュートリアル資料(日)
PDF: http://sf.net/projects/alps-tutorial/files/
TEX ソース: https://github.com/cmsi/alps-tutorial/
ALPS オフィシャルページ(英日): http://alps.comp-phys.org/
ALPS Developer Wiki (英): http://alps.comp-phys.org/trac/
CMSI MateriApps: http://ma.cms-initiative.jp/
ALPS web 講習会: http://ma.cms-initiative.jp/jp/...
藤堂眞治「実験技術" としての量子多体系シミュレーション
ソフトウェアALPS」日本物理学会誌(掲載予定)
3 / 43
4. ALPS チュートリアル{ ALPS の概要
チュートリアルの概要
困った時は…
ALPS サポートチーム(日): alps@exa.phys.s.u-tokyo.ac.jp
MateriApps ALPS フォーラム(日):
http://ma.cms-initiative.jp/ja/community/materiapps-...
ALPS User's Mailing List (英):
https://alps.comp-phys.org/mediawiki/index.php/Forum...
4 / 43
5. ALPS チュートリアル{ ALPS の概要
チュートリアルの概要
ALPS チュートリアルスタッフ
チュートリアル資料作成・講師
藤堂眞治(東大院理/物性研)
松尾春彦(RIST)
五十嵐亮(東大物性研)
本山裕一(東大物性研)
諏訪秀麿(東大院理)
主催
CMSI: 計算物質科学イニシアティブ
http://cms-initiative.jp/
共催
RIST: 一般財団法人高度情報科学技術研究機構
http://www.rist.or.jp/
5 / 43
6. ALPS チュートリアル{ ALPS の概要
チュートリアルの概要
チュートリアルの流れ
ALPS の概要01_overview ○ ◎ ◎
ALPS のインストール02_installation ◎ ◎ ◎
アプリケーション実習(1) 03_tutorial ◎ ◎ ◎
Python 入門04_python ○ ○ ◎
ALPS Python 入門05_pyalps ○ ○ ◎
Matplotlib 入門06_matplotlib ○ ○ ◎
アプリケーション実習(2) ◎ ◎
アプリケーションのALPS 化07_alpsize ◎ ◎
○: ユーザコース, ○: 開発者コース○: 集中コース
6 / 43
7. ALPS チュートリアル{ ALPS の概要
チュートリアルの概要
ALPS チュートリアルの目標
ALPS の概要を知る[○○○]
ALPS アプリケーションの実行方法を学ぶ[○ー○]
ALPS Python ツールを使った結果の解析方法を学ぶ[○ー○]
ALPS ライブラリの仕組みを学ぶ[ー○○]
ユーザアプリケーションの作成方法を学ぶ[ー○○]
(ALPS チュートリアルの問題点を洗い出し改良する) [◎◎◎]
7 / 43
8. ALPS チュートリアル{ ALPS の概要
量子格子模型とは?
●●
量子格子模型: Quantum Lattice Models
量子スピン模型(XXZ 模型)
H =
Jxy
2
Σ
⟨i ;j⟩
(S+
j + S
i S
i S+
j ) + Jz
Σ
⟨i ;j⟩
Sz
i Sz
j
Hubbard 模型
H = t
Σ
⟨i ;j⟩
(c
y
icj + h.c.) + U
Σ
i
nini#
t-J 模型
H = t
Σ
⟨i ;j⟩
(c
y
icj+h.c.)+J
Σ
i ;j
(Si Sjninj=4)
8 / 43
9. ALPS チュートリアル{ ALPS の概要
量子格子模型とは?
●●
なぜQLM を考えるのか?
量子多体系における強相関効果
さまざまな秩序状態
量子的に強くゆらいだ相: 量子液体, スピン
ギャップ相
量子相転移, 量子臨界現象
量子統計物理におけるユニバーサリティー
量子臨界現象は系の次元, 秩序変数の対称性など
にしか依存しない
量子臨界現象特有のユニバーサリティークラス
の探索
新しい計算物理学的手法の発展
量子モンテカルロ法, DMRG, DMFT, テンソル
ネットワーク, など
9 / 43
10. ALPS チュートリアル{ ALPS の概要
ALPS プロジェクト
●●
ALPS プロジェクトの目標
量子統計物理分野の現状
研究グループ毎に異なるコードを開発
シミュレーションを行う模型毎に異なる実装
アルゴリズムはますます複雑になりソフトウェア開発が長期化
可搬性・互換性のない入出力形式
ALPS プロジェクトの目標
最新のアルゴリズムを用いたcommunity code の開発
大規模並列計算などのためのC++ライブラリ・フレームワー
ク開発
統一入出力形式の提案とそれにもとづくデータ解析ツールの
作成
計算物理の専門家だけでなく, 理論家・実験家にも使えるシ
ミュレーションソフトウェア
10 / 43
11. ALPS チュートリアル{ ALPS の概要
ALPS プロジェクト
●●
ALPS とは?
ALPS = Algorithms and Libraries for Physics Simulations
量子スピン系, 電子系など強相関量子格子模型のシミュレー
ションためのオープンソースソフトウェアの開発を目指す国際
共同プロジェクト
ALPS ライブラリ= C++による格子模型のための汎用ライブ
ラリ群
ALPS アプリケーション= 最新のアルゴリズムに基づくアプ
リケーション群: QMC, DMRG, ED, DMFT 等
ALPS フレームワーク= 汎用入出力形式, 解析ツール, スケ
ジューラなど, 大規模並列シミュレーションのための環境
11 / 43
12. ALPS チュートリアル{ ALPS の概要
ALPS プロジェクト
●●
ターゲット・オーディエンス
実験家
物質のモデリングにソフトウェアパッケージを利用
実験結果とシミュレーション結果のフィッティングにより, 相
互作用定数などを決定
理論家
理論的なアイデアのチェックに使いやすい整備されたコードを
利用
自前のコードのデバッグに
新しいコード開発の基盤としての利用
計算機科学者, 学生,
12 / 43
13. ALPS チュートリアル{ ALPS の概要
ALPS の開発
●●
基盤となる技術
C++によるジェネリック・プログラミング
C++標準テンプレートライブラリ
Boost C++ ライブラリhttp://www.boost.org/
ALPS 独自のクラス, ジェネリック・アルゴリズムを実装
柔軟性, 再利用性, 高信頼性, 高性能を同時に達成
XML, HDF5 http://www.hdfgroup.org/HDF5/ による入
出力
可搬性, 自己記述性, 変換が容易
量子格子模型に対する最新のシミュレーション手法
13 / 43
14. 15. ALPS チュートリアル{ ALPS の概要
ALPS の開発
●●
ALPS の歴史
1990 年代中頃ALPS の前身となるPALM C++, DMRG,
looper などが開発される
2002 年ALPS プロジェクト始動
2004 年バージョン1.0, 第1 回Users Workshop
2010 年バージョン2.0
2014 年10 月現在
ソースコード: C++ 396,000 行, Python 39,000 行, Fortran
10,000 行
開発者: 約30 名(7 ヶ国)
15 / 43
16. ALPS チュートリアル{ ALPS の概要
ALPS の開発
●●
ALPS の開発者
Austria
H. G. Evertz
France
O. Parcollet
Germany
S. Fuchs
G. Guertler
D. Koop
U. Schollwock
S. Trebst
S. Wessel
Poland
G. Pawlowski
Switerland
B. Bauer
L. Gamper
J. Gukelberger
A. Hehn
S. V. Isakov
P. N. Ma
P. Mates
J. D. Picon
L. Pollet
B. Surer
M. Troyer
P. Werner
Japan
五十嵐亮
松尾春彦
藤堂眞治
USA
L. D. Carr
A. Feiguin
J. Freire
E. Gull
E. Santos
V. W. Scarlola
C. Silva
M. L. Wall
16 / 43
17. ALPS チュートリアル{ ALPS の概要
ALPS の開発
ー●
ALPS の展開
上方展開(大規模化・高性能化・並列化)
量子モンテカルロ法(ALPS/looper) の超並列化
高並列スケジューラ(ALPS/parapack) のハイブリッド多重並
列化
Fortran, C プログラムのためのAPI 作成
下方展開(裾野を広げる)
実験家・理論家による幅広い利用の促進
Windows/Macintosh 用バイナリインストーラの開発
ワークフロー・履歴管理システムとの統合
GUI (グラフィカルユーザインターフェース) の開発
17 / 43
18. ALPS チュートリアル{ ALPS の概要
ALPS の開発
ー●
開発のためのインフラストラクチャ
ソースコードの規模, 開発体制が大きくなると今までの方法で
は破綻する
開発・サポートのためのツールを一から作りあげるのは非現
実的
フリーソフトウェアの利用
ビルドシステム: CMake
ソースコードの管理: Subversion
プロジェクト管理・バグ追跡: Trac
ドキュメント作成: MediaWiki
メーリングリスト: Mailman
Linux ワークステーションが1 台あれば, これらの環境を整え
るのは現在では比較的容易
18 / 43
19. 20. 21. gure スクリ
プトに対応)
Windows のVisual C++ 用ソリューションファイル, Mac OS
X のXcode 用プロジェクトファイルの生成も可能
設定はCMakeLists.txt に記述する
テスト(CTest) やバイナリ配布(CPack) の機能もある
ファイルの依存関係の自動検出
19 / 43
22. ALPS チュートリアル{ ALPS の概要
ALPS の開発
ー●
VCS (Version Control System) によるソース管理:
Subversion
開発者が複数になると, ディレクトリ名やログファイルによる
バージョン管理はすぐに破綻する
ソースコードをサーバー上で一括管理
ネットワーク経由でソースをcheck out/check in
更新毎に一意なバージョン番号を付与
全ての修正履歴を保存
複数人が同時に更新した場合に衝突を回避するしくみ
ブランチ・マージ・タグ付けなどが可能
開発者が一人, 公開の予定がない場合でも積極的に使うべき
20 / 43
23. ALPS チュートリアル{ ALPS の概要
ALPS の開発
ー●
BTS (Bug Tracking System) の利用: Trac
プロジェクト管理とバグ追跡のためのツール
Web ブラウザからアクセス・操作
開発者の情報共有のためのwiki
Subversion との連携(ソース, 修正履歴のweb 上での閲覧)
プロジェクト管理(ロードマップ, マイルストーンの管理)
チケットシステム: バグやタスクの登録, 担当者の決定, 修正状
況の追跡
21 / 43
24. ALPS チュートリアル{ ALPS の概要
ALPS の開発
ー●
Wiki によるマニュアル作成: MediaWiki
もともとはウィキペディアのために開発された
Wiki とは?
Web ブラウザを利用してWeb 文書を書き換えるシステム
ネットワーク上のどこからでも書き換えができる
共同作業が容易
Web ブラウザがあれば編集作業が行える
HTML よりも簡潔な書式
文書間のリンクの作成が容易
ALPS Wiki のコンテンツ
ニュース, インストール方法, ALPS に関連する論文, 発表資料,
ライブラリリファレンスマニュアル, チュートリアル
22 / 43
25. ALPS チュートリアル{ ALPS の概要
ALPS の開発
ー●
メーリングリストの活用: Mailman
開発者メーリングリスト
開発方針に関する意見交換, リリーススケジュール調整, 担当者
調整等
Trac チケットの変更ログも自動的にここに流れる
ユーザメーリングリスト
Web からの自動登録
開発者+ ユーザコミュニティーによるサポートの場
FAQ ⇒ Wiki ドキュメントへ反映
バグレポート, 要望など⇒ Trac チケットへ
23 / 43
26. ALPS チュートリアル{ ALPS の概要
ALPS の開発
●●
ワークショップ
ALPS developers workshop
今後の開発方針についてブレインストーミング・ディスカッ
ション
年1 回程度
ALPS users workshop / tutorial
アルゴリズムについてのレビュートーク
Wiki のチュートリアルを用いてALPS の実習
CMSI ハンズオン: 年4 回程度, 神戸や柏にてALPS チュートリ
アルを開催中
24 / 43
27. ALPS チュートリアル{ ALPS の概要
ALPS の開発
●●
ALPScite-me ライセンス
GNU General Public License 2 (GPL2) を基本としたライセ
ンス
Non-commercial academic use の場合自由に利用可能
自由に再配布可
ユーザが変更を施したコードも同じライセンスの下で再配布可
ALPS を用いた研究成果を公表する場合には,
acknowledgement と論文の引用をお願いします
In any scienti 28. c publication based wholly or in part on the
Library, the use of the Library must be acknowledged and
the publications listed in the accompanying CITATIONS.txt
document must be cited.
25 / 43
29. ALPS チュートリアル{ ALPS の概要
ALPS の開発
●●
参考文献
ALPS papers
B. Bauer et al. The ALPS project release 2.0: Open source
software for strongly correlated systems, J. Stat. Mech.,
P05001 (2011).
A. F. Albuquerque et al. The ALPS project release 1.3: open
source software for strongly correlated systems, J. Mag. Mag.
Mat. 310, 1187 (2007).
F. Alet et al. The ALPS Project: Open Source Software for
Strongly Correlated Systems, J. Phys. Soc. Jpn. Suppl. 74, 30
(2005).
26 / 43
30. ALPS チュートリアル{ ALPS の概要
ALPS の構成
●●
ALPS の階層構造
tools
applications
domain-specific
libraries
numerics
generic C++
XML manipulation Python binding GUI
MC QMC ED DMRG DMFT
lattice model observables scheduler
random ublas iterative eigenvalue solver
Boost library
graph serialization XML/XSLT
C / Fortran BLAS LAPACK MPI HDF5
27 / 43
31. ALPS チュートリアル{ ALPS の概要
ALPS の構成
●●
サードパーティーのライブラリ
BLAS, LAPACK: 線形演算(行列対角化, 特異値分解など) (オ
プション)
MPI (Message Passing Interface): 並列計算のためのメッセー
ジ通信(オプション)
HDF5 (Hierarchical Data Format): プラットフォーム非依存の
バイナリファイル格納形式
Boost C++ Library: 乱数, グラフ, シリアル化, など多くの有
用なライブラリ群
28 / 43
32. ALPS チュートリアル{ ALPS の概要
ALPS ライブラリ
●●
ALPS/parameter ライブラリ
パラメータの入出力のための
ライブラリ
改行, セミコロン, コンマで
変数を区別
四則演算, 初等関数(sin, cos,
exp など) が使える
(PI), 虚数単位(I)
C 風, C++風のコメント
f g で囲まない変数は共通パ
ラメータ
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; }
29 / 43
33. ALPS チュートリアル{ ALPS の概要
ALPS ライブラリ
ー●
ALPS/parameter を使ったコード例
#include boost/foreach.hpp
#include alps/parameter.h
int main() {
std::ifstream fin;
fin.open(parameters.txt);
alps::ParameterList plist(fin);
BOOST_FOREACH(alps::Parameters p, plist) {
double a = p[a];
double b = p.value_or_default(b, 0.5);
...
}
...
}
30 / 43
34. ALPS チュートリアル{ ALPS の概要
ALPS ライブラリ
●●
ALPS/alea ライブラリ
マルコフ連鎖における平均値, 分散, 自己相関を計算するライ
ブラリ
alps::RealObservable mag2(Magnetization^2);
...
mag2 m * m; // at each MC step
ビンニング解析を用いた平均値, エラー, 自己相関時間の評価
std::cout mag2 std::endl;
出力
Magnetization^2: 3.142 +/- 0.001; tau = 10.3
31 / 43
35. ALPS チュートリアル{ ALPS の概要
ALPS ライブラリ
ー●
ALPS/alea ライブラリ
ジャックナイフ法を用いた非線形量のエラー評価
alps::RealObsevaluator mag2eval(mag2);
alps::RealObsevaluator mag4eval(mag4);
alps::RealObsevaluator binder = mag2eval * mag2eval /
mag4eval;
std::cout binder;
出力
(Magnetization^2) * (Magnetization^2) / (Magnetization^4):
0.453 +/- 0.005
32 / 43
36. ALPS チュートリアル{ ALPS の概要
ALPS ライブラリ
●●
ALPS/lattice ライブラリ
「格子構造」は数学的には「グラフ」で表現できる
site , vertex
bond , edge
Boost Graph Library に対する「ラッパー」を提供
XML による「格子構造」の入出力
「ユニットセル」による繰り返し構造の指定
座標, パリティ, 逆格子ベクトルなどの属性
あらかじめ用意されている格子: chain lattice, square
lattice, triangular lattice, honeycomb lattice, simple
cubic lattice, など
33 / 43
37. ALPS チュートリアル{ ALPS の概要
ALPS ライブラリ
●●
有限格子+ ユニットセルの埋め込み
格子の指定
LATTICE name=2D dimension=2
BASIS
VECTOR 1 0 /VECTOR
VECTOR 0.5 1 /VECTOR
/BASIS
/LATTICE
34 / 43
38. ALPS チュートリアル{ ALPS の概要
ALPS ライブラリ
●●
有限格子+ ユニットセルの埋め込み
ユニットセル
UNITCELL name=simple1d dimension=1 vertices=1
EDGE
SOURCE vertex=1 offset=0/TARGET vertex=1 offset
=1/
/EDGE
/UNITCELL
35 / 43
39. ALPS チュートリアル{ ALPS の概要
ALPS ライブラリ
●●
有限格子+ ユニットセルの埋め込み
サイズ, 境界条件の指定
LATTICEGRAPH name = chain lattice
FINITELATTICE
LATTICE ref=chain lattice/
PARAMETER name=L/
EXTENT size =L/
BOUNDARY type=periodic/
/FINITELATTICE
UNITCELL ref=simple1d/
/LATTICEGRAPH
より複雑な格子の作り方
ALPS Lattice HOWTO: http://alps.comp-phys.org/mediawiki/
index.php/Tutorials:LatticeHOWTO/ja
36 / 43
40. ALPS チュートリアル{ ALPS の概要
ALPS ライブラリ
●●
ALPS/model ライブラリ
XML を使ってハミルトニアンを定義する
量子数や演算子の定義
シンボリックな表現を使って, ハミルトニアンのサイト項やボ
ンド項を定義
Jz*Sz(i)*Sz(j)+Jxy/2*(Splus(i)*Sminus(j)+Sminus(i)*Splus(j))
作成した局所ハミルトニアンは行列の形で取り出せる
プラケット項などの多サイトにわたる相互作用には未対応
ALPS Model HOWTO: http://alps.comp-phys.org/mediawiki/
index.php/Tutorials:ModelHOWTO/ja
あらかじめ用意されている模型: spin, boson Hubbard,
hardcore boson, fermion Hubbard, alternative fermion
Hubbard, spinless fermions, Kondo lattice, t-J
37 / 43
41. ALPS チュートリアル{ ALPS の概要
ALPS アプリケーション
●●
ALPS アプリケーション
fulldiag 厳密対角化(全対角化法)
sparsediag 厳密対角化(Lanczos 法)
spinmc 古典モンテカルロ法
loop 量子モンテカルロ法(ループアルゴリズム)
dirloop sse 量子モンテカルロ(向き付きループアルゴリズム)
worm 量子モンテカルロ(ワームアルゴリズム)
dmrg,tebd 密度行列繰り込み群
hirshfye,interaction,hybridization 動的平均場近似のQMC ソルバ
38 / 43
42. ALPS チュートリアル{ ALPS の概要
ALPS アプリケーション
●●
厳密対角化
fulldiag 厳密対角化(全対角化法)
ハウスホルダー法を用いて量子格子模型の全ての
エネルギー固有値と固有状態を計算
任意の温度における物理量を数値誤差の範囲で厳
密に計算
sparsediag 厳密対角化(Lanczos 法)
ランチョス法を用いて, 基底状態と少数の低励起
状態を求める
全磁化などの保存量や系の並進対称性などを利用して, ヒルベ
ルト空間の次元を削減
任意の局所的な演算子の期待値, 対角および非対角演算子の相
関関数, 構造因子などの測定が可能
並列固有値ソルバライブラリRokko と, それに基づく並列厳密
対角化パッケージALPS/Barista を開発中
39 / 43
43. ALPS チュートリアル{ ALPS の概要
ALPS アプリケーション
●●
古典モンテカルロ法
spinmc 古典モンテカルロ法
メトロポリス法あるいはクラスターアルゴリズム
古典スピン模型のモンテカルロシミュレーション
磁場中のイジング模型, XY 模型, ハイゼンベルグ
模型, ポッツ模型
40 / 43