Some ideas for possible future developments LCG Applications area meeting 8 March 2006 Ren é Brun CERN.

Slides:



Advertisements
Similar presentations
1 Copyright © 2002 Pearson Education, Inc.. 2 Chapter 1 Introduction to Perl and CGI.
Advertisements

Single Sign-On with GRID Certificates Ernest Artiaga (CERN – IT) GridPP 7 th Collaboration Meeting July 2003 July 2003.
05/11/2001 CPT week Natalia Ratnikova, FNAL 1 Software Distribution in CMS Distribution unitFormContent Version of SCRAM managed project.
Introduction To Java Objectives For Today â Introduction To Java â The Java Platform & The (JVM) Java Virtual Machine â Core Java (API) Application Programming.
Java.  Java is an object-oriented programming language.  Java is important to us because Android programming uses Java.  However, Java is much more.
Blueprint RTAGs1 Coherent Software Framework a Proposal LCG meeting CERN- 11 June Ren é Brun ftp://root.cern.ch/root/blueprint.ppt.
O. Stézowski IPN Lyon AGATA Week September 2003 Legnaro Data Analysis – Team #3 ROOT as a framework for AGATA.
70-290: MCSE Guide to Managing a Microsoft Windows Server 2003 Environment Chapter 8: Implementing and Managing Printers.
70-290: MCSE Guide to Managing a Microsoft Windows Server 2003 Environment, Enhanced Chapter 8: Implementing and Managing Printers.
70-290: MCSE Guide to Managing a Microsoft Windows Server 2003 Environment Chapter 8: Implementing and Managing Printers.
Slide 1 of 9 Presenting 24x7 Scheduler The art of computer automation Press PageDown key or click to advance.
SEAL V1 Status 12 February 2003 P. Mato / CERN Shared Environment for Applications at LHC.
Linux Operations and Administration
M. Taimoor Khan * Java Server Pages (JSP) is a server-side programming technology that enables the creation of dynamic,
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 4 Web technologies: HTTP, CGI, PHP,Java applets)
ROOT An object oriented HEP analysis framework.. Computing in Physics Physics = experimental science =>Experiments (e.g. at CERN) Planning phase Physics.
Sikuli Ivailo Dinkov QA Engineer PhoneX Team Telerik QA Academy.
ROOT: A Data Mining Tool from CERN Arun Tripathi and Ravi Kumar 2008 CAS Ratemaking Seminar on Ratemaking 17 March 2008 Cambridge, Massachusetts.
CINT Retrospect ROOT Workshop Mar 2013 Agilent Technologies Masaharu Goto.
Introduction to Hall-D Software February 27, 2009 David Lawrence - JLab.
5 Chapter Five Web Servers. 5 Chapter Objectives Learn about the Microsoft Personal Web Server Software Learn how to improve Web site performance Learn.
Visual Linker Final presentation.
CHAPTER FOUR COMPUTER SOFTWARE.
Tutorial 121 Creating a New Web Forms Page You will find that creating Web Forms is similar to creating traditional Windows applications in Visual Basic.
ROOT impossible wishes1 Alice workshop Sibiu 21 August 2008 Ren é Brun CERN/PH/SFT ROOT Impossible wishes ?
MathCore Engineering AB Experts in Modeling & Simulation WTC.
Java Root IO Part of the FreeHEP Java Library Tony Johnson Mark Dönszelmann
BLU-ICE and the Distributed Control System Constraints for Software Development Strategies Timothy M. McPhillips Stanford Synchrotron Radiation Laboratory.
Analysis of the ROOT Persistence I/O Memory Footprint in LHCb Ivan Valenčík Supervisor Markus Frank 19 th September 2012.
ROOT for Data Analysis1 Intel discussion meeting CERN 5 Oct 2003 Ren é Brun CERN Distributed Data Analysis.
Acat OctoberRene Brun1 Future of Analysis Environments Personal views Rene Brun CERN.
02/09/2010 Industrial Project Course (234313) Virtualization-aware database engine Final Presentation Industrial Project Course (234313) Virtualization-aware.
Rene Brun Booting ROOT with BOOT René Brun, Fons Rademakers CERN Geneva, Switzerland.
ROOT Future1 Some views on the ROOT future ROOT Workshop 2001 June 13 FNAL Ren é Brun CERN.
SEAL Core Libraries and Services CLHEP Workshop 28 January 2003 P. Mato / CERN Shared Environment for Applications at LHC.
H.G.Essel: Go4 - J. Adamczewski, M. Al-Turany, D. Bertini, H.G.Essel, S.Linev CHEP 2003 GSI Online Offline Object Oriented Go4.
GDB Meeting - 10 June 2003 ATLAS Offline Software David R. Quarrie Lawrence Berkeley National Laboratory
TSS Database Inventory. CIRA has… Received and imported the 2002 and 2018 modeling data Decided to initially store only IMPROVE site-specific data Decided.
Enabling Grids for E-sciencE EGEE and gLite are registered trademarks Tools and techniques for managing virtual machine images Andreas.
August 2003 At A Glance The IRC is a platform independent, extensible, and adaptive framework that provides robust, interactive, and distributed control.
A. Aimar - EP/SFT LCG - Software Process & Infrastructure1 SPI Software Process & Infrastructure for LCG Project Overview LCG Application Area Internal.
JavaScript 101 Introduction to Programming. Topics What is programming? The common elements found in most programming languages Introduction to JavaScript.
Chapter 1 Basic Concepts of Operating Systems Introduction Software A program is a sequence of instructions that enables the computer to carry.
D. Duellmann - IT/DB LCG - POOL Project1 The LCG Dictionary and POOL Dirk Duellmann.
A computer contains two major sets of tools, software and hardware. Software is generally divided into Systems software and Applications software. Systems.
Overview, Major Developments, Directions1 ROOT Project Status Major developments Directions NSS05 Conference 25 October Ren é Brun CERN Based on my presentation.
INFSO-RI Enabling Grids for E-sciencE Using of GANGA interface for Athena applications A. Zalite / PNPI.
Axel Naumann. Nada FTE  LLVM + cling would take 4 years  when done, move to next hot-spot in ROOT Axel Naumann ROOT Team Meeting2.
Predrag Buncic (CERN/PH-SFT) Software Packaging: Can Virtualization help?
Feedback from CMS Andrew Lahiff STFC Rutherford Appleton Laboratory Contributions from Christoph Wissing, Bockjoo Kim, Alessandro Degano CernVM Users Workshop.
1 G4UIRoot Isidro González ALICE ROOT /10/2002.
LCG AA Meeting 30 June 2004 Ilka Antcheva Graphics User Interface in ROOT.
20 October 2005 LCG Generator Services monthly meeting, CERN Validation of GENSER & News on GENSER Alexander Toropin LCG Generator Services monthly meeting.
Introduction to Programming 1 1 2Introduction to Java.
2001 ROOT Workshop The Summary. Content Most Requested Request already satisfied Build and Distribution Web Page Information and Documentation.
CVMFS Alessandro De Salvo Outline  CVMFS architecture  CVMFS usage in the.
Go4 v2.2 Status & Overview CHEP 2003
Ideas for ROOT in the future
Applications Active Web Documents Active Web Documents.
Topic 2: Hardware and Software
Current Generation Hypervisor Type 1 Type 2.
Netscape Application Server
Chapter 2: System Structures
IM-pack: Software Installation Using Disk Images
Dirk Düllmann CERN Openlab storage workshop 17th March 2003
CernVM Status Report Predrag Buncic (CERN/PH-SFT).
Computer Science I CSC 135.
Support for ”interactive batch”
Module 01 ETICS Overview ETICS Online Tutorials
Outline Chapter 2 (cont) OS Design OS structure
Presentation transcript:

Some ideas for possible future developments LCG Applications area meeting 8 March 2006 Ren é Brun CERN

René Brun, CERNIdeas for future developments2 Motivation Not the new ROOT logo ! I am not reading in the crystal ball. Simplify users life

René Brun, CERNIdeas for future developments3 ROOT person power CERN + FNAL + JINR Only people working full time on the project

René Brun, CERNIdeas for future developments4 ROOT, like experiment software, is becoming bigger and bigger. Users have to run on many different machines. Applications become more and more distributed. At LHC, ratio developers/users change Observations (1) developers users They require Improved UI More robustness or anything simplifying their life

René Brun, CERNIdeas for future developments5 A considerable amount of time is spent in installing software (up to one day for an expert). Porting to a new platform is non trivial. Dependency problems in case many packages must be installed. Only a small subset of the software is used. The installation may require a huge amount of disk space. Users are scared to download a new version. This is not fitting well with the GRID concept. The GRID should be used to simplify this process and not to make it more complex. Observations (2)

René Brun, CERNIdeas for future developments6 AliceAtlasCMSROOT number of lines in header files classes total ???1500 classes in dict 1669> lines in dict classes c++ lines total lines Classes+dict ??? total f77 lines ???3000 directories < comp time 25’750’90’30’ lines compiled/s (70)71863 LHC software

René Brun, CERNIdeas for future developments7 Problem with dictionaries Today cint/reflex dictionaries are machine dependent. They represent a very substantial fraction of the total code. We could make a very large fraction machine independent. Interface to functions could be reduced with standard ABIs. Dict data structures could be saved to a root file instead of generating the code producing these ds. In this case, one will import only the ds for the classes really used (I/O or interpreter) *.oG_*.oDict % mathcore % mathmore % base % physics % treeplayer % geom % tree % g3d % geompainter % graf % matrix % meta % hist % gl % gpad % histpainter % minuit %

René Brun, CERNIdeas for future developments8 Xdict_c.cxx 704 kl *.so,.lib 88 Mb, 71 Mb Xdict_r.cxx 623 kl Xdict_g.cxx 623kl Xdict_g.o 51Mb, 65 Mb Xdict_r.o 51Mb, 65 Mb *.h 153 kl 6.4 Mb rootcint –cint 56s, 71s rootcint –reflex 58s, 71s rootcint –gccxml 300s, 100s c++ 338s, 90s c++ 420s, 417s c++ 427s, 421s Xdict_c.o 44 Mb, 53 Mb ld 15s, 45s *.o 41 Mb, 114 Mb c s, 1614s *.cxx 855 kl 100 Mb SLC3/gcc3.2.3 Windows/vc++7.1 ROOT source, bins, dict,libs

René Brun, CERNIdeas for future developments9

René Brun, CERNIdeas for future developments10 HoweverSTL containers are very nice. However they have a very high cost in a real large environment. Compiling code with STL is much much slower because of inlining (STL is only in header files). The situation improves a bit with precompiled headers (eg in gcc4), but not much. Object modules are bigger Compiler or linker is able to eliminate duplicate code in ONE object file or shared lib, not across libraries. If you have 100 shared libs, it is likely that you have the code for std:vector push_back or iterators 100 times! In-lining is nice if used with care. It may have an opposite effect, generating more cache misses in a real application. Templates are statically defined and difficult to use in an dynamic interactive environment. Problem with STL Inlining

René Brun, CERNIdeas for future developments11 Source of inefficiencies with Shared Libs fPIC (Position Independent Code) introduces a 20 per cent degradation (10 to 30%) In case of many shared libs, the percentage of classes and code used is small =>swapping (20%) Because shared libs are generated for maximum portability, one cannot use the advanced features of the local processor when compiling. The same optimization level is used everywhere But a very large fraction of the code does not need to be optimized: no gain at execution, big loss when compiling A small fraction of the code should be compiled with the highest possible optimization (10%) May be a factor 2 loss !!!

René Brun, CERNIdeas for future developments12 In the Fortran era, often one subroutine/file Loader takes only the subroutines really referenced. However the percentage of referenced but not used code has increased with time. Shared libs were efficient at a time when code could be shared between different tasks on time sharing systems. Shared libs have solved partially the link time problem. Shared libs are not a solution for the long term. Archive libs are unusable in a large system, but nice to build static modules What to do ?What to do ? Shared Libs vs Archive Libs

René Brun, CERNIdeas for future developments13 Fraction of ROOT code really used in a batch job Shared lib size in bytes

René Brun, CERNIdeas for future developments14 Fraction of ROOT code really used in a job with graphics

René Brun, CERNIdeas for future developments15 %classes used %functions used Fraction of code really used in one program

René Brun, CERNIdeas for future developments16 Can we gain with a better packaging? Yes and no One shared lib per class implies more administration, more dictionaries, more dependencies. 80 shared libs for ROOT is already a lot. 500 would be non sense Plug-in Manager helps

René Brun, CERNIdeas for future developments17 BOOT Introducing A Software Bootstrap system Proposal for a new scenario

René Brun, CERNIdeas for future developments18 A small system to facilitate the life of many users doing mainly data analysis with ROOT and their own classes (users + experiment). It is a very small subset of ROOT (5 to 10 per cent) The same idea could be extended to other domains, like simulation and reconstruction. What is BOOT? ROOTROOT BOOT

René Brun, CERNIdeas for future developments19 A small, easy to install, standalone executable moduleA small, easy to install, standalone executable module ( < 5 Mbytes) One click in the web browser It must be a stable system that can cope with old and new versions of other packages including ROOT itself. It will include: A subset of ROOT I/O, network and Core classes A subset of Reflex A subset of CINT (could also have a python flavor) Possibly a GUI object browser From the BOOT GUI or command line, the referenced software (URL) will be automatically downloaded and locally compiled/cached in a transparent way. What is BOOT?

René Brun, CERNIdeas for future developments20 BOOT must be able to run with the existing codes, may be with reduced possibilities. In the next slides, a few use cases to illustrate the ideas. Do not take the syntax as a final word. BOOT and existing applications

René Brun, CERNIdeas for future developments21 Assumes BOOT already installed on your machine Nothing else on the machine, except the compiler (no ROOT, etc) Import a ROOT file containing histograms, Trees and other classes (usecase1.root) Browse contents of file Draw an histogram BOOT: Use Case 1 ROOTROOT BOOT

René Brun, CERNIdeas for future developments22 Usecase1.root (2 Mbytes) Contains references (URL) to classes in namespace ROOT This is a compressed ROOT file containing the full ROOT source tree automatically built from CVS (25 Mbytes) + ROOT classes dictionary DS generated by Reflex (5 Mbytes) + The full classes documentation Objects generated by the source parser (5 Mbytes) Local cache with the source of the classes really used + binaries for the classes or functions that are automatically generated from the interpreter (like ACLIC mechanism) Use Case 1

René Brun, CERNIdeas for future developments23 usecase1.root Use Case 1 pictures

René Brun, CERNIdeas for future developments24 libGraf … TGraph TGaxis TPave … libX … drawline drawtext … pm libCore … I/O TSystem … libHist … TH1 TH2 … libHistPainter … THistPainter TPainter3DAlgorithms … libGpad … TPad TFrame … h.Draw() CINT local mode (Plug-in Manager) pm Thanks to system.rootmap, we know the libs used by any class

René Brun, CERNIdeas for future developments25 *.cxx, *.h 100 Mb c l/s ldmyapp memory *.so 76 Mb *.o 110 Mb Cint l/s We are waisting a lot of time in writing/reading.o or.so files to/from disk Faster ACLIC

René Brun, CERNIdeas for future developments26 //This code can be interpreted line by line //executed as a script or compiled with C/C++ //after corresponding code generation use ROOT= use YYYY= h = new TH1F(“h’,”example”,100,0,1); v = new LorentzVector(….); gener = new myClass(v.x()); h.Fill(gener.Something()); h.Draw(); Use Case 2 BOOT already installed Want to write the shortest possible program using some classes in namespace ROOT and some classes from another namespace YYYY

René Brun, CERNIdeas for future developments27 use ROOT, YYYY= use ROOT6= use ROOT6::LorentzVector h = new TH1F(“h”,”example”,100,0,1); v = new LorentzVector(….); gener = new myClass(v.x()); h.Fill(gener.Something()); Use Case 3 A variant of Use Case 2 A bug has been found in class LorentzVector of ROOT and fixed in new version ROOT6

René Brun, CERNIdeas for future developments28 use ATLFAST= TFile f(“mcrun.root”); for each entry in f.T for each electron in Electrons if(electron.m_Eta > 1) h.Fill(electron.m_Pt); h.Draw Use Case 4: Specialized Code Generators High Level ROOT Selector understanding named collections in memory (ROOT,STL) or collections in ROOT files. PROOF compliant Extension of TTree::MakeProxy code generator. Do not read referenced but unused branches.

René Brun, CERNIdeas for future developments29 Use Case 5: Dynamic HELP, Dynamic html Source files and scripts are browsable in html format generated dynamically. Combination of new version of THtml and the new GUI widget TGHtml. Both classes use extensively the Reflex dictionary and the pre- digested documentation.

René Brun, CERNIdeas for future developments30 Event data in a Tree C++ scripts Use Case 6: Event Displays In general, Event Displays require the full experiment infrastructure (Pacific, Obelix, WonderLand, Crocodile). This is complex and not good for users and OUTREACH. A data file with the visualization scripts is far more powerful This implies that the GUI must be fully scriptableThis implies that the GUI must be fully scriptable. This is the case for ROOT GUI.

René Brun, CERNIdeas for future developments31 Requirements: work to do libCore has already all the infrastructure for client- server communications and for accessing remote files on the GRID. We must understand how to use subsets of the compilers and linkers to bypass disk I/O. We must understand how to emulate a dynamic linker using pre-compiled objects in memory. We have to investigate various code generation tools and the coupling with an extended version of CINT (and possibly python). We must understand how to use the STL functionality without its penalty. Dynamic templates are also necessary.

René Brun, CERNIdeas for future developments32 Summary Just ideas. Making a firm proposal requires more investigations and prototyping. Many of these ideas could be implemented gradually even without BOOT. It must be clear that the top priority is the consolidation of ROOT to be ready for LHC data taking. This should not be an excuse to not look forward. This work will continue as a background activity. Your comments are welcome