Contrôle, configuration et acquisition de données à l’Irfu Laboratoire d’Ingénierie Logicielle pour les Applications Scientifiques
Le Lilas Laboratoire d’Ingénierie Logicielle pour les Applications Scientifiques
Ingénierie logicielle pour les projets de l’Irfu simulation visualisation de données analyse de données sci ques gestion de données sci ques acquis n / contrôle & config simulation visualisation de données analyse de données sci ques gestion de données sci ques acquis n / contrôle & config applications
Ingénierie logicielle pour les projets de l’Irfu simulation visualisation de données analyse de données sci ques gestion de données sci ques acquis n / contrôle & config simulation visualisation de données analyse de données sci ques gestion de données sci ques acquis n / contrôle & config applications
Ingénierie logicielle pour les projets de l’Irfu simulation visualisation de données analyse de données sci ques gestion de données sci ques acquis n / contrôle & config simulation visualisation de données analyse de données sci ques gestion de données sci ques acquis n / contrôle & config applications
Ingénierie logicielle pour les projets de l’Irfu simulation visualisation de données analyse de données sci ques gestion de données sci ques acquis n / contrôle & config simulation visualisation de données analyse de données sci ques gestion de données sci ques acquis n / contrôle & config applications
Ingénierie logicielle pour les projets de l’Irfu simulation visualisation de données analyse de données sci ques gestion de données sci ques acquis n / contrôle & config simulation visualisation de données analyse de données sci ques gestion de données sci ques acquis n / contrôle & config applications
Ingénierie logicielle pour les projets de l’Irfu simulation visualisation de données analyse de données sci ques gestion de données sci ques acquis n / contrôle & config simulation visualisation de données analyse de données sci ques gestion de données sci ques acquis n / contrôle & config applications
Ingénierie logicielle pour les projets de l’Irfu embarqué / temps réel systèmes distribués visualisation calcul haute performance frameworks HEP Web / bases de données embarqué / temps réel systèmes distribués visualisation calcul haute performance frameworks HEP Web / bases de données technologies versioningwiki intégration continue mutualisation orientation « framework » versioningwiki intégration continue mutualisation orientation « framework » processus télescopessatellitesdétecteurs stations de calcul grilles de calcul supercalculateurstélescopessatellitesdétecteurs stations de calcul grilles de calcul supercalculateursplateformes CTA, Svom, Miri, Coast, KM3NeT, Herschel, GET, Atlas, CMS, T2K, Minos, Clas12, ILC… simulation visualisation de données analyse de données sci ques gestion de données sci ques acquis n / contrôle & config simulation visualisation de données analyse de données sci ques gestion de données sci ques acquis n / contrôle & config applications
Acquisition, contrôle et configuration Dispositif typique Détecteur Front-end Acquisition embarquée Réseau GbE Ferme de PC Linux Stockage brut Contrôle Monitoring Base de données
Acquisition, contrôle et configuration Framework « Mordicus » : gestion du flot de données Performance Parallelism Computing Farm Intrinsic Parallelism Detection Nodes Standard COTS High performance Switch Fabric
Data Sender Run Control Framework « Mordicus » modules d’acquisition Embedded acq. node Command Line Interface Graphical User Interface Graphical User Interface Embedded acq. node Acquisition state machine & process control Data Filter Data Router Data Storage Monitoring
Run Control Framework « Mordicus » modules de contrôle et configuration Embedded acq. node Electronics Control & Configuration Command Line Interface Graphical User Interface Graphical User Interface Embedded acq. node
Data Sender Run Control Framework « Mordicus » Système d’acquisition: une application distribuée Embedded acq. node Electronics Control & Configuration Command Line Interface Graphical User Interface Graphical User Interface Embedded acq. node Acquisition state machine & process control Data Filter Data Router Data Storage Monitoring
Application distribuée: middleware OO
ClientClientServerServer Contract: Interface Defintion Contract: Code: Client Language Code: Code: Server Language Code: Code: Server Implementation Code: GeneratedGenerated ImplementedImplemented
Mordicus-hw Contrôle & configuration de l’électronique Network EmbeddedEmbedded EmbeddedEmbedded Mordicus-HW – Policy-based register access – Dynamic Remote Registers Communication middleware (ICE) Communication Communication middleware (ICE + SOAP)
Mordicus-hw Contrôle & configuration de l’électronique Mordicus-HW – Policy-based register access – Dynamic Remote Registers ICE Interface & data definitions Embedded C++ library (VxWorks & Linux) Host C++ library (Linux, MacOS) ICE Interface & data definitions Embedded C++ library (VxWorks & Linux) Host C++ library (Linux, MacOS) Node (network) Device (Mem, ASIC…) * ECCECC * RegisterRegister * Bit Field * (C++ templates) (CConfig framework) Optimal collaborative work between electronics and software engineers
Mordicus-ccfg « CompoundConfig » #include "CCfg/CConfig.h" #include "CCfg/Document.h" Ccfg::Document doc("hardware_descr.xcfg"); CCfg::CConfig cfg(doc.getConfig()); CCfg::CConfig agetCfg = cfg("Setup","Hardware")("Device","aget"); int offset = agetCfg ("Register","reg3")("offset"); #include "CCfg/CConfig.h" #include "CCfg/Document.h" Ccfg::Document doc("hardware_descr.xcfg"); CCfg::CConfig cfg(doc.getConfig()); CCfg::CConfig agetCfg = cfg("Setup","Hardware")("Device","aget"); int offset = agetCfg ("Register","reg3")("offset");
Mordicus-acq & Mordicus-ctrl Run control & processus d’acquisition Patch et lancement des processus Icegrid (middleware Ice) Configuration centralisée des processus Machine d’états du run distribuée sur tous les processus Synchronisation des états Gestion des états d’erreur Contrôle de la configuration (RunID ↔ RunData) Délégation des transitions au RC hôte du site Session de contrôle unique, sessions de suivi multiples Mécanismes d’extension Classes C++ « Policy » instanciées dans des « Factory » Organisation en « plugins » Interfaces Ice pour tous les services extensions multi-langages Monitoring Systématisation de la notion de « métrique » Serveur publish/subscribe IceStorm Patch et lancement des processus Icegrid (middleware Ice) Configuration centralisée des processus Machine d’états du run distribuée sur tous les processus Synchronisation des états Gestion des états d’erreur Contrôle de la configuration (RunID ↔ RunData) Délégation des transitions au RC hôte du site Session de contrôle unique, sessions de suivi multiples Mécanismes d’extension Classes C++ « Policy » instanciées dans des « Factory » Organisation en « plugins » Interfaces Ice pour tous les services extensions multi-langages Monitoring Systématisation de la notion de « métrique » Serveur publish/subscribe IceStorm
IHM largement réutilisable
Format de données « Multiframe Metaformat » A DOPTÉ PAR LE G ANIL COMME FORMAT STANDARD POUR LES DONNÉES D ’ ACQUISITION DES EXPÉRIENCES S PIRAL 2
Depuis 2006 processus de développement professionalisé Versioning Wiki Gestion développement en équipe
Depuis 2006 processus de développement professionalisé Intégration continue
Irfu/Sédi/Lilas
Bancs de test hautes performances
Visualisation avec SDVision (ici : simulation de formation de galaxie)
Développement logiciel: une activité en expansion Mise en œuvre de vraies « forges logicielles » Distribution et mises à jours automatisées Intégration plus poussée logiciel-électronique Développement des compétences HPC (GPU, MPI, OpenMP) Développement des interfaces avancées (tablettes, 3DsTR…) Browser-based applications & cloud computing Mise en œuvre de vraies « forges logicielles » Distribution et mises à jours automatisées Intégration plus poussée logiciel-électronique Développement des compétences HPC (GPU, MPI, OpenMP) Développement des interfaces avancées (tablettes, 3DsTR…) Browser-based applications & cloud computing Quelques pistes