Difference between revisions of "ALPS using the command line/ja"
(→観測量の解析) |
(→入力ファイルの準備) |
||
Line 22: | Line 22: | ||
<!--where each group of assignments inside a block of curly braces {...} indicates a set of parameters for a single simulation. Assignments outside of a block of curly braces are valid globally for all simulation after the point of definition. Strings are given in double quotes, as in "Ising".--> | <!--where each group of assignments inside a block of curly braces {...} indicates a set of parameters for a single simulation. Assignments outside of a block of curly braces are valid globally for all simulation after the point of definition. Strings are given in double quotes, as in "Ising".--> | ||
− | 中括弧{...} | + | 中括弧{...}内で指定することができる複数のパラメータは、ある特定のシミュレーションのためのローカルなパラメータになります。中括弧の外で与えられるパラメータは、全てのシミュレーションに対して有効なグローバルなパラメータになります。文字列を指定するときは"Ising"のように二重引用符を用います。 |
SEEDとWORK_FACTORは特別な意味を持ったパラメータです。 | SEEDとWORK_FACTORは特別な意味を持ったパラメータです。 | ||
Line 46: | Line 46: | ||
<!--which converts a parameterfile into a set of XML files, starting with the prefix given as optional second argument. The default for the second argument is the name as the parameterfile.--> | <!--which converts a parameterfile into a set of XML files, starting with the prefix given as optional second argument. The default for the second argument is the name as the parameterfile.--> | ||
− | + | parameterfileからXMLファイルを生成する際、オプションの2番目の引数[xmlfileprefix]を与えると、xmlfileprefixから始まるXMLファイルが生成されます。省略時は、parameterfileから始まるXMLファイルが生成されます。 | |
<!--The parameter2xml tool checks the existence of output XML files, and ask the user if he/she really wants to overwrite the input files. One can force parameter2xml to overwrite the input XMLs by "-f" option.--> | <!--The parameter2xml tool checks the existence of output XML files, and ask the user if he/she really wants to overwrite the input files. One can force parameter2xml to overwrite the input XMLs by "-f" option.--> | ||
− | + | parameter2xmlは既に存在しているXMLファイルのチェックをおこないます。既存のファイルに上書きしてXMLファイルを生成する場合は、オプション"-f"を付加してください。 | |
= プログラムの起動 = | = プログラムの起動 = |
Revision as of 04:24, 2 May 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ファイルを生成する際、オプションの2番目の引数[xmlfileprefix]を与えると、xmlfileprefixから始まるXMLファイルが生成されます。省略時は、parameterfileから始まるXMLファイルが生成されます。
parameter2xmlは既に存在しているXMLファイルのチェックをおこないます。既存のファイルに上書きして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と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++による解析が必要な場合にのみ使用されます。