BELLEの計算機環境 の計算機環境 樋口岳雄 東京大学大学院理学系研究科物理学専攻 BELLEの計算機と仲良く暮らす の計算機と仲良く暮らす Webサーバー サーバー BELLE実験のホームページ 実験のホームページ http://bsunsrv1.kek.jp 困り事の相談 http://bsunsrv1.kek.jp/HyperNews/get/belle.html BELLEの計算機環境で困ったことがあったときは、 「ホワイトボード」に質問を投稿すると返事がもらえることが ある メイリングリスト BELLE ML [email protected] BELLEグループの全員に配送されるメイリングリスト 無闇に使わない 中尾さんに相談すると登録してもらえる その他のメイリングリスト 自分が加入する detector sub group のリーダーに相談する と登録してもらえる KEK-B計算機 計算機 ログイン 大学の計算機など、BELLE外部からログインできる計算機 bsunsrv1.kek.jp bws01.kek.jp、bws02.kek.jp、bws03.kek.jp … bws14.kek.jp bgate.kek.jp、bgate1.kek.jp ログインには必ず SSH を使う 通信が暗号化されるため、ネットワークを盗聴されても安心 example% slogin bgate.kek.jp –l username どうしても SSH が使えないとき bsunsrv1、bgateおよびbgate1は telnet でもログイン可能 KEK-B計算機 計算機 ファイルコピー KEK-B計算機にファイルをコピーしたり、KEK-B計算機からファ イルを持ってくるには、 scp を使う example% scp [email protected]:file.dat file.dat scp ができる計算機は、外部からログインができる計算機と 同じ どうしても scp が使えないとき bsunsrv1、bgateおよびbgate1は ftp でのアクセスも可能 KEK-B計算機 計算機 FB-LOCAL計算機 計算機 ログインサーバーの内側に存在 外部のネットワークからは直接ロのグインができない 各 detector sub group 用の計算機群 bwgsvd.fblocal.kek.jp、bwgcdc.fblocal.kek.jp … 普段は自分が所属するグループの計算機を使うようにする 筑波実験棟の1階などの計算機群 bws101.fblocal.kek.jp、bws102.fblocal.kek.jp … 筑波実験棟にオフィスがある人が優先的に使える ディレクトリのポリシー /???data と /???home /svddata や /cdcdata など 各 detector sub group 取り決めに従って自由に使ってよい /net/bwg???/???data のように指定しないとアクセスで きない場合がある /b0? テープデバイスにつながっているディレクトリ 非常に大きなデータを保存したいときはここに保存する 無闇にアクセスすることは避ける ディレクトリのポリシー /belle 以下 /belle/cern/pro CERNライブラリ /belle/belle/日付け 日付け BELLEのデータ解析用ソフトウェア 日付けはバージョンを示す /belle/dst/nfs/実験番号/イベントタイプ BELLE実験のデータ /belle/local BELLEローカルのコマンドやインクルードファイルなど バッチジョブの使用法 ジョブの投入 bsub [ –q queue ] [ options … ] command … queueはバッチキューの種類で、省略するとeとみなされる example% bsub –q l ./basf_run.sh Job <123456> is submitted to queue <l>. ================================================================= See /jspool/whoami/bwgdaq.1000.out. and .err for the result. They will not be sent by e-mail. They will be removed after 2weeks, over 200MB after 3days. They will not be backed up. ================================================================= バッチキューの種類 e l 実行実時間が30分以内で終わるジョブ 用 実行の優先順位がきわめて高く、ほに 待機しているジョブがあってもそれを追 い抜いて実行される 指定を省いたときのデフォルト 許可されている実行時間がもっとも長 い 実行実時間が3日、CPU時間が28日を 超えることはできない bwg??? m 実行実時間が4時間以内で終わるジョ ブ用 a 実行実時間が2日以内、CPU時間が7 日以内のジョブ用 mキューと同じ優先順位 実データの解析以外に使ってはいけな い 自分の所属するdetector sub groupの 計算機を使ってデータ解析を行うため のキュー 各sub groupの方針に従うこと たとえはbwgdaqのキューは使って はいけない! バッチジョブの使用法 ジョブの取り消し bkill jobid bjobsコマンドで取り消したいジョブのIDを調べる 実行中のジョブでも待機状態になっているジョブでも取り消せ る ジョブの終了 正常終了、実行時間の時間切れによる強制終了、ユーザー による取り消しなどによってジョブが終了すると、その旨を通 知するメイルが来る バッチジョブの使用法 ジョブを見る bjobs [ -u all ] [ options … ] ほかの人のジョブの様子も知りたいとき example% bjobs JOBID USER STAT QUEUE 123448 whoami RUN e 123449 whoami RUN e 123455 whoami PEND m 123456 whoami PEND l FROM_HOST bws04 bws04 bwgdaq bwgdaq EXEC_HOST bwg03 bcs07 JOB_NAME SUBMIT_TIME ./test.sh Apr 21 00:02 ./test.sh Apr 21 00:03 *ration.sh Apr 21 00:15 *sf_run.sh Apr 21 02:17 RUNは実行中、PENDは待機 長いコマンド名のときは 表示が切り詰められる ジョブのID バッチジョブの使用法 実行中のジョブの覗き見 bpeek jobid 実行結果のチェック /jspool/usernameディレクトリ以下にジョブの標準出力 と標準エラー出力が保存されている もっとも新しいジョブの出力を見るコツ コツ example% cd /jspool/whoami example% ls –lrt *.out -rw-r—-r-1 whoami 1620187 Apr 12 10:57 bwgdaq.98765.out -rw-r—-r-1 whoami 340020 Apr 19 22:33 bwgdaq.4321.out -rw-r—-r-1 whoami 2805916 Apr 21 04:06 bwgdaq.1000.out 一番最後のファイルを見る get_packages_egcs 最新のBELLEモジュールを取得 モジュールを取得 最新の BELLEのソフトは定期的にバージョンが更新されているが、 次の更新のタイミングを待たずに最新のモジュールを取りた いときは、get_packages_egcsコマンドを使う get_packages_egcs module1 [ module2 … ] example% mkdir –p belle/src example% setenv MY_TOP_DIR `pwd`/belle example% source /belle/local/etc/cshrc_general example% cd belle/src example% get_packages_egcs limpid If you do not know the password, call Katayama@+81-298-64-5326 Enter Password: *************** : : Run make to build libraries/executables example% make 解析ことはじめ 樋口岳雄 東京大学大学院理学系研究科物理学専攻 BASFを使った解析の入門 を使った解析の入門 BELLEのデータ のデータ RUN#123 データ構成 ランに関する情報 EVT#001 ラン番号 ランの開始時刻 ラン開始時の加速器の状況 そのランで使用したトリガー条件 EVT#002 EVT#003 EVT#004 イベントに関する情報 そのランに属する情報が、 それぞれのe+e– の衝突イベントごとに 独立に記録される イベント番号 各検出器が検出したヒットに関する情報 各検出器が検出したヒット 最初はヒット信号の羅列だけが格納されている BELLEのデータ処理手順 のデータ処理手順 解析はイベントごとに独立 反応はe+e– の衝突イベントごとに独立 データ処理・解析の手順 最初のデータは信号の羅列 … raw data Reconstruction ヒット信号の羅列を使い易く加工 ヒット信号の較正 荷電粒子の種類を同定 粒子の飛跡などから運動量を再構成 … mini DST Analysis 各collaboratorごとの目的に添った解析 ごとの目的に添った解析 User Analysis Analysis Routine Routine User データ処理・解析の流れ Track Reconstruction Reconstruction Track イベントデータ イベントデータ EVT#12345 EVT#12345 Particle Identification Identification Particle 処理するデータの読み取り 処理した結果の書き出し Detector Calibration Calibration Detector reconstruction 実行順序 Data Formatting Formatting Data analysis 次のイベントへ …繰り返し BELLEのデータ処理 のデータ処理 イベントごとの繰り返し 同じデータ処理・解析手順を、すべてのイベントについて、イ ベントごとに繰り返す 分担処理の徹底 – モジュール化 個々のプログラムの挙動は… データを読む データ処理・解析をする データを保存する ほかのプログラムとの関係はデータの受け渡しのみ Pantherを使用する Pantherの話 の話 BELLEの標準データバンク の標準データバンク データバンクとその内部のデータ構造・フォーマットを定義 データバンクにアクセスする関数を提供 すべてのデータ処理・解析プログラムはPantherを使用 利用したいデータはPantherを使ってバンクにアクセス 処理結果はPantherを使ってバンクに格納 データはイベントごとに保存 検出器のヒット信号など、イベント単位での処理に意味があ るデータの保存に最適 HBOOKの話 の話 ヒストグラムデータの保存ライブラリ 高エネルギー物理学実験における現在の標準 CERNライブラリによって提供される HBOOK形式で保存されたデータはPAWと呼ばれるライブラ リによって内容を調べられる データはイベントの区切りを持たない 全イベントを解析して再構成した J/ψ 中間子の質量分布を 見たいときなどのように、個々のイベントにはあまり意味がな く、集合としてのデータの分布に意味がある場合に最適 HBOOKの話 の話 Tuple データ構造をセットで記憶できる 再構成した J/ψ 中間子の質量とその運動量などのように、デー タをセットで保存できる データ構造は任意に指定が可能 柔軟なデータ処理 運動量がPz < 1.0 GeV/c を満たすJ/ψ 中間子についてのみ、 その質量をプロットする、といったことが、プロットを作る段階で 可能 ヒストグラムよりもデータが詳細 データの値がそのまま保存される メモリの使用量は増える BASFとは とは BASF – BELLE Analysis Framework BELLEにおけるデータ処理の特徴を生かして、解析が簡単 に行えるように支援するソフトウェア イベントごとのループ処理 プログラムのモジュール化を支援 ヒストグラムの保存を支援 Pantherをさらに使い易くする機能 SMPマシンで複数のCPUを使いこなす機能 厳密にはBASFよりも低いレベルでBASFを支えるFPDAというソ フトウェアの機能である 起動と終了 起動 シェルのプロンプトで example% basf と入力すると起動する。正しく起動されると basf> と表示され、BASFはユーザーからの入力待ちの状態となる。 終了 BASFのプロンプトで basf> terminate と入力する。 はじめの一歩 BASFへの入力 への入力 basf> basf> basf> basf> basf> basf> basf> basf> basf> モジュールを「実行順序」に登録 path add_module main mymodule initialize おまじない histogram define myhisto.hbook process_event mydat.panther 1000 処理するイベント数 terminate Pantherデータのファイル名 終了 ヒストグラムを保存する ファイル名 モジュールを書く // mymodule_event.cc #include <iostream> #include “event/BelleEvent.h” #include “tuple/BelleTupleManager.h” おまじない path add_module で実行 終了時に実行 #include “basf/module.h” #include “basf/modue_dscr.h” #include “panther/panther.h” class MyModule : public Module { public: MyModule(); ~MyModule(); public: void init(int*); void term(); おまじない initialize で実行 コマンド terminate で実行 ラン開始のデータを読むごとに実行 void begin_run(BelleEvent*,int*); void end_run(BelleEvent*,int*){} void event(BelleEvent*,int*); 最重要!! 最重要 イベントごとのデータ処理用関数 void hist_def(void); void disp_stat(const chat*){} }; コマンド histogram define で実行 メンバ関数ひとめぐり 初期化のときに実行したいことを書く 通常、initialize コマンドは1回だけ呼ばれる 関数の引数についてはあまり気にしない void MyModule::init(int *status) { std::cout << “Hello BASF” << std::endl; } void MyModute::term() { std::cout << “Good bye” << std::endl; } 終了のときに実行したいことを書く MyModule::init()でfopen()などをしたなら ここでfclose()するとよい begin run レコードをみつけるたびに実行される この関数の中では begin run レコード中のデータ、 すなわちラン番号やラン開始時刻のデータなどが 利用できる void MyModule::begin_run(BelleEvent *evt, int *status) { std::cout << “BEGIN RUN RECORD” << std::endl; } メンバ関数ひとめぐり class MyModule : public Module { …… private: BelleTuple *n_psi, *n_kshort, *n_b0; BelleHistogram *h_tmp; }; // ヒストグラムと tuple の定義 void MyModule::hist_def(void) { extern BelleTupleManager *BASF_Histogram; BelleTupleManager *bt; histogram define で指定したファイルに MyModule::hist_def()で定義した ヒストグラムと tuple が保存される n_psi = bt->ntuple(“PSI”, “PX PY PZ MASS”); n_kshort = bt->ntuple(“KSHORT”, “PX PY PZ MASS”); n_b0 = bt->ntuple(“B0”, “DELTAE MBC”); h_tmp } = bt->histogram(“TMP”, 100, 0.0, 200.0); メンバ関数ひとめぐり ヒストグラムと tuple の定義 n_psi = bt->ntuple(“PSI”, “PX PY PZ MASS”); n_kshort = bt->ntuple(“KSHORT”, “PX PY PZ MASS”); n_b0 = bt->ntuple(“B0”, “DELTAE MBC”); tuple名 h_tmp 各tuple内の データ構造 = bt->histogram(“TMP”, 100, 0.0, 200.0); ヒストグラム名 ヒストグラムの 分割数 下端 上端 メンバ関数ひとめぐり – 中枢 void MyModule::event(BelleEvent *evt, int *status) { …… イベントのデータを読み込むたびに実行される n_psi->column(“PX”, n_psi->column(“PY”, n_psi->column(“PZ”, n_psi->column(“MASS”, n_psi->dumpData(); p_psi.x()); p_psi.y()); p_psi.z()); p_psi.mag()); tupleのデータ構造に変数をセット …… h_tmp->accumulate( tmpvar ); tupleの保存 …… *status = status_of_analysis; } ヒストグラムに値を投入 このモジュールの処理結果をstatusに代入すると、あとで活用できる 使う予定がなければ無理に代入せずともよい モジュールを作る // mymodule.cc …… // in mymodule_event.cc class MyModule : public Module { …… }; …… 作るモジュール名が “mymodule” の例 完全に同じことを書く extern “C” Module_descr* mdcl_mymodule(void) { MyModule *m = new MyModule; Module_descr *d = new Module_descr( “mymodule”, m ); return d; } 作りたいモジュール名を書く モジュールを作る ディレクトリポリシー …/belle/src/mymodule/ モジュール名 mymodule.soが参照する 解析ルーチンの実体 src/ ソースコード置き場 mymodule_event.ccなどを置く mymodule/ インクルードファイル置き場 lib/ libmymodule.a と so/libmymodule.soが置かれる basf_if/ mymodule.soのソース置き場 mymodule.ccなどを置く BASFモジュールの本体 中身はほとんど空っぽ bin/ mymodule.soが置かれる モジュールを作る example% example% example% example% example% example% example% example% example% example% example% example% example% mkdir –p …/belle/src cd …/belle setenv MY_TOP_DIR `pwd` cd …/belle/src source /belle/local/etc/cshrc_general setenv LD_LIBRARY_PATH ${MY_TOP_DIR}/lib/so:${LD_LIBRARY_PATH} cp –r $BELLE_TOP_DIR/src/config . ~nakadair/public/bin/make_template mymodule cd config ./configure cd ../mymodule vi src/mymodule_event.cc make 作っているモジュール名をmymoduleから変える場合は、 直すべき個所に注意 必要に応じて編集 J/ψ recon. module_n module_3 module_2 module_1 pathの の概念 yes B 0 recon. 解析のpath 解析の J/ψ がある? no イベントを捨てて 次のイベントへ モジュールの実行順序を定義 pathは複数用意でき、それらをつなげることが可能 pathは最後のモジュールの実行statusを値に持つ 前のpathのstatusに応じて次につなげるpathを変えられる C言語のif文だと思えばよい 解析のpath 解析の main path BASFが最初にかならず実行するpath BASFコマンド path add_module main module_1 module_2 … path add_module main … module_n path add_module main rec_jpsi main path に次々とモジュールを付けたしている様子 はじめの一歩の例では、main path に mymoduleのみを登録していた はじめの一歩 解析のpath 解析の main以外の 以外のpath 以外の まず好きなpath名でpathを作る path create next 作ったpathにモジュールを登録 path add_module next rec_b0 解析のpath 解析の path条件の設定 条件の設定 BASFコマンド path add_condition main >:0:next path add_condition main ==:0:KILL main pathに対する条件設定 main pathの最後に実行されたモジュールのstatusが 条件判定の対象となる 今の例ではrec_jpsiモジュール 条件判定式 C言語の比較演算子が使える 条件が満たされたときに実行するpath名 “KILL”は「途中で止める」という意味の 特殊なpathシンボル 解析のpath 解析の pathの の値とモジュールのstatus 値とモジュールの Module::event()で設定したstatusがpathの値となる 今の例では… main pathの最後のモジュールが rec_jpsi である main pathの値が1以上ならばnext path につながる モジュール rec_jpsi の中で再構成したJ/ψ中間子の個数を statusにセットするとよい void RecJpsi::event(BelleEvent *evt, int *status) { …… *status = number_of_reconstructed_jpsi; } シミュレーション シミュレーションの意義 解析ルーチンのテスト プログラム開発のためのテストデータ 物理的な結果の予測 粒子の再構成においてはどのくらいの効率が期待できるか、な どを実験データを手にする前に予測できる バックグラウンドの予測 再構成された粒子が本物なのか偽者なのか、実際のデータで は神様しかわからないが、シミュレーションならばわかる 再構成された粒子全体のうちの何%が偽者なのか? シミュレーション 粒子生成モジュール QQ98 BELLEでもっとも一般的な粒子生成モジュール 物理法則に従って粒子の崩壊をシミュレートする 検出器シミュレーションモジュール GSIM 標準的な検出器シミュレーター 実行はきわめて遅い FSIM GSIMほどの正確さはないが、きわめて高速 おおざっぱな解析結果を得たい場合や、解析の方針を立てた い場合に最適 Particle Identification Identification Particle Track Reconstruction Reconstruction Track User Analysis Analysis Routine Routine User 処理するデータの読み取り 処理した結果の書き出し Detector Calibration Calibration Detector QQ/GSIMが生成した が生成した イベントデータ Data Formatting Formatting Data シミュレーションの流れ Detector Simulation Simulation Detector 粒子生成 検出器シミュレーション 実行順序 Particle Generation Generation Particle 次のイベントへ …繰り返し シミュレーション BASFコマンド コマンド path path path path path path add_module add_module add_module add_module add_module add_module 粒子生成モジュール main main main main main main initialize qq98 … gsim … … mymodule 検出器のシミュレーション モジュール コマンド自体はおなじみのものばかり generate_event 100 terminate 発生させるイベント数 データファイルをプロセスするのではなく、 イベントを作るためのコマンド データの保存 データ保存の意義 BASFのpath中のどこかのモジュールに変更やバグがあった とき、それより後のモジュールの結果は無意味となる とくに、自分の解析モジュールは変更・バグがとても多いはず pathの途中でこまめにデータを保存しておけば、そこまでの 部分については、再びBASFでデータ処理する必要がない たとえば… たとえば QQ98の段階で粒子生成を止めてデータを保存 GSIMの段階でシミュレーションを止めてデータを保存 Reconstructionを行ったところでデータを保存 解析は最後にReconstruction部分が保存したデータを使う データの保存 BASFが が保存するデータ形式はPanther形式 形式 保存するデータ形式は BASFが保存するデータはPanther形式なので、 process_event コマンドによってBASF自身によって処理できる ふたたびPantherの話 の話 ふたたび Pantherテーブル テーブル Pantherデータのデータ構造を定義したファイル $BELLE_TOP_DIR/share/tables/?????.tdf データの内容に応じていろいろなファイルがある QQ98の出力データの形式はhepevt.tdfで定義されている Reconstructionの結果はmdst.tdfの定義に従って出力される ひとつのファイル中に、複数のデータ構造が定義されている mdst.tdfの中には27個のデータ構造が定義されている ランに関すること、SVDの出力、CDC、ACC、…などなど ふたたびPantherの話 の話 ふたたび $BELLE_TOP_DIR/share/tables/mdst.tdf Define_table MDST_Run_Head 1 Integer version Integer data_type “MDST v.2.00. Run header (not ready at present) “Mini-DST version no.” “Data type. =1:Read data; =2:GSIM; =3:FSIM.” Integer exp_no “Experiment no.” Integer run_no “Run no.” End_of_define_table MDST_Run_Head …… Define_table MDST_Run_End 1 “Run trailer (not ready at present) Integer exp_no “Experiment no.” Integer run_no “Run no.” End_of_define_table MDST_Run_End …… Define_table MDST_Event 1 Integer Integer : : exp_no run_no “Event header. The info. is extracted from Belle_Event table.” “Experiment no.” “Run no.” このファイルでは、「reconstructionの結果」に関係するデータの データ構造が定義されている データの保存 BASFコマンド コマンド path add_module main qq98 initialize table savebr belle_begin_run table save belle_event table save GEN_HEPEVT output open qq98-result.panther generate_event 100 output close terminate データの保存先 ファイル名 データ保存のときの おなじまい 保存するPantherの データ構造を指定 QQ98の出力は GEN_HEPEVT というデータ構造 データの保存 table save GEN_HEPEVT GEN_HEPEVTはhepevt.tdfの中で定義されている hepevt.tdfの中のデータ構造をすべて保存したいときは、 table save hepevt_all と書いてもよい mdst.tdfには27個の定義が入っているが、 table save mdst_all という簡易記法を使うといちいち書かずに済むので便利 データの保存 J/ψ skim module_n module_3 module_2 module_1 pathの活用 の活用 yes データを保存して 次のイベントへ J/ψ がある? no イベントを捨てて 次のイベントへ Reconstructionモジュールのpathの最後にJ/ψの再構成を 行うモジュールを付け加える J/ψが見つかったらreconstructionしたデータを保存し、さも なければデータを捨てたい 記憶領域の節約 あとで無駄な解析をしなくて済む データの保存 BASFコマンド コマンド path add_condition main >:0:EXIT path add_condition main ==:0:KILL “EXIT”は、データを保存してpathの実行から抜けるための 特殊なpathシンボル table save で指定したすべてのテーブルが保存される “KILL”は、データを保存せずにpathの実行から抜けるため の特殊なpathシンボル (既出) パラメータを渡す モジュールのパラメータ モジュールには実行時にパラメータを渡すことができる 粒子の運動量のthresholdを渡す データファイルのファイル名を渡す…など使い道はいろいろ BASFコマンド コマンド module put_parameter module PARAM¥var パラメータ名 そのモジュールがどういうパラメータを取るかについては 情報を入手してよく研究しておかなくてはいけない パラメータの値 バックスラッシュ(円記号) パラメータを渡す QQ98にパラメータを渡す例 にパラメータを渡す例 path add_module main qq98 module module module module put_parameter put_parameter put_parameter put_parameter qq98 qq98 qq98 qq98 CONTROL_FILE¥belle_bb98.cont DECAY_TABLE¥decay.dec USER_TABLE¥my_original_decay.dec DUMP_EVENT¥1 initialize generate_event 100 terminate 初期化はモジュールにパラメータを 渡してから行うべきである パラメータを調べる BASFコマンド コマンド module inquire_parameter module QQ98の のパラメータを調べる例 basf> path add_module main qq98 basf> module inquire_parameter qq98 7 パラメータの総数 CONTROL_FILE¥QQ control file¥S¥80¥/belle/belle/… DECAY_TABLE¥QQ standard decay table¥S¥80¥/belle/belle/… DECAY_EVENT_TABLE¥QQ standard decay table¥S¥80¥/belle/belle/… LUND_TABLE¥QQ Lund decay table¥S¥80¥/belle/belle/… USER_TABLE¥QQ User decay table¥S¥80¥(undefined) SAVE_BANKS¥Save outputs in BBS banks¥L¥4¥1 DUMP_EVENT¥Event Dump¥L¥4¥0 パラメータの現在の値 パラメータ名 パラメータの簡単な説明 パラメータの型 パラメータのバイト数 パラメータを受け取るモジュール // libmymodule.cc class MyModule : public Module { …… public: int m_someflag; double m_cutval; char m_datafile[80]; }; パラメータはpublicでなくてはいけない // mymodule.cc extern “C” Module_descr* mdcl_mymodule(void) { MyModule *m = new MyModule; パラメータを定義する関数 Module_descr *d = new Module_descr( “mymodule”, m ); d->define_param(“FLAG”, “some flag”, &m->m_someflag); d->define_param(“CUTVAL”, “cut threshold”, &m->m_cutval); d->define_param(“DATA”, “data file name”, 79, m->datafile); return d; } パラメータ名 パラメータの簡単な説明 パラメータのサイズ (char[] 型のときのみ必要) もっと速く – CPUを複数使う を複数使う BASFコマンド コマンド nprocess set ncpu_to_use たとえばCPUを4つ持つ計算機では4以下を指定する 計算機が持っているCPUの個数よりも大きい数を指定すると 逆に遅くなる 無闇に大きくするとほかの人が迷惑するのでほどほどに 環境変数 環境変数BASF_NPROCESSに数字をセットしても同等 注意 bwg???以外のバッチジョブに投入するときは指定しないこと 細かいテクニック module register module モジュールは実行したくないのでpathには入れないが、モ ジュール内の関数などを使いたいときに必要なコマンド とくにQQ98は登録が必要なケースがあるので注意 module display module keyword 指定したモジュールのModule::disp_stat()が呼ばれ る 引数にはkeywordがchar*型の変数として渡される 付録 – BASF スクリプトの参照先 BELLE_TOP_DIR 現在の最新は /belle/belle/b20000408_1025 Particle Generation $BELLE_TOP_DIR/docsrc/examples/qq98/test.script Detector Simulation $BELLE_TOP_DIR/docsrc/examples/gsim200004/test.script Reconstruction $BELLE_TOP_DIR/docsrc/examples/recon200004/test.script Analysis $BELLE_TOP_DIR/docsrc/examples/anal20004/test.script 特別付録 – dBASFへ へ dBASF – Distributed BASF BASF/FPDAはひとつのSMPマシン上で複数のCPUを使って 高速化するソフトウェアであった dBASFはこのフレームワークを拡張 複数の計算機を並行に活用し、データ処理のさらなる高速 化を目指すプロジェクトである 現在鋭意開発中 興味のある方は月に1回開かれているDAQ sub groupのミーティ ングにご参加ください
© Copyright 2024 ExpyDoc