290 likes | 414 Views
ROOT Impossible wishes ?. Alice workshop Sibiu 21 August 2008 Ren é Brun CERN/PH/SFT. http://root.cern.ch. Remarks. People like stable systems People loved PAW once it was frozen in 1994 Must maintain good balance between manpower investment and return value
E N D
ROOT Impossible wishes ? Alice workshop Sibiu 21 August 2008 René Brun CERN/PH/SFT http://root.cern.ch ROOT impossible wishes
Remarks • People like stable systems • People loved PAW once it was frozen in 1994 • Must maintain good balance between manpower investment and return value • Must make a clear boundary around a product • Must make good judgement between what user requires and what developers would like to see • 90% in support/maintenance • 10% in new ideas ROOT Impossible wishes
Automatic Installation script • Click on http://root.cern.ch/boot.html • The script runs locally and • Import the closest root_core binary if found • Otherwise compile root_core.cxx from source • As alternative use LLVM portable byte code and JIT compiler on final target machine. • Once root-core runs, all other modules are automatically imported with the same procedure • One can easily choose a version or/and swap between versions. ROOT Impossible wishes
Automatic updates • Can subscribe to the auto-update service • With checks at start-up time or daily/weekly base • Can go back to a previous version • Can keep multiple versions ROOT Impossible wishes
Remote execution • From web or root_core auto-execute on another machine • eg from laptop run on lxplus@cern.ch • Service already available in 5.20 via “.R lxplus” but requires several extensions Get GUIs and canvases on local machine root > .R lxplus.cern.ch login_script lxplus > new TBrowser lxplus > .R root > dosomething_local root > .R lxplus ROOT Impossible wishes
Session Manager • Save & Restore session objects and state • TTree::Draw generates a TTreeQueryResult • User Interface ROOT Impossible wishes
CINTACLICJIT • In 1998 root >.x myscript.C • Myscript is interpreted by CINT. User compiles with gcc if he/she needs speed • In 2002 root >.x myscript.C+ • Script is automatically compiled by the native compiler and executed (make like system) • In 20xx root >.x myscript.C • Use JIT (Just In Time compiler) to automatically improve the compilation level in critical areas ROOT Impossible wishes
Faster ACLIC memory We are wasting a lot of time in writing/reading .o or .so files to/from disk Cint 10000 l/s c++ 800 l/s ld myapp *.cxx, *.h 100 Mb *.o 110 Mb *.so 76 Mb ROOT Impossible wishes
CINTACLICJIT • CINT compiles 10000 lines of code in <1second, but is 10 to 20 times slower at execution. • gcc takes at least 10 seconds (-O2) and much more if templated code. • The idea with a JIT would be: • to always use a gcc-like and compatible parser • To generate a portable byte code • Compile fast with the lowest level optimisation • Recompile the critical parts with more aggressive optimization at run time but keeping the object file for further reprocessing. • LLVM is a potential parser and JIT candidate ROOT Impossible wishes
CINT possible improvements • Automatic generation of valid C++ code from a CINT macro, ie • Automatic generation of include statements • Syntax checker (“.” replaced by “->”) • Automatic object pre-fetching from a ROOT file. ROOT Impossible wishes
C++ reflexion system • C++ reflexion in language itself (>2015?) • Meanwhile use Reflex with • Removal of C interface stubs • Direct call to C++ code by demangling symbols in shared libs. • Reduction of dictionary sizes ROOT Impossible wishes
I/O possible improvements • Parallel zipping/unzipping in separate thread • Zipping algorithm using fine grain parallelism • Thread safety ROOT Impossible wishes
Trees improvements • Use memory pools to reduce memory fragmentation • Improve TTreeCache self learning system • Automatic adaptation of branches buffer size and compression level. • Performance diagnostics & visualization tools • Support for an analysis language • TVirtualBranch to support a Tree-like analysis on foreign data sets (eg HDF5) • Enhanced TreeViewer ROOT Impossible wishes
Analysis language • Would like to support something like • With automatic C++ code generation + JIT • With automatic parallelization (PROOF) for each file in fileset for each entry in file.Tree for each electron in electrons FillHisto(“pt”,electron.pt ROOT Impossible wishes
Detector Geometry • Document existing algorithms (essential for long term maintenance) • G4ROOT: more experience required. Make the interface automatic given an existing G4 geometry. • CAD systems interface ROOT Impossible wishes
2-D graphics • Already many options, but many more requested by users, eg • Negative axis • Astronomy style projections • GapMinder style graphics (see next slide) • 2-D graphics based on GL only, but non-X11 implies having a remote shell execution. ROOT Impossible wishes
GapMinder style graphics • TGraphTime http://graphs.gapminder.org/world/#$majorMode=chart$is;shi=t;ly=2003;lb=f;il=t;fs=11;al=30;stl=t;st=t;nsl=t;se=t$wst;tts=C$ts;sp=6;ti=2006$zpv;v=1$inc_x;mmid=XCOORDS;iid=phAwcNAVuyj1jiMAkmq1iMg;by=ind$inc_y;mmid=YCOORDS;iid=phAwcNAVuyj2tPLxKvvnNPA;by=ind$inc_s;uniValue=8.21;iid=phAwcNAVuyj0XOoBL%5Fn5tAQ;by=ind$inc_c;uniValue=255;gid=CATID0;by=grp$map_x;scale=log;dataMin=199;dataMax=42642$map_y;scale=lin;dataMin=25;dataMax=84$map_s;sma=49;smi=2.65$cd;bd=0$inds= ROOT Impossible wishes
3-D Graphics ->4,5-D • GL based • 2-D graphics in GL window too • GapMinder-like but in 3-D ROOT Impossible wishes
GUI • One of the most demanding areas • Must follow technology and not standard systems (gks -> phigs ->Motif ->Qt ->?) • GUI based on OpenGL too ! • Plug-ins must work on the web (but 2-d and 3-d graphics too!) • GUI builder extensions (code generators) • GUI must be scriptable and theme-able • HELP + language internalisation • Context menus help access to documentation ROOT Impossible wishes
Cut&paste drag&drop • In v5.20 can already drag&drop objects from a ROOT canvas (including the canvas itself) to another ROOT application. • Would like to drag&drop a ROOT pad/canvas to Powerpoint.This requires a driver for win32 metafile. to another ROOT session or machine to Powerpoint ROOT Impossible wishes
Search/Help system ROOT Impossible wishes
Search/Help system • The class documentation stored in root_help.root (via the existing THtml class), one TKey per class. • Help stored as one single TString per function in html format • Class TGHtml used for rendering ROOT Impossible wishes
TGHtml • This class is a simple html browser. • Plans to extend it (in cooperation with the TkHtml project from Dan Kennedy). An open source project with a very advanced web browser functionality. • Instead of the TK widget, use native ROOT GUI and graphics. ROOT Impossible wishes
Macro Manager/Editor extensions Add syntax highlighting and debugger interface Coding conventions Tooltip help Ideally use a plug-in interface to an existing editor ROOT Impossible wishes
Automatic Parallelism • When running on multi-core systems, automatic parallelization should happen for • Fitting • Zipping/unzipping buffers • TTree::Draw (Process), ie ProofLite by default • Multi-dim density estimators for 3,4,5-D visualization • Thread-safety & thread awareness ROOT Impossible wishes
PROOF ideas • Use the PROOF infrastructure to execute tasks in parallel, eg • proof.Exec(‘mygenerator”,1000000,100) • Make PROOF automatic & invisible Number of events in total Number of events per task ROOT Impossible wishes
Summary-1 • Different forms of parallelism may have a strong implication in manpower. • 18 years ago many people thought that the only solution for scalable computing was parallelism, then the pentium series came and work on parallelism was put in the limbos for a few years. It could be that we will see a new hardware revolution. • Anyhow, time spent on parallelism is never lost. ROOT Impossible wishes
Summary-2 • Hoping that most of these ideas will be implemented in the medium term. • Our target should be to simplify installation and ease of use. • Like Jurgen said in his talk, software products have a longer development time (> 10 years). ROOT will still be used in 10 years, but a new technology may appear. Like humans, software tools die too. ROOT Impossible wishes
Summary ROOT Impossible wishes