Difference between revisions of "ALPS using the command line/ja"
(→シミュレーションの実行(シリアル)) |
(→シミュレーションの実行(並列)) |
||
Line 101: | Line 101: | ||
<!--is as easy as running it on a single machine. We will give the example using MPI. After starting the MPI environment (using e.g. lamboot for [http://www.lam-mpi.org/ LAM MPI]), you run the program in parallel using mpirun. In our example, e.g. to run it on four processes you do:--> | <!--is as easy as running it on a single machine. We will give the example using MPI. After starting the MPI environment (using e.g. lamboot for [http://www.lam-mpi.org/ LAM MPI]), you run the program in parallel using mpirun. In our example, e.g. to run it on four processes you do:--> | ||
− | + | MPIによる並列実行方法もシリアル版と同様に非常にシンプルです。MPI環境(例:lamboot [http://www.lam-mpi.org/ LAM MPI])をスタートし、"mpirun"を用いた並列計算をおこないます。4並列で実行する場合の実行構文例を次に示します。 | |
parameter2xml parm job | parameter2xml parm job |
Revision as of 03:55, 5 March 2012
Languages: |
English • 日本語 (ja) • 繁體中文 (zh-tw) • 简体中文 (zh) |
Contents
入力ファイルの準備
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ファイルを生成する際、引数[xmlfileprefix]を与えると、xmlfileprefix名でXMLファイルが生成されます。省略時は、parameterfile名でXMLファイルが生成されます。
parameter2xmlは既に存在しているXMLファイルのチェックをおこないます。上書き生成をおこなう場合は、オプション"-f"を付加してください。
プログラムの起動
シミュレーションの実行(シリアル)
シミュレーションは、まずジョブファイルを生成し、XMLファイルに変換することから始めます。次の例では、ジョブファイル"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 and 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++による解析が必要な場合にのみ使用されます。