FairRoot ¡ ¡ ¡ Status ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡& ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡Plans ¡ M. ¡Al-‑Turany ¡ ¡ 12/3/13 ¡ GSI ¡+ ¡FAIR ¡Compu@ng ¡Mee@ng ¡
Status ¡ • Works ¡with ¡ ¡C++11 ¡ • Ready ¡for ¡test ¡beams ¡and ¡online ¡analysis ¡ • Re-‑engineering ¡of ¡some ¡base ¡classes ¡is ¡ ongoing ¡(Clean ¡some ¡historical ¡stuff!) ¡ 12/3/13 ¡ GSI ¡+ ¡FAIR ¡Compu@ng ¡Mee@ng ¡
Grid ¡ Hot ¡Topics ¡ ¡ GPU, ¡Xeon, ¡.. ¡ ZMQ ¡ Alice-‑Fair ¡ • Concurrency ¡ ¡ • Grid ¡/Distributed ¡Compu@ng ¡ • FairRoot ¡& ¡ALICE ¡O 2 ¡ ¡ 12/3/13 ¡ GSI ¡+ ¡FAIR ¡Compu@ng ¡Mee@ng ¡
Concurrency: ¡ Where ¡we ¡are ¡now? ¡ • Single ¡threaded ¡single ¡process ¡ROOT ¡event ¡ loop ¡ • User ¡code ¡is ¡in ¡Task ¡hierarchy ¡that ¡runs ¡ sequen@ally ¡ ¡ • Grid/batch ¡jobs ¡run ¡embarrassingly ¡parallel ¡ (one ¡process/core) ¡ 12/3/13 ¡ GSI ¡+ ¡FAIR ¡Compu@ng ¡Mee@ng ¡
What ¡are ¡the ¡Problems ¡ • C ¡and ¡C++ ¡do ¡not ¡offer ¡any ¡support ¡for ¡ concurrency! ¡ • Embarrassingly ¡parallel ¡workload ¡does ¡not ¡ scale ¡ – Memory ¡needed ¡for ¡each ¡process ¡ è ¡ expensive ¡ – How ¡this ¡scheme ¡should ¡work ¡for ¡the ¡Online ¡ clusters? ¡ 12/3/13 ¡ GSI ¡+ ¡FAIR ¡Compu@ng ¡Mee@ng ¡
Mul@-‑processing ¡vs. ¡Mul@-‑threading ¡ • Different ¡processes ¡are ¡ • Error ¡in ¡one ¡thread ¡can ¡ insulated ¡from ¡each ¡ bring ¡down ¡all ¡the ¡ other ¡by ¡the ¡OS, ¡an ¡ threads ¡in ¡the ¡process. ¡ error ¡in ¡one ¡process ¡ cannot ¡bring ¡down ¡ another ¡process. ¡ ¡ • Inter-‑thread ¡ • Inter-‑process ¡ communica@on ¡is ¡fast ¡ communica@on ¡can ¡be ¡ used ¡ ¡across ¡network ¡ 12/3/13 ¡ GSI ¡+ ¡FAIR ¡Compu@ng ¡Mee@ng ¡
Correct ¡balance ¡between ¡reliability ¡ and ¡performance ¡ • Mul@-‑process ¡concept ¡with ¡message ¡queues ¡for ¡ data ¡exchange ¡ – Each ¡"Task" ¡is ¡a ¡separate ¡process, ¡which ¡can ¡be ¡also ¡ mul@threaded, ¡and ¡the ¡data ¡exchange ¡between ¡the ¡ different ¡tasks ¡is ¡done ¡via ¡messages. ¡ ¡ ¡ – Different ¡topologies ¡ ¡of ¡tasks ¡that ¡can ¡be ¡adapted ¡to ¡ the ¡problem ¡itself, ¡and ¡the ¡hardware ¡capabili@es. ¡ ¡ 12/3/13 ¡ GSI ¡+ ¡FAIR ¡Compu@ng ¡Mee@ng ¡
A ¡cloud ¡ ¡that ¡let ¡you ¡connect ¡different ¡ pieces ¡together ¡ BSD ¡sockets ¡API ¡ • Bindings ¡for ¡30+ ¡languages ¡ • Lockless ¡and ¡Fast ¡ • Automa@c ¡re-‑connec@on ¡ ¡ • Mul@plexed ¡I/O ¡ • 12/3/13 ¡ GSI ¡+ ¡FAIR ¡Compu@ng ¡Mee@ng ¡
nanomsg ¡is ¡under ¡development ¡by ¡the ¡original ¡ author ¡of ¡ZeroMQ ¡ Pluggable ¡Transports: ¡ ¡ • – ZeroMQ ¡has ¡no ¡formal ¡API ¡for ¡adding ¡new ¡transports ¡(Infiniband, ¡WebSeockets, ¡etc). ¡ nanomsg ¡defines ¡such ¡API, ¡which ¡simplifies ¡implementa@on ¡of ¡new ¡transports. ¡ Zero-‑Copy: ¡ ¡ • – Becer ¡zero-‑copy ¡support ¡with ¡RDMA ¡and ¡shared ¡memory, ¡which ¡will ¡improve ¡transfer ¡ rates ¡for ¡larger ¡data ¡for ¡inter-‑process ¡communica@on. ¡ Simpler ¡interface: ¡ ¡ • – simplifies ¡some ¡zeromq ¡concepts ¡and ¡API, ¡for ¡example, ¡it ¡no ¡longer ¡needs ¡Context ¡class. ¡ Numerous ¡other ¡improvements, ¡described ¡here: ¡ • hcp://nanomsg.org/documenta@on-‑zeromq.html ¡ FairRoot ¡is ¡independent ¡from ¡the ¡transport ¡library ¡ • – Modular/Pluggable/Switchable ¡transport ¡libraries. ¡ ¡ 12/3/13 ¡ GSI ¡+ ¡FAIR ¡Compu@ng ¡Mee@ng ¡
Integra@ng ¡the ¡exis@ng ¡sogware: ¡ ¡ ¡ ¡ ROOT ¡Files, ¡Lmd ¡Files, ¡Remote ¡event ¡server, ¡… ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ FairMQProcessorTask ¡ ¡ ¡ FairTasks ¡ ¡ ¡ ¡ ¡ ¡ Init() ¡ Init() ¡ FairRunAna ¡ ¡ ¡ Re-‑Init() ¡ FairRootManager ¡ Re-‑Init() ¡ ¡ ¡ ¡ Exec() ¡ ¡ Exec() ¡ Finish() ¡ ¡ Finish() ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ Root ¡(Event ¡loop) ¡ ¡ ¡ ¡ ¡ ¡ZeroMQ ¡ ¡ ¡ ¡ ¡ ¡ ¡ 12/3/13 ¡ GSI ¡+ ¡FAIR ¡Compu@ng ¡Mee@ng ¡ ¡ ¡
FairRoot: ¡ ¡Example ¡3 ¡ 4 ¡-‑Tracking ¡sta@ons ¡with ¡ ¡ a ¡dipole ¡field ¡ ¡ ¡ Simula@on: ¡ ¡ 10k ¡event: ¡ ¡300 ¡Protons/ev ¡ Digi@za@on ¡ ¡ ¡ Reconstruc@on: ¡ Hit/Cluster ¡ ¡Finder ¡ 12/3/13 ¡ GSI ¡+ ¡FAIR ¡Compu@ng ¡Mee@ng ¡
2 ¡x ¡2.4 ¡Xeon ¡Quad ¡core ¡Intel ¡Xeon ¡ ¡ ¡ 16 ¡GB ¡Memory ¡ ¡ 171 ¡s ¡ ¡ 6 ¡* ¡263 ¡MB ¡ TClonesArray ¡ TClonesArray ¡ TClonesArray ¡ TClonesArray ¡ TClonesArray ¡ TClonesArray ¡ TClonesArray ¡ TClonesArray ¡ TClonesArray ¡ TClonesArray ¡ TClonesArray ¡ TClonesArray ¡ Throughput ¡ ¡~ ¡ ¡3500 ¡ev/s ¡ Wall ¡@me: ¡171 ¡s ¡ Total ¡Event: ¡60k ¡events ¡ 12/3/13 ¡ GSI ¡+ ¡FAIR ¡Compu@ng ¡Mee@ng ¡
2 ¡x ¡2.4 ¡Xeon ¡Quad ¡core ¡Intel ¡Xeon ¡ ¡ ¡ 16 ¡GB ¡Memory ¡ ¡ 300 ¡s ¡ ¡ 8 ¡* ¡ ¡263 ¡MB ¡ TClonesArray ¡ TClonesArray ¡ TClonesArray ¡ TClonesArray ¡ TClonesArray ¡ TClonesArray ¡ TClonesArray ¡ TClonesArray ¡ TClonesArray ¡ TClonesArray ¡ TClonesArray ¡ TClonesArray ¡ TClonesArray ¡ TClonesArray ¡ TClonesArray ¡ TClonesArray ¡ Wall ¡@me: ¡300 ¡s ¡ Total ¡Event: ¡80k ¡events ¡ Throughput ¡ ¡~ ¡2660 ¡ev/s ¡ 12/3/13 ¡ GSI ¡+ ¡FAIR ¡Compu@ng ¡Mee@ng ¡
2 ¡x ¡2.4 ¡Xeon ¡Quad ¡core ¡Intel ¡Xeon ¡ ¡ 16 ¡GB ¡Memory ¡ ¡ 4000 ¡ Throughput ¡Event/s ¡ ¡ 3500 ¡ 3000 ¡ 2500 ¡ 2000 ¡ 1500 ¡ 1000 ¡ 500 ¡ 0 ¡ 1 ¡ 2 ¡ 4 ¡ 6 ¡ 8 ¡ 12/3/13 ¡ GSI ¡+ ¡FAIR ¡Compu@ng ¡Mee@ng ¡
2 ¡x ¡2.4 ¡Xeon ¡Quad ¡core ¡Intel ¡Xeon ¡ ¡ 16 ¡GB ¡Memory ¡ ¡ 17.1 ¡s ¡ ¡26.1 ¡ ¡ ¡s ¡ 4x ¡ 2x ¡ ¡77 ¡ ¡Mb ¡ ¡211 ¡Mb ¡ ¡17.3 ¡ ¡ ¡s ¡ 2x ¡ processor processor ¡168 ¡Mb ¡ sampler sampler processor processor sink sink ¡ ¡ Proxy Proxy Proxy Proxy processor processor sampler sampler ¡8.5 ¡ ¡s ¡ ¡7,1 ¡s ¡ sink sink ¡113 ¡Mb ¡ ¡176 ¡ ¡Mb ¡ Push Push Push Push processor processor Throughput ¡ ¡~ ¡7400 ¡ev/s ¡ Wall ¡@me: ¡26.1 ¡s ¡ Total ¡Memory ¡ ¡1355 ¡Mb ¡ Total ¡Event: ¡20k ¡events ¡ 12/3/13 ¡ GSI ¡+ ¡FAIR ¡Compu@ng ¡Mee@ng ¡
2 ¡x ¡2.4 ¡Xeon ¡Quad ¡core ¡Intel ¡Xeon ¡ ¡ 16 ¡GB ¡Memory ¡ ¡ ¡33 ¡ ¡s ¡ ¡36.4 ¡s ¡ ¡22 ¡s ¡ 4x ¡ 3x ¡ 4x ¡ ¡86 ¡Mb ¡ ¡228 ¡Mb ¡ ¡151 ¡Mb ¡ sampler sampler processor processor sink sink Push Push Push Push sampler sampler processor processor ¡ ¡ ¡ ¡ Proxy Proxy Proxy Proxy sink sink sampler sampler processor processor ¡12.8 ¡s ¡ ¡15.6 ¡s ¡ sink sink ¡105 ¡Mb ¡ ¡175Mb ¡ sampler sampler processor processor Throughput ¡ ¡~ ¡10990 ¡ev/s ¡ Wall ¡@me: ¡36.4 ¡s ¡ Total ¡Event: ¡40k ¡events ¡ Gigabit ¡ Ethernet ¡ 12/3/13 ¡ GSI ¡+ ¡FAIR ¡Compu@ng ¡Mee@ng ¡
New ¡building ¡blocks ¡for ¡FairRoot: ¡ • Each ¡en@ty ¡has ¡its ¡own ¡watchdog ¡process ¡ watchdog ¡ • The ¡en@ty ¡is ¡sta@cally ¡inherited ¡and ¡ implement ¡3 ¡interfaces: ¡ ¡ Device ¡ ¡ – IDDSConfig ¡ ¡ • ¡interface ¡to ¡configura@on ¡files ¡ ¡ • used ¡by ¡the ¡watchdog ¡and ¡by ¡the ¡user ¡process ¡ ¡ – IDDSStatus ¡ ¡ ¡ IDDSLog ¡ ¡ • High ¡and ¡low ¡level ¡status ¡info ¡used ¡by ¡the ¡ ¡ watchdog ¡ IDDSConfig ¡ ¡ – IDDSLog ¡ ¡ IDDSStatus ¡ ¡ 12/3/13 ¡ GSI ¡+ ¡FAIR ¡Compu@ng ¡Mee@ng ¡
Recommend
More recommend