ALPSチュートリアル(2) ALPSライブラリ
Upcoming SlideShare
Loading in...5
×
 

ALPSチュートリアル(2) ALPSライブラリ

on

  • 856 views

CMSI神戸ハンズオン資料

CMSI神戸ハンズオン資料

Statistics

Views

Total Views
856
Views on SlideShare
649
Embed Views
207

Actions

Likes
0
Downloads
0
Comments
0

1 Embed 207

http://ma.cms-initiative.jp 207

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

ALPSチュートリアル(2) ALPSライブラリ ALPSチュートリアル(2) ALPSライブラリ Presentation Transcript

  • ALPS チュートリアル – ALPS ライブラリ ALPS チュートリアル – ALPS ライブラリ CMSI 神戸ハンズオン ALPS Collaboration http://alps.comp-phys.org/ 2013-11-06 ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ 1 / 13 ‌
  • ALPS チュートリアル – ALPS ライブラリ Outline 1 全体構成 2 ALPS/parameter 3 ALPS/alea 4 ALPS/lattice 5 ALPS/model ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ 2 / 13 ‌
  • ALPS チュートリアル – ALPS ライブラリ 全体構成 ALPS の階層構造 tools XML manipulation Python binding GUI applications MC domain-specific libraries lattice model observables scheduler numerics QMC random ublas ED DMRG DMFT iterative eigenvalue solver Boost library generic C++ C / Fortran graph BLAS serialization XML/XSLT LAPACK MPI HDF5 ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ 3 / 13 ‌
  • ALPS チュートリアル – ALPS ライブラリ 全体構成 サードパーティーのライブラリ BLAS, LAPACK: 線形演算 (行列対角化、特異値分解など) (オ プション) MPI (Message Passing Interface): 並列計算のためのメッセー ジ通信 (オプション) HDF5 (Hierarchical Data Format): プラットフォーム非依存の バイナリファイル格納形式 Boost C++ Library: 乱数, グラフ, シリアル化, など多くの有 用なライブラリ群 ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ 4 / 13 ‌
  • ALPS チュートリアル – ALPS ライブラリ ALPS/parameter ALPS/parameter ライブラリ パラメータの入出力のための ライブラリ 改行, セミコロン, コンマで 変数を区別 四則演算、初等関数 (sin, cos, exp など) が使える π (PI), 虚数単位 (I) などを 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; } 文字で指定 C 風, C++風のコメント { } で囲まない変数は共通パ ラメータ { } で囲んだ変数は異なるパ ラメータセット ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ 5 / 13 ‌
  • ALPS チュートリアル – ALPS ライブラリ ALPS/parameter 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); ... } ... } ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ 6 / 13 ‌
  • ALPS チュートリアル – ALPS ライブラリ ALPS/alea ALPS/alea ライブラリ (1) マルコフ連鎖における平均値, 分散, 自己相関を計算するライ ブラリ alps :: RealObservable mag2 ( " Magnetization ^2 " ); ... mag2 << m * m ; // in each MC step ビンニング解析を用いた平均値, エラー, 自己相関時間の評価 std :: cout << mag2 << std :: endl ; 出力 Magnetization ^2: 1.5 +/ - 0.707; tau = inf WARNING : check error convergence ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ 7 / 13 ‌
  • ALPS チュートリアル – ALPS ライブラリ ALPS/alea ALPS/alea ライブラリ (2) ジャックナイフ法を用いた非線形量のエラー評価 alps :: RealObsevaluator mag2eval ( mag2 ); alps :: RealObsevaluator mag4eval ( mag4 ); alps :: RealObsevaluator binder = mag2eval * mag2eval / mag4eval ; std :: cout << binder ; 出力 ( Magnetization ^2) * ( Magnetization ^2) / ( Magnetization ^4): 0.45 +/ - 0.25 WARNING : check error convergence ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ 8 / 13 ‌
  • ALPS チュートリアル – ALPS ライブラリ ALPS/lattice ALPS/lattice ライブラリ 「格子構造」は数学的には「グラフ」で表現できる site ⇔ vertex bond ⇔ edge Boost Graph Library に対する「ラッパー」を提供 XML による「格子構造」の入出力 「ユニットセル」による繰り返し構造の指定 座標、パリティ、逆格子ベクトルなどの属性 あらかじめ用意されている格子: ”chain lattice”, ”square lattice”, ”triangular lattice”, ”honeycomb lattice”, ”simple cubic lattice”, など “printgraph” で格子のチェック ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ 9 / 13 ‌
  • ALPS チュートリアル – ALPS ライブラリ ALPS/lattice 有限格子 + ユニットセルの埋め込み - 1 格子の指定 < LATTICE name = " 2 D " dimension = " 2 " > < BASIS > < VECTOR > 1 0 </ VECTOR > < VECTOR > 0.5 1 </ VECTOR > </ BASIS > </ LATTICE > ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ 10 / 13 ‌
  • ALPS チュートリアル – ALPS ライブラリ ALPS/lattice 有限格子 + ユニットセルの埋め込み - 2 ユニットセル < UNITCELL name = " simple1d " dimension = " 1 " vertices = " 1"> < EDGE > < SOURCE vertex = " 1 " offset = " 0 " / > < TARGET vertex = " 1 " offset = " 1 " / > </ EDGE > </ UNITCELL > ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ 11 / 13 ‌
  • ALPS チュートリアル – ALPS ライブラリ ALPS/lattice 有限格子 + ユニットセルの埋め込み - 2 サイズ、境界条件の指定 < 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 ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ 12 / 13 ‌
  • ALPS チュートリアル – ALPS ライブラリ ALPS/model ALPS/model ライブラリ XML を使ってハミルトニアンを定義する 量子数や演算子の定義 シンボリックな表現を使って, ハミルトニアンのサイト項やボ ンド項を定義 Jz * Sz ( i )* Sz ( j )+ Jxy /2*( Splus ( i )* Sminus ( j )+ Sminus ( i )* Splus ( j )) 作成した局所ハミルトニアンは行列の形で取り出せる プラケット項などの n 体相互作用は難しい ALPS Model HOWTO: http://alps.comp-phys.org/ mediawiki/index.php/Tutorials:ModelHOWTO あらかじめ用意されている模型: ”spin”, ”boson Hubbard”, ”hardcore boson”, ”fermion Hubbard”, ”alternative fermion Hubbard”, ”spinless fermions”, ”Kondo lattice”, ”t-J” ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ 13 / 13 ‌