三宅 秀樹 (KEK)
Aug. 27
th, 2014
Basf2/gBasf2
講習会@
名古屋大学• GRID
コンピューティング•
GRID
解析の流れ• Belle II
分散コンピューティングシステム概要•
DIRAC
システム• gBasf2
• インストール
• ジョブ投入
(
明日用)
GRID
電力グリッド
•
ネットワークを介した大規模計算• 分散した資源を最大限に有効利用
•
バッチジョブと何が違う?
•
GRID
全体に渡る資源管理• CPU
• 入出力データ
(*)同じ所にあるとは限らない
• セキュリティ
(
認証と承認)
計算機グリッド 極めて重要: ユーザー確認
CA証明書とVO認証
KEK認証局 Belle II collaboration (Belle VO)
•
代表的なGRID
構成要素•
CE: computing element
• バッチシステム + GRID interface
• WN: worker node
• CPU資源 (jobはここで走る)
•
SE: storage element
• (主に)ディスク + GRID interface
•
FC: file catalog
• ファイルの位置情報 (論理的実住所(各SE))
•
VOMS: VO membership service
• Belle VOのメンバーである事を保証
CE
SE
FC
VOMS Proxy: 各サービスに認証情報を提供する”切符”
一定時間のみ有効(DIRACデフォルト: 24時間) 又貸し厳禁
KEK
•
とあるシグナルMC(B
0J/ ψK
S)
を 処理したい•
読むべきデータはどれか?
Site A
Site B
Site C
•
とあるシグナルMC(B
0J/ ψK
S)
を 処理したい•
読むべきデータはどれか?
Site A
Site B
Site C /belle
/user /data /MC
/signal
/B0JpsiKs
/mcprodtest
/file1.mdst.root /file2.mdst.root /file3.mdst.root データセット mcprodtest
GRIDにおいては、データの論理構造は
LFNにより階層的かつユニークに 管理される
データセット: ある条件の下に選択 されたイベント(ファイル)の集合
(e.g. signal MC, skim結果等) LFN: Logical File Name
•
とあるシグナルMC(B
0J/ ψK
S)
を 処理したい•
読むべきデータはどれか?
•
/belle/MC/signal/B0JpsiKs/mcprodtest
•
そのデータはどこにある?
• 個々のファイルは
1
個以上の実体(
レプリカ)
を持つ• レプリカの置き場所はファイルカタログ に登録
Site A
Site B
Site C Site A
•
とあるシグナルMC(B
0J/ ψK
S)
を 処理したい•
読むべきデータはどれか?
•
/belle/MC/signal/B0JpsiKs/mcprodtest
•
そのデータはどこにある?
•
Site A
ψKS
Site A
Site B
Site C
•
とあるシグナルMC(B
0J/ ψK
S)
を 処理したい•
読むべきデータはどれか?
•
/belle/MC/signal/B0JpsiKs/mcprodtest
•
そのデータはどこにある?
•
Site A
•
解析job (basf2)
投入•
Site A CE
でjob
実行Site A
Site B
Site C ψKS
•
とあるシグナルMC(B
0J/ ψK
S)
を処理したい
•
読むべきデータはどれか?
•
/belle/MC/signal/B0JpsiKs/mcprodtest
•
そのデータはどこにある?
•
Site A
•
解析job (basf2)
投入•
Site A CE
でjob
実行•
Site B CE
でjob
実行• Site A SEからSite B WNへのダウンロード
Site A
Site B
Site C ψKS
•
とあるシグナルMC(B
0J/ ψK
S)
を処理したい
•
読むべきデータはどれか?
•
/belle/MC/signal/B0JpsiKs/mcprodtest
•
そのデータはどこにある?
•
Site A
•
解析job (basf2)
投入•
解析job
終了• データ
(ntuple
など)
をSite C SE
にアップロードSite A
Site B
Site C
•
とあるシグナルMC(B
0J/ ψK
S)
を 処理したい•
読むべきデータはどれか?
•
/belle/MC/signal/B0JpsiKs/mcprodtest
•
そのデータはどこにある?
•
Site A
•
解析job (basf2)
投入•
解析job
終了•
解析結果回収•
Site C SE
より、データをローカルにダウンロード
Site A
Site B
Site C
•
とあるシグナルMC(B
0J/ ψK
S)
を 処理したい•
読むべきデータはどれか?
•
/belle/MC/signal/B0JpsiKs/mcprodtest
•
そのデータはどこにある?
•
Site A
•
解析job (basf2)
投入•
解析job
終了•
解析結果回収Site A
Site B
Site C
ファイルカタログ参照、データ操作、ジョブ投入などを サイトそのものの運用も含めて支援するソフトウェア群
GRIDミドルウェア
• 実のところ
GRID
ミドルウェアには様々な方言があり、さらに近年は
クラウドコンピューティングなども人気
•
Belle II
においても色々なタイプの分散コンピューティング資源が
用いられている
• WLCG GRID (Worldwide LHC Computing GRID)
• OSG GRID (Open Science Grid; 主に米国)
• Cloud (学術及び商用クラウド (AmazonEC2など)
• Local cluster (non-GRID; 大学など)
• それぞれのシステムには個別の
インターフェースが必要
…
• Distributed Infrastructure with Remote Agent Control
– Software framework for distributed computing
• Main feature
– Pilot jobs– Workload management overall VO – Extendible (modular structure)
GRID, cloud, and local cluster
LHCbで開発され、
2010年より別組織としてスピンオフ
LCG OSG
• 統合されたUIを提供
• Belle II分散コンピューティングは DIRACベースで行われる
ILC, BES, biomedical…
• LFN
とレプリカの対応関係
ファイルカタログ•
ファイルの情報としてはそれだけでは不足• 実験情報
(Exp, Run, Event
番号)
• 親ファイル
LFN
•
basf2
リリース• データベースリビジョン
• 解析モジュール
SVN
リビジョン•
etc.etc….
•
データに対する付加的な情報(=
メタデータ)
•
ファイル/
データセットの効率的な抽出に威力• 特定
reprocess
バージョンのskim
などData of data
e.g. replication of specific data set or run period for a GRID site
• Main feature
– Integration with GRID security – Secure connection using SSL – Replication of data
• Asynchronous and hierarchical
• ARDA Metadata Grid Application
– Metadata server for GRID environment
GRID環境に特化したカタログサーバー - 現在KISTIにて開発
DIRAC及びAMGAサーバーも分散配置 (KEKサーバーがメイン)
WLCG OSG
gBasf2
• gBasf2 as a wrapper
– Basf2 jobをGRID上で実行
– 必要なデータをWNにダウンロード
– 生成データをSEにアップロードし、カタログに登録
• 単なるジョブ投入ツールでは無く、多数のコマンド群より成る
– ジョブ制御(ジョブ監視、削除など)
– データ管理(レプリカ生成・消去、メタデータ抽出など)
gbasf2
DIRAC AMGA
% gbasf2 steeringfile.py % basf2 steeringfile.py basf2
GRID local
• DIRAC
環境構築+ user job
実行支援•
GRID
システムから見える”job”
• basf2
はpilot job
の上で走る•
実行の流れ•
gbasf2
コマンド実行• 複数
GRID
サイトにPilot job
投入(
特にサイト指定しない場合)
• WNにDIRACクライアントをインストールし、ベンチマーク実行
• 最もスコアの高いサイトを選択
(Matching)
• DIRAC job (basf2helper) 実行
• helper上よりbasf2プロセス実行
pilot basf2helper
error表示に注意 (helperのエラーでも、basf2クラッシュの可能性がある)
• DIRAC
サーバーとの通信を仲立ちする•
Desktop
にインストール•
WN
上にもインストール• Pilot jobの一部
• DIRAC (
クライアント)
• 全
DIRAC
コミュニティで共通に使われるコード• BelleDIRAC
•
Belle II
実験用の拡張モジュール•
gBasf2
もBelleDIRAC
の一部client
Server (KEK)
DIRACクライアントはCERN、
BelleDIRACはKEKよりダウンロードされる BelleDIRAC
DIRAC
• RHEL5
、6
をサポート(Mac
は問題あり?)
• Basf2
環境は不要(
あるとそれなりに便利)
mkdir mygbasf2 && cd mygbasf2
wget https://raw.github.com/DIRACGrid/DIRAC/integration/Core/scripts/dirac-install.py -O dirac-install.py --no-check-certificate
python dirac-install.py -V Belle-KEK source bashrc && dirac-proxy-init -x dirac-configure defaults-Belle-KEK.cfg
source BelleDIRAC/gbasf2/tools/setup gb2_proxy_init –g belle
初回インストールのみ (dirac-installに-r trunkをつけるといわゆるHEADを取ってくる)
毎回必要 (新規ターミナルなど)
左のようにproxyが初期化できない場合
dirac-configure忘れや.globus以下のパーミッション?
See also https://belle2.cc.kek.jp/~twiki/bin/view/Computing/gBasf2
source setup_gbasf2 gb2_proxy_init –g belle
毎回必要 (新規ターミナルなど)
• KEKCC
の場合、既に共通エリアにインストール済みmkdir gbasf2KEK && cd gbasf2KEK
ln –s /sw/belle2/gbasf2/setup_gbasf2 .
初回のみ
[要確認]for Belle1コラボレータ:
idコマンドでb2_belle2グループが見える事
左のようにproxyが初期化できない場合
dirac-configure忘れや.globus以下のパーミッション? ここのバージョンがobsoletedな時には
担当者にクレームを入れてください
gBasf2: terminology
Belle II
コンピューティングにおける重要な概念• Dataset
•
Project
の出力データが書き出される(
入力データの単位でもある)
• 基本は
Project
と1
対1
対応(sub-dataset
も持てる)
• e.g. /belle/user/hideki/MyProject/…
• 実体は
SE
上にある• Project
•
gBasf2 job
の管理単位• e.g. 100個のMC生成 job、1000個の解析job
• 基本的に同じ
basf2 steering file
を用いる• Sandbox
• デスクトップ
– Worker Node
間で小サイズのデータをやり取りする入れ物• Input steering file、 EvtGen decay file、basf2モジュールソースコード…
• Outputログファイル、プロファイルデータ
•
最大10MB
まで• このサイズを超えるデータは
SE
にアップロードし、必要に応じてダウンロード• LFN
で指定したデータはsandbox file
として指定されていてもSE
よりダウンロードされる•
e.g. LFN:/belle/user/hideki/foo/bar.root
TIPS: gBasf2は*.tar.*zもしくは*.t*zを自動展開•
ジョブの実行先•
何も指定しない場合、DIRAC
が良きにはからう•
Pilot
スコア、input data
格納場所などから判断 GRID.SITE.countrygb2_list_site サイト命名規則
LCG.KEK2.jp DIRAC.PNNL.us
•
入出力データの格納場所•
各サイトごとにデフォルト(
ローカル)SE
が定義されている•
gBasf2
の場合、--default_se
オプションで変更可能•
自分のdisk
使用量はgb2_ds_du
コマンドで把握すべしSITE名-SE
SE命名規則
KEK2-SE PNNL-SE gb2_list_se
gBasf2: submission
•
基本的にBasf2
用steering file
がそのまま使える• gBasf2 option
の埋め込みも可能•
e.g. gb2_setuprel = “build-2014-08-01”
• 独自のgb2_*の定義は避けるのが無難
•
可能なオプションの一覧はgbasf2 --help-steering
で得られる
重要事項gBasf2はデスクトップ上にbasf2 setupを要求しない (今のところ)
•
そして投入 (プロジェクト名は変えてください)• Sample steering file
をダウンロードwget https://belle2.cc.kek.jp/~twiki/pub/Computing/GBasf2/example.py.txt -O example.py --no-check-certificate
gbasf2 example.py –p hidekiProject –s build-2014-08-01
Your Job ID
実の所、build-2014-08-01のreconstruction/example/example.pyそのもの
• より実践的な
job
投入• MC production script (MC3.5で用いたもの)を適当に 最新ライブラリに合わせたもの
• うまく動けばラッキー
wget
https://belle2.cc.kek.jp/~twiki/pub/Computing/MCCampaign2014/mcprod_1408_tutorial.tgz --no-check-certificate
Tarballを展開すると、大量のdecayファイルとscriptが見えるはず Run_MCprod_tutorial.shが実行スクリプト
./run_MCprod_tutorial.sh
./run_MCprod_tutorial.sh 0 0 0 0
勿論覚えるべきは実行中に出てくるgbasf2コマンドライン (明日詳しくやります)
オプション -r 10により、10本のMC production jobが投入される 1本辺り1000events (steering fileも参照の事)
•
先程作ったjob
のアウトプットをあれやこれやしてみる•
宿題• https://dirac.cc.kek.jp/DIRAC/Belle-KEK/belle/jobs/JobMonitor/display にアクセス
•
gb2_project_summary
を実行Job Receiver Job
JDL
Sandbox Job
Input
JobDB
Job Receiver Job
Receiver Data
Optimizer Task
Queue
LFC/DFC
Agent Director
checkJob
RB RB RB
Pilot Job
CE
WN
Pilot Agent
Job Wrapper execute
(glexec)
User
Application fork
Matcher
CE JDL
Job JDL
getReplicas WMS
Admin
getProxy
SE
uploadData
VO-box putRequest
Agent Monitor
checkPilot
getSandbox
Job Monitor
DIRAC services LCG services Workload On WN