Tutorials:Alpsize-09 Scheduler/ja

From ALPS
Jump to: navigation, search

ALPS/parapackスケジューラの利用

ALPS/parapackスケジューラの利用には、次の利点があります。

  • パラメータ並列化が簡単におこなえる
  • PCでもサーバーでもスパコンでも同じように動作する
  • 結果の処理が簡単
  • すでに並列化されているコードの多重並列化も簡単
  • 交換法のためのアダプタなどがすでに用意されている

ALPS/parapackスケジューラによる完全ALPS化

  • シミュレーションコードをWorkerクラスにカプセル化する
  • Workerクラスは、alps::parapack::abstract_worker、alps::parapack::mc_worker、alps::parapack::lattice_mc_worker、alps::parapack::latticemodel_mc_workerのいずれかを継承する
    • mc_worker、lattice_mc_worker、latticemodel_mc_workerはrng_helperを継承しているので、rng_helperの機能が中で使用できる
    • lattice_mc_worker、latticemodel_mc_workerはlattice_helperを継承しているので、lattice_helperの機能が中で使用できる
    • latticemodel_mc_workerはmodel_helperを継承しているので、model_helperの機能が中で使用できる
  • Workerクラスが実装しなければならない関数
    • コンストラクタ、init_obserbablesメンバー関数
    • runメンバー関数
    • is_thermalized&progressメンバ関数
    • save & loadメンバ関数
  • PARAPACK_REGISTER_WORKERマクロを用いてWorkerをスケジューラに登録 (実行時にALGORITHMパラメータでWorkerを選択できる)
  • スケジューラがParametersとObservableSetを準備し、コンストラクタ、init_observables関数、run関数を引き渡す

サンプルコード