Difference between revisions of "ALPS using the command line/ja"

From ALPS
Jump to: navigation, search
(入力ファイルの準備)
(シミュレーションの実行(シリアル))
Line 56: Line 56:
  
 
<!--The simulation is started by first creating the job file, and then giving the name of the XML job file as argument to the program. In our example, the program is called my_program and the sequence for running it is:-->
 
<!--The simulation is started by first creating the job file, and then giving the name of the XML job file as argument to the program. In our example, the program is called my_program and the sequence for running it is:-->
シミュレーションは、まずジョブファイルを生成し、XMLファイルに変換することから始めます。次の例では、ジョブファイル"para"、XMLファイル名"job"として、あるプログラムmy_programを実行させています。
+
ALPSライブラリを利用したプログラムでのシミュレーションは、まずXML形式のジョブファイルを生成することから始まります。次の例では、3つのパラメータセットを含むジョブファイルを"para"、XMLファイル名を"job"として、あるプログラムmy_programを実行させています。
  
   parameter2xml parm job  
+
   parameter2xml parm job
   my_program job.in.xml
+
   my_program job.in.xml
  
 
<!--The results will be stored in a file job.out.xml, which refers to the files job.task1.out.xml, job.task2.out.xml and job.task3.out.xml for the results of the three simulations.-->
 
<!--The results will be stored in a file job.out.xml, which refers to the files job.task1.out.xml, job.task2.out.xml and job.task3.out.xml for the results of the three simulations.-->
Line 69: Line 69:
 
<!--The program takes a number of command line options, to control the behavior of the scheduler. These options are most useful for Monte Carlo simulations.-->
 
<!--The program takes a number of command line options, to control the behavior of the scheduler. These options are most useful for Monte Carlo simulations.-->
  
プログラムは、スケジューラを制御するためのオプションを持ちます。これらのオプションはモンテカルロシミュレーションの利便性を高めます。
+
プログラムには、スケジューラを制御するためのオプションを与えることができます。これらのオプションはモンテカルロシミュレーションの利便性を高めます。
  
 
{| border="1" cellpadding="5" cellspacing="0"
 
{| border="1" cellpadding="5" cellspacing="0"
Line 83: Line 83:
 
|| --checkpoint-time ''checkpointtime''
 
|| --checkpoint-time ''checkpointtime''
 
| align="center"| 1800
 
| align="center"| 1800
|| <!--gives the time (in seconds) after which the program should write a checkpoint.-->プログラムがチェックポイントを生成する時間(秒)
+
|| <!--gives the time (in seconds) after which the program should write a checkpoint.-->プログラムがチェックポイントを生成する時間間隔(秒)
 
|-
 
|-
 
|| --Tmin ''checkingtime''
 
|| --Tmin ''checkingtime''
Line 95: Line 95:
 
|| --write-xml  
 
|| --write-xml  
 
| align="center"|
 
| align="center"|
|| <!--with this option the result will be written to the .out.xml files, while otherwise it is only written to the hdf5-files.-->このオプションが指定されると計算結果は、.out.xmlファイルに書き込まれます。通常はhdf5ファイルに書き込まれます。
+
|| <!--with this option the result will be written to the .out.xml files, while otherwise it is only written to the hdf5-files.-->このオプションが指定されると計算結果は、.out.xmlファイルにも書き込まれます。通常はhdf5ファイルにのみ書き込まれます。
 
|}
 
|}
  

Revision as of 04:36, 2 May 2012


入力ファイルの準備

XMLフォーマットで書かれたジョブ、タスクファイルは可読性に乏しく日常の作業には向いていません。parameter2xmlはテキストで書かれたシミュレーション用のパラメータを容易にXMLフォーマットに変換できるツールです。

parameter2xmlツールはテキストベースで書かれたパラメータをXML形式に変換し、シミュレーションに必要なファイルを生成します。パラメータの記述は、次に示す形式に従います。


 MODEL="Ising";
 SWEEPS=1000;
 THERMALIZATION=100; 
 WORK_FACTOR=L*SWEEPS;
 { L=10; T=0.1; }
 { L=20; T=0.05; }


中括弧{...}内で指定することができる複数のパラメータは、ある特定のシミュレーションのためのローカルなパラメータになります。中括弧の外で与えられるパラメータは、全てのシミュレーションに対して有効なグローバルなパラメータになります。文字列を指定するときは"Ising"のように二重引用符を用います。

SEEDとWORK_FACTORは特別な意味を持ったパラメータです。

Parameter Default Meaning
SEED 0 モンテカルロ計算に使用する乱数種に関する数値です。モンテカルロ計算がおこなわれると、この値は1ずつ増分されます。
WORK_FACTOR 1 シミュレーションのロードバランシングをおこなう負荷分散係数です。


parameter2xmlを実行する構文は次の通りです。

 parameter2xml [-f] parameterfile [xmlfileprefix]

parameterfileからXMLファイルを生成する際、オプションの2番目の引数[xmlfileprefix]を与えると、xmlfileprefixから始まるXMLファイルが生成されます。省略時は、parameterfileから始まるXMLファイルが生成されます。

parameter2xmlは既に存在しているXMLファイルのチェックをおこないます。既存のファイルに上書きしてXMLファイルを生成する場合は、オプション"-f"を付加してください。

プログラムの起動

シミュレーションの実行(シリアル)

ALPSライブラリを利用したプログラムでのシミュレーションは、まずXML形式のジョブファイルを生成することから始まります。次の例では、3つのパラメータセットを含むジョブファイルを"para"、XMLファイル名を"job"として、あるプログラムmy_programを実行させています。

 parameter2xml parm job
 my_program job.in.xml


結果として、3種類のシミュレーション結果"job.task1.out.xml"、"job.task2.out.xml"、"job.task3.out.xml"が格納されている"job.out.xml"が生成されます。

コマンドラインのオプション

プログラムには、スケジューラを制御するためのオプションを与えることができます。これらのオプションはモンテカルロシミュレーションの利便性を高めます。

Option Default Description
--time-limit timelimit infinity プログラムが終了、もしくは最終チェックポイントを生成するまでの時間(秒)
--checkpoint-time checkpointtime 1800 プログラムがチェックポイントを生成する時間間隔(秒)
--Tmin checkingtime 60 スケジューラがシミュレーションが終了したかどうか確認するまでの最小待ち時間(秒)
--Tmax checkingtime 900 スケジューラがシミュレーションが終了したかどうか確認するまでの最大待ち時間(秒)
--write-xml このオプションが指定されると計算結果は、.out.xmlファイルにも書き込まれます。通常はhdf5ファイルにのみ書き込まれます。

シミュレーションの実行(並列)

MPIによる並列実行方法もシリアル版と同様に非常にシンプルです。MPI環境(例:lamboot LAM MPI)をスタートし、"mpirun"を用いた並列計算をおこないます。4並列で実行する場合の実行構文例を次に示します。

 parameter2xml parm job 
 mpirun -np 4 my_program --mpi job.in.xml

コマンドラインのオプション

上記に示した逐次プログラムのオプションに加えて、並列計算用に2つのオプションがあります。

Option Default Description
--mpi MPIモードで実行することを指定します。
--Nmin numprocs 1 シミュレーションに割り当てる最小のプロセッサー数を与えます。
--Nmax numprocs infinity シミュレーションに割り当てる最大のプロセッサー数を与えます。

シミュレーション数より多くのプロセッサー数が指定された場合は、各シミュレーションで、複数のモンテカルロ計算が開始されます。

シミュレーション結果の解析

シミュレーションがおこなわれると、指定した物理量、並びにシミュレーションコードに実装されている物理量が測定され、それぞれのタスクファイルに格納されます。シミュレーションから得られるタスクファイルのアーカイブ化、それぞれのタスクファイル、アーカイブからデータを摘出する方法は次の記述に従います。

convert2xml

シミュレーション出力ファイルには、全計算がおこなわれた後の計算結果がだけが格納されています。ここのモンテカルロステップでの計算の詳細は、各チェックポイント情報を格納しているチェックポイントファイルをXML形式に変換することによって知ることが可能です。convert2xmlツールを次のように使用します。

 convert2xml run-file

この操作によってモンテカルロ計算から摘出された情報を含む、XML形式のタスクファイルが生成されます。


観測量の解析

コマンドライン用の解析プログラムとして、dirloop_sse_evalute、spin_mc_evaluate、worm_evaluate、fulldiag_evaluate、qwl_evaluateがあります。(dirloop_sse_evaluate、spinmc_evaluate、worm_evaluateの3つは同じ構文です。)使用方法は、次の通りです。

spinmc_evalute [--write-xml] job.task1.out.xml [job.task2.out.xml ... ]

格納されているモンテカルロのデータからシミュレーション中では計算されない比熱、圧縮率等の追加物理量を計算します。オプション"--write-xml"を使用すると、すべての情報が.out.xmlファイルに書き込まれます。この指定が無い場合、計算結果はhdf5ファイルにのみ出力されます。

fulldiag_evaluateとqwl_evaluateの解析プログラムに関しては、 QWL EDを参照してください。


解析プログラムの構文はそれぞれ非常にシンプルで、直感的に生成、修正が可能です。次に示す例は、bosonic Hubbardモデルのシミュレーションで得られた粒子数n,n2の期待値を読み込み、圧縮率の期待値を計算し、チェックポイントに戻す処理をおこなっています。

#include <alps/scheduler.h>
#include <alps/alea.h>
 
void evaluate(const boost::filesystem::path& p, std::ostream& out) {
  alps::ProcessList nowhere;
  alps::scheduler::MCSimulation sim(nowhere,p);
 
  // read in parameters
  alps::Parameters parms=sim.get_parameters();
  double beta=parms.defined("beta") ? static_cast<double>(parms["beta"]) : (1./static_cast<double>(parms["T"]));             
 
  // determine compressibility
  alps::RealObsevaluator n  = sim.get_measurements()["Particle number"];
  alps::RealObsevaluator n2 = sim.get_measurements()["Particle number^2"];
  alps::RealObsevaluator kappa= beta*(n2 - n*n);  
  kappa.rename("Compressibility");
 
  // write compressibility back to checkpoint  
  sim << kappa;
  sim.checkpoint(p);
}
 
int main(int argc, char** argv)
{
  alps::scheduler::BasicFactory<alps::scheduler::MCSimulation,alps::scheduler::DummyMCRun> factory;
  alps::scheduler::init(factory);
  boost::filesystem::path p(argv[1],boost::filesystem::native);
  evaluate(p,std::cout);
}

ALPS2は、Pythonを使用することで、データの解析が大変容易になりました。上記のC++によるサンプルはC++による解析が必要な場合にのみ使用されます。