+ All Categories
Home > Documents > ROOT PoW 2018 - SFT · • Redesign for modern, modular CMake • Late build of sub-packages •...

ROOT PoW 2018 - SFT · • Redesign for modern, modular CMake • Late build of sub-packages •...

Date post: 18-Jul-2020
Category:
Upload: others
View: 4 times
Download: 0 times
Share this document with a friend
49
ROOT 2018 EP-SFT, Axel Naumann, 2018-03-19
Transcript
Page 1: ROOT PoW 2018 - SFT · • Redesign for modern, modular CMake • Late build of sub-packages • Deprecate parts of ROOT that have not had build support with CMake 42. Monitoring

ROOT 2018EP-SFT, Axel Naumann, 2018-03-19

Page 2: ROOT PoW 2018 - SFT · • Redesign for modern, modular CMake • Late build of sub-packages • Deprecate parts of ROOT that have not had build support with CMake 42. Monitoring

Who is ROOT?• Kim Albertsson

• Guilherme Amadio

• Bertrand Bellenot

• Philippe Canal

• Olivier Couet

• Enrico Guiraud

• Lorenzo Moneta

• Axel Naumann

2

• Danilo Piparo

• Oksana Shadura

• Yuka Takahashi

• Enric Tejedor

• Xavier Valls

• Vassil Vassilev

• Stefan Wunsch

Page 3: ROOT PoW 2018 - SFT · • Redesign for modern, modular CMake • Late build of sub-packages • Deprecate parts of ROOT that have not had build support with CMake 42. Monitoring

Main Contributors

• Brian Bockelman

• Zhe Zhang

• Sergey Linev

• Marsupial

3

Page 4: ROOT PoW 2018 - SFT · • Redesign for modern, modular CMake • Late build of sub-packages • Deprecate parts of ROOT that have not had build support with CMake 42. Monitoring

Alive?

• From OpenHub: “Activity level is relative to all projects on Open Hub. Only a small percentage of projects on Open Hub will display the Very High icon. Many important, highly regarded and popular projects may show lower activity levels”

4https://www.openhub.net/p/ROOT

Page 5: ROOT PoW 2018 - SFT · • Redesign for modern, modular CMake • Late build of sub-packages • Deprecate parts of ROOT that have not had build support with CMake 42. Monitoring

Jira, Coverity

• 1230 open ROOT issues

• + Coverity (about 1000 issues)

5

+ backlog of 600 issues2017

Page 6: ROOT PoW 2018 - SFT · • Redesign for modern, modular CMake • Late build of sub-packages • Deprecate parts of ROOT that have not had build support with CMake 42. Monitoring

50 100 150 200 250 300Day

20

40

60

80

100

120

140

Post

s / d

ay

Forum

• Almost 50 posts per day

• More and more users

6

2017

Page 7: ROOT PoW 2018 - SFT · • Redesign for modern, modular CMake • Late build of sub-packages • Deprecate parts of ROOT that have not had build support with CMake 42. Monitoring

ROOT & Experiments 2017

• ROOT Planning: regular meeting for two-way communication

• Invitations, presentations at experiments’ software weeks

• Inter-experiment Machine Learning meetings

• Participation at experiments’ software reviews

7

Page 8: ROOT PoW 2018 - SFT · • Redesign for modern, modular CMake • Late build of sub-packages • Deprecate parts of ROOT that have not had build support with CMake 42. Monitoring

Courses 2017

• Two full day ROOT CERN courses

• Sanofi Pasteur

• Summer student workshop

• Experiments’ intro tutorials

• CERN School of Computing

8

Page 9: ROOT PoW 2018 - SFT · • Redesign for modern, modular CMake • Late build of sub-packages • Deprecate parts of ROOT that have not had build support with CMake 42. Monitoring

Conferences 2017

• Seven (!) ACAT presentations in 2017 (with proceedings)

• two/three “best poster” prizes for ROOT: Guilherme + Xavi!

9

Page 10: ROOT PoW 2018 - SFT · • Redesign for modern, modular CMake • Late build of sub-packages • Deprecate parts of ROOT that have not had build support with CMake 42. Monitoring

2017 Highlights• TDataFrame, TDataSource

• More parallelism: fitting, I/O (notably TBufferMerger), interpreter

• TMVA CNN + RNN, cross-validation; TFormula composition

• WebGUI prototype; several graphics improvements

• C++17, GCC7, Windows support

• rootbench.git

• Runtime modules

10

2017 Plan of Work: https://indico.cern.ch/event/598604/contributions/2419269/attachments/

1393870/2124204/ROOT-Plans-20170111.pdf

Page 11: ROOT PoW 2018 - SFT · • Redesign for modern, modular CMake • Late build of sub-packages • Deprecate parts of ROOT that have not had build support with CMake 42. Monitoring

Plan of Work 2018• Drafted by team, collected feedback from contributors and experiments

• see https://docs.google.com/spreadsheets/d/1pHFbCDazLF8wuICOw8C4G7IjOP_p5CTi94HdBh9shnI/edit?usp=sharing

• Usual disclaimer: ROOT is inherently agile

• we adjust to changing priorities

• we expect shifts in this plan

11

Page 12: ROOT PoW 2018 - SFT · • Redesign for modern, modular CMake • Late build of sub-packages • Deprecate parts of ROOT that have not had build support with CMake 42. Monitoring

Outline

• Showing plans per ROOT part:

• Math, I/O, Graphics, Parallel Analysis, Infrastructure

• Additional collaborative R&D projects, for instance with OpenLab

12

Page 13: ROOT PoW 2018 - SFT · • Redesign for modern, modular CMake • Late build of sub-packages • Deprecate parts of ROOT that have not had build support with CMake 42. Monitoring

The Foundation

Page 14: ROOT PoW 2018 - SFT · • Redesign for modern, modular CMake • Late build of sub-packages • Deprecate parts of ROOT that have not had build support with CMake 42. Monitoring

Our Baseline Job

• Support

• forum

• bug reports

• emails

• Consulting

• Teaching

14

Page 15: ROOT PoW 2018 - SFT · • Redesign for modern, modular CMake • Late build of sub-packages • Deprecate parts of ROOT that have not had build support with CMake 42. Monitoring

Our Baseline Job

• Support

• forum

• bug reports

• emails

• Consulting

• Teaching

15

Page 16: ROOT PoW 2018 - SFT · • Redesign for modern, modular CMake • Late build of sub-packages • Deprecate parts of ROOT that have not had build support with CMake 42. Monitoring

Our Baseline Job

• Support

• forum

• bug reports

• emails

• Consulting

• Teaching

16

Page 17: ROOT PoW 2018 - SFT · • Redesign for modern, modular CMake • Late build of sub-packages • Deprecate parts of ROOT that have not had build support with CMake 42. Monitoring

ROOT & Experiments 2018

• ROOT Planning: regular meeting for two-way communication

• Invitations, presentations at experiments’ software weeks

• Inter-experiment Machine Learning meetings

• Participation at experiments’ software reviews

17

Page 18: ROOT PoW 2018 - SFT · • Redesign for modern, modular CMake • Late build of sub-packages • Deprecate parts of ROOT that have not had build support with CMake 42. Monitoring

Courses 2018

• Summer student workshop

• Experiments’ intro tutorials

• CSC

18

Page 19: ROOT PoW 2018 - SFT · • Redesign for modern, modular CMake • Late build of sub-packages • Deprecate parts of ROOT that have not had build support with CMake 42. Monitoring

Conferences 2018

• Seven (!) ACAT presentations in 2017 (with proceedings)

• two/three “best poster” prizes for ROOT: Guilherme + Xavi!

• At least seven (!) accepted CHEP presentations in 2018

• Shows ROOT’s impact in community

19

Page 20: ROOT PoW 2018 - SFT · • Redesign for modern, modular CMake • Late build of sub-packages • Deprecate parts of ROOT that have not had build support with CMake 42. Monitoring

Math

Page 21: ROOT PoW 2018 - SFT · • Redesign for modern, modular CMake • Late build of sub-packages • Deprecate parts of ROOT that have not had build support with CMake 42. Monitoring

Math Libraries

• Finalize parallelization of fitting

• Common PRNG library for the community

• specifically for ROOT and simulation

• parallelism-friendly, vectorized, state-of-the-art generators

21

Page 22: ROOT PoW 2018 - SFT · • Redesign for modern, modular CMake • Late build of sub-packages • Deprecate parts of ROOT that have not had build support with CMake 42. Monitoring

Fitting + Histograms

• Parallelization of relevant histogram operations

• Fitting of new (“v7”) histograms

22

Page 23: ROOT PoW 2018 - SFT · • Redesign for modern, modular CMake • Late build of sub-packages • Deprecate parts of ROOT that have not had build support with CMake 42. Monitoring

TMVA• Rework data transfer: TMVA::Event, build I/O, numpy conversion, replace

TTreeFormula by TDataFrame

• CNN, RNN, DAE integration; improved interfaces to external tools, both eval and training in TMVA or only eval; better out-of-the-box cross-validation support

• BDT with internal parallelism, DL with GPU + CPU support, process parallelism for cross-validation + hyper-parameter tuning

• Documentation! Esp. users’ guide

23

Page 24: ROOT PoW 2018 - SFT · • Redesign for modern, modular CMake • Late build of sub-packages • Deprecate parts of ROOT that have not had build support with CMake 42. Monitoring

Vectorization

• Numerical integration and differentiation

• ROOT to depend on VecCore; move vectorized, templated math there

• ROOT to be SIMD arch agnostic; have arch-specific implementation libs

24

Page 25: ROOT PoW 2018 - SFT · • Redesign for modern, modular CMake • Late build of sub-packages • Deprecate parts of ROOT that have not had build support with CMake 42. Monitoring

I/O

Page 26: ROOT PoW 2018 - SFT · • Redesign for modern, modular CMake • Late build of sub-packages • Deprecate parts of ROOT that have not had build support with CMake 42. Monitoring

Features

• Support for shared_ptr, variant, optional

• I/O of interpreted classes

• new (“v7”) TTree prototype

26

Page 27: ROOT PoW 2018 - SFT · • Redesign for modern, modular CMake • Late build of sub-packages • Deprecate parts of ROOT that have not had build support with CMake 42. Monitoring

Performance

• Reduction of virtual function calls

• Improvements to OptimizeBasket

• Offsets optimizations in data format

• Performance optimization in TBranchProxy / TTreeReader

27

Page 28: ROOT PoW 2018 - SFT · • Redesign for modern, modular CMake • Late build of sub-packages • Deprecate parts of ROOT that have not had build support with CMake 42. Monitoring

Compression

• LZ4 to become default

• Investigate keeping compression dictionary across baskets

• Investigate Zstd

28

Page 29: ROOT PoW 2018 - SFT · • Redesign for modern, modular CMake • Late build of sub-packages • Deprecate parts of ROOT that have not had build support with CMake 42. Monitoring

Parallelism

• Parallel unzipping

• Improved thread-safety / performance (e.g. RecursiveRemove)

• Improve parallel buffer / tree merge, task-oriented + performance

29

Page 30: ROOT PoW 2018 - SFT · • Redesign for modern, modular CMake • Late build of sub-packages • Deprecate parts of ROOT that have not had build support with CMake 42. Monitoring

Graphics

Page 31: ROOT PoW 2018 - SFT · • Redesign for modern, modular CMake • Late build of sub-packages • Deprecate parts of ROOT that have not had build support with CMake 42. Monitoring

WebGUI Fit Panel: Server / C++

• New “v7” TCanvas, TPad, TFrame (coordinate systems), TDrawable

• Basic graphics primitives, e.g. TLine, TText and their attributes; styles

• Drawables for histograms, graphs etc

31

Page 32: ROOT PoW 2018 - SFT · • Redesign for modern, modular CMake • Late build of sub-packages • Deprecate parts of ROOT that have not had build support with CMake 42. Monitoring

WebGUI Fit Panel: Client / JS

• Painters for high-level objects (re-use JSROOT)

• Interactivity, sending updates to server

• Settle on solution for graphics in batch

32

Page 33: ROOT PoW 2018 - SFT · • Redesign for modern, modular CMake • Late build of sub-packages • Deprecate parts of ROOT that have not had build support with CMake 42. Monitoring

GUI

• UI (menus, buttons) implemented in OpenUI5

• Graphics editors: line, text etc attributes

33

Page 34: ROOT PoW 2018 - SFT · • Redesign for modern, modular CMake • Late build of sub-packages • Deprecate parts of ROOT that have not had build support with CMake 42. Monitoring

Geometry, Eve

• Implementation of a web-based geometry viewer

• Investigation of WebGUI-version of Eve

34

Page 35: ROOT PoW 2018 - SFT · • Redesign for modern, modular CMake • Late build of sub-packages • Deprecate parts of ROOT that have not had build support with CMake 42. Monitoring

Parallel Analysis

Page 36: ROOT PoW 2018 - SFT · • Redesign for modern, modular CMake • Late build of sub-packages • Deprecate parts of ROOT that have not had build support with CMake 42. Monitoring

TDataFrame

• Operations on collections: DeltaR etc

• Consider new data sources: e.g. Parquet, bulk I/O

• Decouple number of slots versus workers

• Usability improvements: error messages etc

• Support for new “v7” histograms

• Pass python callables as cuts, defines

36

Page 37: ROOT PoW 2018 - SFT · • Redesign for modern, modular CMake • Late build of sub-packages • Deprecate parts of ROOT that have not had build support with CMake 42. Monitoring

Task + MP Parallelism

• Documentation of threading behavior

• Executors: NUMA-aware, sequential, investigate distributed (PROOF successor); improved chunking

• Investigate PyROOTSpark

37

Page 38: ROOT PoW 2018 - SFT · • Redesign for modern, modular CMake • Late build of sub-packages • Deprecate parts of ROOT that have not had build support with CMake 42. Monitoring

Interpreter Bindings, Platforms

Page 39: ROOT PoW 2018 - SFT · • Redesign for modern, modular CMake • Late build of sub-packages • Deprecate parts of ROOT that have not had build support with CMake 42. Monitoring

PyROOT, cling

• PyROOT maintainance

• Rvalue reference support in PyROOT and TClass

• Conversion of Python iterables to C++ containers

• Memory buffers, less copied for C++ / python object passing

• Improved support for unloading in cling

39

Page 40: ROOT PoW 2018 - SFT · • Redesign for modern, modular CMake • Late build of sub-packages • Deprecate parts of ROOT that have not had build support with CMake 42. Monitoring

Windows

• 32bit with tests of supported packages passing

• Investigation of 64bit port

40

Page 41: ROOT PoW 2018 - SFT · • Redesign for modern, modular CMake • Late build of sub-packages • Deprecate parts of ROOT that have not had build support with CMake 42. Monitoring

Infrastructure

Page 42: ROOT PoW 2018 - SFT · • Redesign for modern, modular CMake • Late build of sub-packages • Deprecate parts of ROOT that have not had build support with CMake 42. Monitoring

Build System

• Remove configure/make

• Redesign for modern, modular CMake

• Late build of sub-packages

• Deprecate parts of ROOT that have not had build support with CMake

42

Page 43: ROOT PoW 2018 - SFT · • Redesign for modern, modular CMake • Late build of sub-packages • Deprecate parts of ROOT that have not had build support with CMake 42. Monitoring

Monitoring

• Deploy Jenkins pipeline

• Continuous performance monitoring

• Add I/O related benchmarks to rootbench.git

43

Page 44: ROOT PoW 2018 - SFT · • Redesign for modern, modular CMake • Late build of sub-packages • Deprecate parts of ROOT that have not had build support with CMake 42. Monitoring

Runtime C++ Modules

• Reduce deserializations in ROOT and LLVM

• Rethink rootmap-related code in terms of cxxmodules

• Consider building modules independently of cling

• Track module-related regressions in ROOT and clang

• Define adoption path for experiments, provide migration support

44

Page 45: ROOT PoW 2018 - SFT · • Redesign for modern, modular CMake • Late build of sub-packages • Deprecate parts of ROOT that have not had build support with CMake 42. Monitoring

Misc

• Provide Prototype for ROOT-based package manager

• Provide Containers and Virtual Machines as development environments

• Decide on use of "Evolution" proposal system

• Continue offloading clang patches

45

Page 46: ROOT PoW 2018 - SFT · • Redesign for modern, modular CMake • Late build of sub-packages • Deprecate parts of ROOT that have not had build support with CMake 42. Monitoring

Summary

Page 47: ROOT PoW 2018 - SFT · • Redesign for modern, modular CMake • Late build of sub-packages • Deprecate parts of ROOT that have not had build support with CMake 42. Monitoring

Shopping List or Vision?

• Both: you should be able to discern the focus areas

• vision is directing development items

• Incredible stretch and work load

• vision provides focus and priorities

47

Page 48: ROOT PoW 2018 - SFT · • Redesign for modern, modular CMake • Late build of sub-packages • Deprecate parts of ROOT that have not had build support with CMake 42. Monitoring

Where are we going?

• Remain at the heart of HEP data analysis

• Rechargeable batteries included

• ongoing rejuvenation to cover the next 20 years

48

Page 49: ROOT PoW 2018 - SFT · • Redesign for modern, modular CMake • Late build of sub-packages • Deprecate parts of ROOT that have not had build support with CMake 42. Monitoring

ROOT’s Theme

• Simplicity

• Robustness

• Speed

49


Recommended