Upload
janis-chapman
View
217
Download
0
Tags:
Embed Size (px)
Citation preview
ROOT impossible wishes 1
Alice workshop Sibiu21 August 2008
René Brun CERN/PH/SFT
ROOT Impossible wishes ?
http://root.cern.ch
ROOT Impossible wishes 2
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 3
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 4
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 5
Remote execution
From web or root_core auto-execute on another machine
eg from laptop run on [email protected] Service already available in 5.20 via “.R
lxplus” but requires several extensions
root > .R lxplus.cern.ch login_script
lxplus > new TBrowser
lxplus > .R
root > dosomething_local
root > .R lxplus
Get GUIs and canvases
on local machine
ROOT Impossible wishes 6
Session Manager
Save & Restore session objects and state TTree::Draw generates a
TTreeQueryResult User Interface
ROOT Impossible wishes 7
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 8
*.cxx, *.h100 Mb
c++800 l/s ld myapp
memory
*.so76 Mb
*.o110 Mb
Cint10000 l/s
We are wasting a lot of time in
writing/reading .o or .so files to/from disk
Faster ACLIC
ROOT Impossible wishes 9
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 10
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 11
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 12
I/O possible improvements
Parallel zipping/unzipping in separate thread
Zipping algorithm using fine grain parallelism
Thread safety
ROOT Impossible wishes 13
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 14
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 15
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 16
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 17
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 18
3-D Graphics ->4,5-D
GL based 2-D graphics in GL window too GapMinder-like but in 3-D
ROOT Impossible wishes 19
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 20
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 21
Search/Help system
ROOT Impossible wishes 22
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 23
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 24
Macro Manager/Editor extensions
Add syntax Add syntax highlighting and highlighting and
debugger interfacedebugger interfaceCoding conventionsCoding conventions
Tooltip helpTooltip help
Ideally use a plug-in
interface to an existing
editor
ROOT Impossible wishes 25
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 26
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 27
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 28
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 29
Summary