GAUDI - Architettura e framework di LHCb Marco Cattaneo, CERN Ottobre 1999 19 ottobre 1999 LHCb - GAUDI 1 Riassunto Introduzione – L’esperimento LHCb – Organizzazione del progetto di Calcolo – Strategia per lo sviluppo del software Architettura GAUDI – Scopo e obiettivi – Scelte del design – Qualche dettaglio Implementazione – Scelte tecnologiche, Tools, ... – Stato del progetto e piani per il futuro 19 ottobre 1999 LHCb - GAUDI 2 LHCb: L’Esperimento LHCb é un esperimento all’LHC dedicato a misure con grande precisione della violazione di CP nel decadimento di Bd e Bs LHC é uno strumento ideale per produrre grandi quantità di Bd e Bs Tutti i canali interessanti sono rari, con branching ratios intorno a 10-5. 19 ottobre 1999 LHCb - GAUDI 3 LHCb: Il Rivelatore 19 ottobre 1999 LHCb - GAUDI 4 LHCb in cifre Collaborazione: ~45 istituti, ~350 persone Costo: 86 MCHF Electronica: ~106 canali Trigger: 4 Livelli. 40 MHz1 MHz 40 kHz 5 kHz 200 Hz Acquisizione Dati: 100 kB/evento. 2-4 GB/s 20 MB/s. 1.5 106 MIPs Stato attuale: – Technical proposal in febbraio 1998 – Approvato in settembre 1998 – Fase R&D per ~2 anni (TDRs nel 2000-2001) 19 ottobre 1999 LHCb - GAUDI 5 Organizzazione del Progetto di Calcolo Steering Group M M C ... Arch. Review M A E ... Technical Review E M A ... C Coordinator A Architect M Project Manager E Project Engineer Assemble Support M Facilities CPU farms Desktop Storage Network System Man. M M Reconstruction DAQ M M Simulation Controls M M Analysis Control Room A Frameworks Architecture, Components, Integration technology, Libraries and toolkits Vendors IT-PDP 19 ottobre 1999 Vendors, IT-ASD Support Build M Software SDE Process Quality Librarian Training Webmaster Vendors IT-IPT .. 6 Strategia di sviluppo per il nuovo software Fase di design con una piccola squadra di 6-8 persone – architetto, amministratore delle librerie, specialisti dei domini con esperienza di design e/o programmazione Stabilire i criteri di base per il design globale Raccogliere User Requirements e scenari, per convalidare il design Fare scelte tecnologiche per implementare i primi prototipi Approccio incrementale allo sviluppo. Release ogni ~4 mesi. Ciclo di sviluppo guidato dagli utenti. Priorità, feedback, etc. Design Review completa (~1/anno) seguita da decisioni strategiche Release accompagnati da documentazione completa Allargare squadra di sviluppo per coprire nuovi domini 19 ottobre 1999 LHCb - GAUDI 7 Architettura GAUDI Vogliamo sviluppare una Architettura e un Framework da usarsi a tutti gli stadi dell’analisi dei dati di LHCb – Trigger livelli 2 e 3, simulazione, ricostruzione, analisi – Le applicazioni di controllo (slow control, run control) non sono comprese Gli utenti (i fisici) svilupperanno le applicazioni personalizzando il framework; – ereditando dalle base classes – usando i componenti del framework – attraverso parametri di configurazione I componenti saranno sviluppate anche usando altri frameworks specializzati (GUI, persistenza, simulazione, . . . ) 19 ottobre 1999 LHCb - GAUDI 8 Una serie di Frameworks e di Toolkits. Un framework principale: GAUDI, vari frameworks specializzati: visualizzazione, persistenza, interattività, simulazione (Geant4), etc. Una serie di librerie di base: STL, CLHEP, etc. (Vocabolario) 19 ottobre 1999 Analisi Simulazione Ricostruzione Una serie di applicazioni costruite sopra i frameworks, che implementano gli algoritmi di fisica. Triggers Struttura del Software Frameworks Toolkits Foundation Libraries LHCb - GAUDI 9 Principali criteri del design Separazione tra “dati” e “algoritmi” Tre tipi di dati: – “event data” (dati ottenuti dalle collisioni delle particelle - vere o simulate) – “detector data” (struttura, geometria, calibrazioni, allineamenti, parametri ambientali,..) – “statistical data” (istogrammi, …) Separazione tra dati “persistenti” e dati “transienti”. – Isolamento del codice degli utenti dalla tecnologia di persistenza – Criteri di ottimizzazione diversi e/o incompatibili. – Transiente come ponte tra diverse rappresentazioni. 19 ottobre 1999 LHCb - GAUDI 10 Principali criteri del design (2) I dati (“data stores”) al centro dell’architettura. – “Algoritmi” come produttori e consumatori di “data objects” – Accoppiamenti minimi tra algoritmi “User code” incapsulato in pochi luoghi specifici: – “Algoritmi”: Codice di fisica – “Convertitori”: Convertono data objects da una rappresentazione a un’altra Ogni componente ha una o più “interfaccie” ben definite, le più “generiche” possibili. » In C++, pure abstract class 19 ottobre 1999 LHCb - GAUDI 11 Object diagram JobOptionsSvc AppManager MessageSvc PObj PObj PObj AlgFactory EventSelector Algorithm1 Algorithm1 Algorithm1 EventDataSvc PersistencySvc PObject PObject PDetElem DetDataSrv Obj1 TObj1 TObjContainer TObjContainer ObjContainer DetPerstySvc Converter Converter Converter TDetElem1 TDetElem1 TDetElem1 Obj3 AnotherPercySvc Alg Properties TObj TObj Obj2 TObj TObj Obj1 Converter Converter Converter T Detector Store HistogramSvc Transient Event Store PObj PObj PObj uses creates navigability 19 ottobre 1999 Hist1 Hist1 Hist1 T Histogram Store LHCb - GAUDI HistPerstySvc PHist PHist Converter 12 Interfaccie EventDataService • Ogni componente implementa una o più interfaccie • Ogni componente usa una o più interfaccie di altri componenti • Un Algoritmo usa molti Servizi DetectorDataService HistogramService IDataProviderSvc IDataProviderSvc IHistogramSvc IAlgorithm ConcreteAlgorithm IMessageSvc MessageService ObjectA ParticlePropertySvc 19 ottobre 1999 IProperty ObjectB IParticlePropertySvc LHCb - GAUDI 13 Algoritmi Real dataflow Data T1 Apparent dataflow Data T1 Data T2, T3 Transient Event Data Store Algorithm A Data T2 Algorithm B Data T4 Data T3, T4 Data T5 • Un Algoritmo sa solo quali dati (tipo e nome) usa come input, e quali creerà come output. • Il solo accoppiamento tra algoritmi è tramite i dati. • L’ordine di esecuzione dei subalgoritmi è la responsabilità dell’algoritmo genitore. Algorithm C A Parent B C Data T5 19 ottobre 1999 LHCb - GAUDI 14 Servizi Agli algoritmi vengono forniti vari servizi Esempi: – – – – – – – – Job Options service (card files) Message reporting service Event/Detector/Histogram data service Event Selector Persistency and Conversion services User Interface (GUI) Particle property service ... 19 ottobre 1999 LHCb - GAUDI IService IProperty Particle Prop. Service PP File IParticlePropertySvc Algorithm Algorithm 15 Event Data Store retrieveObject( “EcalDigits(3)”,...) Fetch() Store() Event Data Service Persistency Service Direct reference creates Transient Event Store 19 ottobre 1999 registerObject( “key”,...) Algorithm • Mantiene in memoria gli oggetti utilizzabili da altri oggetti (servizi, algoritmi). • Recupera oggetti se necessario • Struttura ad albero (file system) • Identificazione tramite indirizzo logico (“/Event/RawEvent/Ecal”) • Lo Store è il proprietario degli oggetti. È sua responsabilità fare il clean-up. LHCb - GAUDI 16 Persistenza Event Data Service Persistency Service Converter Converter Converter Sicb/Zebra SicbCnvSvc Sicb data Files Algorithm Algorithm Transient Event Store AppManager OutputStream OutputStream 19 ottobre 1999 Converter Converter Converter Root I/O RootCnvSvc Root data Files • Varie tecnologie disponibili simultaneamente: Objy, Root, Zebra,… • Convertitori per trasformare gli oggetti da una rappresentazione a un’altra LHCb - GAUDI 17 Data Processing Application Algorithms Algorithms Geom DetElem Projection view: version & event time Detector Description Editors Editors DetElem DetElem DetElem Geom Geom Calib Conversion Conversion services services DetElem Slow Transient detector store Other representations 19 ottobre 1999 DetElem DetElem DetElem ? Update persistency DetElem Geom Calib LHCb - GAUDI DetElem DetElem DetElem Geom Slow Persistent Detector Description (DDDB) Detector Data Producers 18 Visualizzazione Conversion Service Converter Converter Converter Transient Event/ Detector Store Data Item Selector • Selects objects in store 19 ottobre 1999 Representations Store (graphical, textual) LHCb - GAUDI User Interface 19 Configurazione Quali sono i bottoni disponibili? – JobOptions. Semplici da usare. Permettono all’utente di modificare le caratteristiche e parametri di qualsiasi algoritmo o servizio (cards file) – Properties database. Un modo più sofisticato per modificare le caratteristiche degli algoritmi e servizi. – Detector database. Per creare nuove configurazioni del rivelatore o delle condizioni. – Scrivere codice specifico. Per esempio è possibile configurare l’applicazione specificando nelle JobOptions quali algoritmi eseguire e in che ordine. – User interface. Grafica, command line (scripting language), etc. 19 ottobre 1999 LHCb - GAUDI 20 Packages GAUDI Framework • La suddivisione in packages è un problema architetturale. • Grosse conseguenze per: • tempo di compilazione • dipendenze di link • configuration management • taglia dell’eseguibile • ... • Le dipendenze tra packages devono essere approvate dall’architetto. • Evitare dipendenze circolari GaudiExam. (applications) RIO RootCnv (converters) SicbCnv (converters) LHCbAlg (algorithms) DetCnv (converters) Futio (SICB) CernLib HbookCnv LHCbEvent (converters) CLHEP DetDesc (event model) (detect. model) Gaudi (foundations) STL Package group Package dependency optional 19 ottobre 1999 LHCb - GAUDI 21 Implementazione Piattaforme: – WNT, Linux, IBM AIX, HP-UX Tools e Librerie: Design tools Coding rules Code Management Configuration Management Problem tracking Compilers/Debuggers Libraries Documentation Source code documentation 19 ottobre 1999 Visual Thought, Rational Rose Interim LHCb coding conventions, SPIDER Visual Source Safe, CVS CMT Planned to use Remedy Visual C++, GNU EGCS STL, CLHEP, NAG C, HTL, RIO FrameMaker Object Outline, DOC++ LHCb - GAUDI 22 Stato del progetto Sett ‘98 - nominato architetto, riunita squadra di 6 persone Nov 25 ‘98 - review esterna dell’architettura – obiettivi, architecture design document, URD, scenari Feb 8 ‘99 - GAUDI primo release – prima software week con presentazioni e tutorials – pianificazione (insieme agli utenti) del secondo release – ingrandimento della squadra GAUDI Mag 30 ‘99 - GAUDI secondo release – seconda software week … – pianificazione del terzo release – ingrandimento della squadra GAUDI (GEANT4 simulation toolkit) Nov ‘99 - prossimo release e software week Gen ‘00 - seconda review esterna 19 ottobre 1999 LHCb - GAUDI 23 Lavori in corso: Integrazione di GEANT4 Visualizzazione, event display Detector description Algoritmi e tools per l’analisi dei dati Evaluazione Java Collaborazione con LHC++ – Definizione delle interfaccie Prossimamente: Migrazione del programma di ricostruzione 19 ottobre 1999 LHCb - GAUDI 24 Strategia di migrazione Obiettivo finale: tutte le applicazioni esclusivamente in OO Fase di transizione – Incorporare i programmi di ricostruzione e analisi esistenti in GAUDI (wrap FORTRAN) » » » » Rompere il programma esistente in algoritmi indipendenti Sviluppare un modello OO completo dell’evento Scrivere convertitori che permettono l’accesso ai dati nei due formati Problemi: molti convertitori nelle due direzioni, COMMON blocks etc. – Nuovi algoritmi possono essere sviluppati esclusivamente in GAUDI » e.g. Tracking pattern recognition Fase ibrida – C++ e FORTRAN coesistono in un unico programma di ricostruzione » Problemi: 2 detector decriptions, 2 card files, doppia memoria, che formato per l’output? – Rimpiazzare il FORTRAN gradualmente 19 ottobre 1999 LHCb - GAUDI 25 Conclusioni Abbiamo completato il primo anno del viaggio verso OO – L’architettura è definita (interfaccie, componenti) – Due release del framework sono stati fatti, con una funzionalità minima, per provare le varie idee. – Il terzo release, in novembre, avrà una funzionalità sufficiente per incominciare una migrazione dal FORTRAN. Abbiamo bisogno di consigli e critiche – Organizzazione, design fisico, development tools, libraries, foundation libraries, etc. – Decisioni strategiche del design, frameworks e soluzioni esistenti, etc. – Strategia di migrazione Abbiamo bisogno di collaboratori – Integrazione di altri tools nel framework – Perfezionamento di componenti esistenti 19 ottobre 1999 LHCb - GAUDI 26