DUNE ¡so(ware ¡architecture ¡ DUNE ¡SW ¡and ¡compuDng ¡ David ¡Adams ¡ BNL ¡ February ¡2, ¡2016 ¡
Goals ¡for ¡so(ware ¡ Comprehensibility ¡ Non-‑expert ¡users ¡should ¡be ¡able ¡to ¡understand ¡ • o What ¡is ¡possible ¡to ¡do ¡with ¡our ¡SW ¡ o What ¡a ¡parDcular ¡job ¡does ¡given ¡its ¡configuraDon ¡(i.e. ¡top-‑level ¡FCL ¡file) ¡ o How ¡to ¡reconfigure ¡a ¡job ¡to ¡do ¡something ¡different ¡ o How ¡to ¡add ¡new ¡capabiliDes ¡to ¡the ¡SW ¡ The ¡above ¡should ¡be ¡intuiDve ¡and ¡as ¡easy ¡as ¡reasonably ¡possible ¡ • Extensibility ¡ Should ¡be ¡easy ¡to ¡add ¡new ¡capabiliDes ¡to ¡the ¡SW ¡ • o New ¡ways ¡to ¡carry ¡out ¡old ¡acDons ¡(e.g. ¡a ¡new ¡ZS ¡algorithm) ¡ o And ¡new ¡unforeseen ¡acDons, ¡e.g. ¡wirecell ¡approach ¡ Portability ¡ SW ¡should ¡run ¡and ¡be ¡developed ¡on ¡many ¡plaVorms ¡ • o To ¡use ¡exisDng ¡resources ¡for ¡producDons ¡and ¡development ¡ Most ¡or ¡all ¡capabiliDes ¡available ¡outside ¡of ¡art ¡jobs ¡ • D. ¡Adams, ¡BNL ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡DUNE ¡SW ¡and ¡compuDng ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡DUNE ¡SW ¡architecture ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡February ¡2, ¡2016 ¡ 2 ¡
AcDons ¡and ¡components ¡ DUNE ¡SW ¡is ¡(and ¡will ¡be ¡more) ¡complex ¡ Many ¡stages ¡of ¡simulaDon ¡and ¡reconstrucDon ¡ • Many ¡acDons ¡to ¡carry ¡out ¡in ¡each ¡stage ¡ • Many ¡alternaDves ¡for ¡each ¡acDon ¡ • o AlternaDve ¡may ¡be ¡a ¡separate ¡implementaDon ¡(different ¡code) ¡ o Or ¡different ¡configuraDon ¡(different ¡parameter ¡values) ¡ Hierarchy ¡of ¡acDons ¡(one ¡acDon ¡carries ¡out ¡others) ¡ • Map ¡each ¡acDon ¡to ¡an ¡abstract ¡interface ¡ AlternaDve ¡can ¡be ¡a ¡separate ¡implementaDons ¡ • Allow ¡configuraDon ¡of ¡each ¡implementaDon ¡ In ¡the ¡ art ¡world, ¡construct ¡from ¡an ¡FCL ¡block ¡ • Other ¡FWs ¡could ¡use ¡FCL ¡or ¡some ¡other ¡configuraDon ¡language ¡ • o Easiest ¡to ¡use ¡FCL ¡but ¡could ¡be ¡alternate ¡ctor ¡e.g. ¡from ¡python ¡ Code ¡for ¡each ¡acDon ¡should ¡reside ¡in ¡a ¡separate ¡component ¡ Natural ¡for ¡each ¡component ¡to ¡be ¡a ¡C++ ¡class ¡ • Simple ¡acDon ¡with ¡no ¡configuraDon ¡can ¡be ¡a ¡funcDon ¡ • D. ¡Adams, ¡BNL ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡DUNE ¡SW ¡and ¡compuDng ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡DUNE ¡SW ¡architecture ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡February ¡2, ¡2016 ¡ 3 ¡
Job ¡configuraDon ¡ Job ¡configuraDon ¡specifies ¡how ¡data ¡is ¡to ¡be ¡(or ¡was) ¡processed ¡ InformaDon ¡is ¡in ¡environment ¡and ¡on ¡command ¡line ¡ • Environment ¡specifies ¡which ¡release ¡is ¡used ¡ • For ¡larso( ¡(command ¡ lar ), ¡CL ¡specifies ¡top-‑level ¡FCL ¡file ¡ • o Typically ¡opDons ¡to ¡override ¡input ¡data ¡file, ¡# ¡events, ¡output ¡file ¡names ¡ Most ¡of ¡the ¡job ¡specificaDon ¡is ¡in ¡this ¡top-‑level ¡FCL ¡file ¡ • Very ¡important ¡that ¡FCL ¡is ¡comprehensible, ¡extensible ¡and ¡portable ¡ • D. ¡Adams, ¡BNL ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡DUNE ¡SW ¡and ¡compuDng ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡DUNE ¡SW ¡architecture ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡February ¡2, ¡2016 ¡ 4 ¡
art ¡categories ¡of ¡so(ware ¡components ¡ art ¡Module ¡ Singleton ¡instanDated ¡by ¡FW ¡from ¡FCL ¡ • Called ¡by ¡FW ¡once ¡for ¡each ¡event ¡ • Reads ¡and ¡writes ¡event ¡data ¡ • Cannot ¡easily ¡be ¡used ¡outside ¡art ¡ • art ¡Service ¡ Singleton ¡instanDated ¡by ¡FW ¡from ¡FCL ¡ • Shared ¡instance ¡called ¡by ¡clients ¡(e.g. ¡modules) ¡ • Can ¡be ¡used ¡outside ¡art ¡ • o Issues ¡for ¡run-‑dependent ¡services ¡that ¡use ¡art ¡callbacks ¡ UDlity ¡ InstanDated ¡and ¡called ¡by ¡client ¡ • Typically ¡no ¡FCL ¡and ¡no ¡sharing ¡ • Easily ¡used ¡inside ¡or ¡outside ¡art ¡ • D. ¡Adams, ¡BNL ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡DUNE ¡SW ¡and ¡compuDng ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡DUNE ¡SW ¡architecture ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡February ¡2, ¡2016 ¡ 5 ¡
Where ¡to ¡put ¡the ¡acDon ¡code? ¡ Code ¡in ¡module ¡ Lose ¡portability ¡because ¡module ¡cannot ¡be ¡called ¡outside ¡art ¡ ✗ ¡ • Granularity ¡o(en ¡too ¡large ¡ ✗ ¡ • o Many ¡acDons ¡carried ¡out ¡in ¡one ¡module ¡but ¡would ¡like ¡to ¡have ¡a ¡separate ¡ component ¡for ¡each ¡acDon ¡ Code ¡in ¡uDlity ¡ OK ¡where ¡no ¡configuraDon ¡is ¡required ¡ ✔ ¡ • But ¡o(en ¡have ¡parameters ¡associated ¡with ¡an ¡acDon ¡ ✗ ¡ • Code ¡in ¡service ¡ art ¡provides ¡instanDaDon ¡with ¡FCL ¡configuraDon ¡ ✔ ¡ • Portable ¡(services ¡can ¡be ¡used ¡outside ¡art) ¡ ✔ ¡ • Service ¡can ¡have ¡an ¡abstract ¡interface ¡ ✔ ¡ • Hierarchy ¡allowed ¡(services ¡call ¡other ¡services) ¡ ✔ ¡ • Service ¡only ¡accessible ¡as ¡singleton ¡ ✗ ¡ • o Typically ¡sufficient ¡within ¡a ¡job ¡ o Easy ¡to ¡generalize ¡from ¡service ¡to ¡tool ¡to ¡circumvent ¡this—see ¡later ¡ D. ¡Adams, ¡BNL ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡DUNE ¡SW ¡and ¡compuDng ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡DUNE ¡SW ¡architecture ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡February ¡2, ¡2016 ¡ 6 ¡
AcDon ¡code ¡in ¡service ¡ Of ¡these, ¡service ¡looks ¡best ¡for ¡acDon ¡code ¡ ConfiguraDon ¡ MulDple ¡named ¡FCL ¡blocks ¡can ¡be ¡made ¡for ¡any ¡acDon ¡interface ¡ • o Corresponding ¡to ¡different ¡implementaDons ¡or ¡configuraDons ¡ One ¡name ¡can ¡be ¡mapped ¡to ¡the ¡service ¡interface ¡ • Access ¡ Module ¡or ¡other ¡client ¡accesses ¡this ¡instance ¡with ¡ServiceHandle ¡ • art ¡will ¡instanDate ¡this ¡service ¡with ¡first ¡handle ¡(I ¡think) ¡ • Working ¡outside ¡ art ¡ The ¡above ¡work ¡inside ¡the ¡ art ¡framework ¡or ¡in ¡another ¡framework ¡ • linking ¡against ¡the ¡ art ¡libraries ¡ One ¡might ¡want ¡to ¡work ¡outside ¡art ¡and ¡insist ¡on ¡not ¡linking ¡against ¡ • art ¡libraries ¡ Can ¡handle ¡this ¡by ¡providing ¡alternaDve ¡(e.g. ¡null) ¡implementaDons ¡of ¡ • the ¡three ¡service ¡macros ¡ D. ¡Adams, ¡BNL ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡DUNE ¡SW ¡and ¡compuDng ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡DUNE ¡SW ¡architecture ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡February ¡2, ¡2016 ¡ 7 ¡
Recommend
More recommend