Difference between revisions of "Tutorials:Alpsize-09 Scheduler/ja"

From ALPS
Jump to: navigation, search
(Created page with "{{Languages|Tutorials:Alpsize-09_Scheduler}} =ALPS/parapackスケジューラの利用= ALPS/parapackスケジューラの利用には、次の利点があります。 * パラ…")
 
 
Line 9: Line 9:
 
* 交換法のためのアダプタなどがすでに用意されている
 
* 交換法のためのアダプタなどがすでに用意されている
  
==ALPS/parapackスケジューラによる完全ALPS化の流れ==
+
==ALPS/parapackスケジューラによる完全ALPS化==
 
* シミュレーションコードをWorkerクラスにカプセル化する
 
* シミュレーションコードをWorkerクラスにカプセル化する
 
* Workerクラスは、alps::parapack::abstract_worker、alps::parapack::mc_worker、alps::parapack::lattice_mc_worker、alps::parapack::latticemodel_mc_workerのいずれかを継承する
 
* Workerクラスは、alps::parapack::abstract_worker、alps::parapack::mc_worker、alps::parapack::lattice_mc_worker、alps::parapack::latticemodel_mc_workerのいずれかを継承する
Line 24: Line 24:
  
 
==サンプルコード==
 
==サンプルコード==
 
 
* [https://alps.comp-phys.org/svn/alps1/trunk/alps/tutorials/alpsize-09-scheduler/ tutorials/alpsize-09-scheduler/]
 
* [https://alps.comp-phys.org/svn/alps1/trunk/alps/tutorials/alpsize-09-scheduler/ tutorials/alpsize-09-scheduler/]

Latest revision as of 01:55, 2 May 2013

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関数を引き渡す

サンプルコード