CINT/Reflex workshop 1 Rene Brun 4 May 2005 Summary of the CINT/Reflex workshop 2-6 May 2005

Slides:



Advertisements
Similar presentations
Reflex Dictionary Generator Antti Hahto
Advertisements

Status and Future of CINT Reflex as Reflection Database Object-Oriented CINT Multi-Threading Masaharu Goto, Agilent Philippe Canal, Fermilab Stefan Roiser,
LLVM-based C++ Interpreter For ROOT Axel Naumann, CERN Lukasz Janyst, CERN Philippe Canal, Fermilab.
SEAL Reflex, the new Reflection Library Stefan Roiser (for the LCG/SEAL Dictionary work package) LCG Applications Area Meeting, Oct. 6, 2004.
D. Düllmann - IT/DB LCG - POOL Project1 POOL Release Plan for 2003 Dirk Düllmann LCG Application Area Meeting, 5 th March 2003.
Data Analytics and Dynamic Languages Lee E. Edlefsen, Ph.D. VP of Engineering 1.
Configuration Management
1.3 Executing Programs. How is Computer Code Transformed into an Executable? Interpreters Compilers Hybrid systems.
CVSQL 2 The Design. System Overview System Components CVSQL Server –Three network interfaces –Modular data source provider framework –Decoupled SQL parsing.
SEAL V1 Status 12 February 2003 P. Mato / CERN Shared Environment for Applications at LHC.
XML I/O in ROOT S. Linev, R. Brun, H.G. Essel CHEP 2004.
12.
27 th November 2013A. Valassi – PyCool on ROOT61  Worked in two directions in parallel  New CORAL240 and COOL290 releases for ATLAS  More changes in.
M.Frank CERN/LHCb - Persistency Workshop, Dec.2004 Agenda: 2 separate talks! Don’t mangle together what does not belong together 1.Schema Evolution Tests.
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
CINT & Reflex: New Reflection Data Structures Masa(haru) Goto Agilent Philippe Canal Fermilab/CD Stefan Roiser, Axel Naumann PH/SFT.
CInt Function Stub Removal ROOT Team Meeting CERN Leandro Franco (Joint work with Diego Marcos)
CHEP 2003 March 22-28, 2003 POOL Data Storage, Cache and Conversion Mechanism Motivation Data access Generic model Experience & Conclusions D.Düllmann,
CINT C++ Interpreter update ROOT2001 at Fermi-Lab Masaharu Goto.
The SEAL C++ Reflection System Stefan Roiser (for the LCG/SEAL Dictionary work package) CHEP 2004, 27. Sept Oct., Interlaken.
SEAL Core Libraries and Services CLHEP Workshop 28 January 2003 P. Mato / CERN Shared Environment for Applications at LHC.
1 CS 501 Spring 2004 CS 501: Software Engineering Lecture 2 Software Processes.
THtml  THtml will generate >=1 doc.root file .html pages generated from doc.root files by April (Feb doesn't exist)  Bertrand: extract doc for online.
SEAL Project Core Libraries and Services 18 December 2002 P. Mato / CERN Shared Environment for Applications at LHC.
The POOL Persistency Framework POOL Project Review Introduction & Overview Dirk Düllmann, IT-DB & LCG-POOL LCG Application Area Internal Review October.
Persistent Object References in ROOT1 Persistent Object References in ROOT I/O Status & Proposal CMS-ROOT meeting CERN- November 27 Ren é Brun ftp://root.cern.ch/root/refs.ppt.
LC Software Workshop, May 2009, CERN P. Mato /CERN.
Connecting with Computer Science2 Objectives Learn how software engineering is used to create applications Learn some of the different software engineering.
Chapter 1 Introduction. Chapter 1 -- Introduction2  Def: Compiler --  a program that translates a program written in a language like Pascal, C, PL/I,
STAR Schema Evolution Implementation in ROOT I/O V. Perevoztchikov Brookhaven National Laboratory,USA.
SEAL and PI Project Status LHCC Comprehensive Review of LCG November 2004 P. Mato / CERN.
ROOT Data bases access1 LCG Data base deployment workshop 11 October Ren é Brun CERN.
G.Govi CERN/IT-DB 1 September 26, 2003 POOL Integration, Testing and Release Procedure Integration  Packages structure  External dependencies  Configuration.
Database authentication in CORAL and COOL Database authentication in CORAL and COOL Giacomo Govi Giacomo Govi CERN IT/PSS CERN IT/PSS On behalf of the.
K. Harrison CERN, 3rd March 2004 GANGA CONTRIBUTIONS TO ADA RELEASE IN MAY - Outline of Ganga project - Python support for AJDL - LCG analysis service.
9/28/2005Philippe Canal, ROOT Workshop TTree / SQL Philippe Canal (FNAL) 2005 Root Workshop.
March, PROOF - Parallel ROOT Facility Maarten Ballintijn Bring the KB to the PB not the PB to the KB.
MND review. Main directions of work  Development and support of the Experiment Dashboard Applications - Data management monitoring - Job processing monitoring.
ROOT Team Meeting Axel Naumann CERN PH/SFT Crienftlex Extended Version. And also Director’s Cut. Crienftlex.
D. Duellmann - IT/DB LCG - POOL Project1 The LCG Dictionary and POOL Dirk Duellmann.
CINT & Reflex – The Future CINT’s Future Layout Reflex API Work In Progress: Use Reflex to store dictionary data Smaller memory footprint First step to.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
SEAL Project Status SC2 Meeting 16th April 2003 P. Mato / CERN.
Overview, Major Developments, Directions1 ROOT Project Status Major developments Directions NSS05 Conference 25 October Ren é Brun CERN Based on my presentation.
Summary of persistence discussions with LHCb and LCG/IT POOL team David Malon Argonne National Laboratory Joint ATLAS, LHCb, LCG/IT meeting.
ROOT-CORE Team 1 Philippe Canal Markus Frank I/O Basic I/O, RDBMS interfaces, Trees.
G.Govi CERN/IT-DB 1GridPP7 June30 - July 2, 2003 Data Storage with the POOL persistency framework Motivation Strategy Storage model Storage operation Summary.
EGEE is a project funded by the European Union under contract IST Installation and configuration of gLite services Robert Harakaly, CERN,
D. Duellmann - IT/DB LCG - POOL Project1 Internal Pool Release V0.2 Dirk Duellmann.
Project Work Plan SEAL: Core Libraries and Services 7 January 2003 P. Mato / CERN Shared Environment for Applications at LHC.
Some ideas for possible future developments LCG Applications area meeting 8 March 2006 Ren é Brun CERN.
METADATA IN.NET Presented By Sukumar Manduva. INTRODUCTION  What is Metadata ? Metadata is a binary information which contains the complete description.
What is New in Core Fons Rademakers 1. Library Reorganization Split off from libCore: libRIO libNet libMath (soon) These libraries are now loaded at run-
2001 ROOT Workshop The Summary. Content Most Requested Request already satisfied Build and Distribution Web Page Information and Documentation.
Lecture 1 Page 1 CS 111 Summer 2013 Important OS Properties For real operating systems built and used by real people Differs depending on who you are talking.
ACAT 2008 Axel Naumann (CERN), Philippe Canal (Fermilab) The Role of Interpreters in High Performance Computing.
POOL Based CMS Framework Bill Tanenbaum US-CMS/Fermilab 04/June/2003.
EGEE-III INFSO-RI Enabling Grids for E-sciencE EGEE and gLite are registered trademarks GOCDB4 Gilles Mathieu, RAL-STFC, UK An introduction.
Chapter 25 – Configuration Management 1Chapter 25 Configuration management.
Sung-Dong Kim, Dept. of Computer Engineering, Hansung University Java - Introduction.
Fundamental of Java Programming (630002) Unit – 1 Introduction to Java.
ROOT / Reflex ‘07+ Stefan Roiser Missed last team meeting b/c.
Stefan Roiser CERN / PH / SFT
(on behalf of the POOL team)
Event Data Definition in LHCb
LSA/InCA changes during LS1
Geant4 Geometry Objects Persistency using ROOT
Dirk Düllmann CERN Openlab storage workshop 17th March 2003
Overview Activities from additional UP disciplines are needed to bring a system into being Implementation Testing Deployment Configuration and change management.
SEAL Project Core Libraries and Services
Presentation transcript:

CINT/Reflex workshop 1 Rene Brun 4 May 2005 Summary of the CINT/Reflex workshop 2-6 May

CINT/Reflex workshop 2 Participants Rene Brun Philippe Canal Markus Frank Masa Goto Giacomo Govi Wim Lavrijsen (phone) Pere Mato Fons Rademakers Stefan Roiser

CINT/Reflex workshop 3 Makecint (since CINT early days) X.h CINT DS makecint XDictcint.cxx CINT API CINT Generates stub functions such that compiled code can be called from interpreted code.

CINT/Reflex workshop 4 Rootcint (1996) X.h CINT DS rootcint XDictcint.cxx CINT API ROOT Root meta C++ CINT rootcint extends makecint to generate the I/O functions and ShowMembers ROOT meta classes get information from CINT. They contain additional info useful for the I/O and schema evolution.

CINT/Reflex workshop 5 Dictionaries : situation today X.h X.xml XDictlcg.cxx REFLEX DS CINT DS rootcint lcgdict gccxml XDictcint.cxx CINT API REFLEX API ROOT Root meta C++ CINT cintex pyreflex pyroot

CINT/Reflex workshop 6 Proposal We are proposing to cooperate with Masa for the development of a new API and data structure supporting all the features of the current C++. This package could be based on a merge of the existing Reflex system with the new version of CINT developed by Masa. This new package will be distributed with CINT and usable with non-ROOT applications.

CINT/Reflex workshop 7 Dictionaries : where we would like to go X.h Reflex DS new rootcint Gccxml2reflex/cint XDictcint.cxx Reflex API ROOT Root meta C++ CINT Python

CINT/Reflex workshop 8 New CINT version 6 by Masa Masa is working since one year on a reengineering of the CINT byte-code compiler and executor. Half-way done Simplified architecture Easier team development Unique occasion to introduce a new data structure.

CINT/Reflex workshop 9 Status of Reflex by Stefan Nice poster with the ULM description, see simplified version in next slide. Reflex has been run on the ROOT TGeo classes (80 classes) and cintex used to execute successfully the stressgeom.cxx test.

CINT/Reflex workshop 10 Reflex Model TypeNameScopeName Identification TypeBase ScopeBase Class ArrayFunction Typedef Pointer Namespace TemplateInst FunMemTInst ClassTInst PropListImpl MemberBase Union Pointer2Mem Fundamental Enum DataMember FuncMember Implementation TypeTImpl MemberTImpl TypeTempl Type MemberTemplPropertyList Object User Level Scope Base Member

CINT/Reflex workshop 11 Stressgeom Comparison Test Idea 1.Build Reflex dictionary for ROOT geom package 2.Load Root Geom dictionary information through Cintex into the ROOT framework 3.Run tests/stressgeom.cxx with CINT 4.Compare to native Root performance -In CPU time / Rootmarks -In memory allocation Stressgeom.cxx Generates 1 Mio random points, computes volumes, tracking of 100 K random rays 322 lines of code

CINT/Reflex workshop 12 stressgeom.cxx.diff […] ratio = Double_t(iin)/ Double_t(ngen); ratio = iin/ngen; […] void stressgeom()void stressgeom_reflex() […] gSystem->Load("libGeom");gSystem->Load("liblcg_Cintex"); gSystem->Load(“libGeomRflx”); […]

CINT/Reflex workshop 13 Memory allocation Reflex->Cintex->ROOT ROOT standalone Reflex standalone ~ 3.5 MB ~ 3.9 MB ~ 560 KB

CINT/Reflex workshop 14 ROOTMARKS 0.4%

CINT/Reflex workshop 15 POOL requirements by Markus Fast type resolution for C++ pointers (IsA) Fast access to constructor/destructor ideally compiled Check for dictionary completeness CINT as an interpreter, ROOT for I/O and Reflex need to agree on a common way to name classes, constructors and destructors. std::vector > vs. vector, unsigned long> >

CINT/Reflex workshop 16 POOL requirements by Giacomo - 1 The LCG Dictionary has a very important role in the POOL architecture, in particular in the Storage Manager area. Currently both ROOT and RDBMS backends rely on the seal::reflect package for the implementation of Object streaming. In particular, RDBMS backend uses the reflection to convert data from the C++ layout to the RDBMS entities (Tables and columns). In addition, all of Storage Manager components somehow depend on the seal::reflect in their interfaces (arbitrary object are exchanged between the components as pair of void* + reflect::Class*). Some POOL functionalities (Custom Shape Transformation and Token type checking) are currently based on the dictionary lookup by Guid, which is provided in the seal::reflect package. Other functionality of the DataSvc (type chekcing, casting, memory de- allocation in Ref ) are strongly based on seal::reflect.

CINT/Reflex workshop 17 POOL requirements by Giacomo - 2 From the POOL point of view, the concerns regarding the various proposals for the merge of the Reflex package in Root are the following: The use of dictionary (reflect or reflex) is not confined in the Root backend area. It would be desirable that re-packaging required by the merge SEAL+ROOT minimizes the introduction of unnecessary new dependencies for the users. POOL couldbenefit from the re-engeering of CINT for the use of Reflex data structure: reduced memory consumption of the two dictionaries performance improvement from optimization of some Reflex, CINT and Root code POOL consider acceptable a phase with the system based on Reflex+Cintex+CINT, with the two dictionaries in memory (which corresponds to the reflect+CINTBridge+CINT used until now), to be used until the new CINT based on the Reflex data structure is available. The migration from Reflect to Reflex will require some work in all the Storage Manager component, and in particular in RootStorageSvc, ObjectRelationalAccess, PersistencySvc and DataSvc. POOL functionality requires the possibility to make a dictionary lookup by Guid. It would be desirable to maintain the functionality previously supported in Reflect.

CINT/Reflex workshop 18 Python aspects by Wim Lavrijsen Dictionary completeness (C++) API for modifying dictionaries Fill Reflex dictionary from Python class Access to auto generated methods Access to global namespace Call backs with user parameters Call back for dictionary changes Remove distinction between interpreted and compiled classes. Memory management support Error messages & exceptions

CINT/Reflex workshop 19 CINT & Reflex CINT 6 will use Reflex as the in memory Type database Fermilab and CERN will be responsible for the code modifications needed to adapt CINT to use Reflex. In parallel, Masa Goto will continue the development of the new bytecode compiler.

CINT/Reflex workshop 20 CINT & Reflex ROOT coding conventions have been updated to allow for namespace Reflex will be adapted to the ROOT new coding conventions and uploaded in the ROOT CVS. CINT and Cintex will be uploaded in their own CVS modules.

CINT/Reflex workshop 21 CVS Structure ROOT geant3cintgeant4-VMC cintexcore cint 5.16 mathcorereflex roottest

CINT/Reflex workshop 22 CINT Cvs CINT CINT CINT CINT 6.0 CINT Current Version New experimental byte code compiler enabled (can be selected at run-time) Strip #ifdef OLDIMPLEMENTATION Development version using Reflex Branch Production Version with bug fixes

CINT/Reflex workshop 23 Add Coding Convention (ROOT v5) All ROOT classes will be in the namespace ROOT Class name and Namespace name have to start with an uppercase letter Classes starting with T can be in ROOT namespace Classes within a sub-namespace (like Reflex) do not have to start with T In code class starting with T can be used directly In code class not starting with T, having to be qualified by their sub-namespace. Example: -allowed: Reflex::Object myobject; TObject *obj; -not allowed: using namespace Reflex; Object *obj;

CINT/Reflex workshop 24 Advantages of the merge Advantage for ROOT/POOL users: Better C++ standard compliance Better header files parsing Better performance More reliable system Advantage for CINT development: Easier maintenance Enhanced/simpler Dictionary API Increase support team

CINT/Reflex workshop 25 plans cint, reflex & cintex in ROOT CVS immediately (cint already done) June dev release will have Reflex Cintex MathCore First visible results of the CINT/Reflex merge at the time of the ROOT workshop (28,29,30 september) Pro release in December

CINT/Reflex workshop 26 Summary of Summary The workshop has been a big success and an important opportunity for people to exchange their views and know each other a bit better. Important decisions have been taken A lot of work in front of us. First positive results should be visible very soon.