Thematic CERN School of Computing - spring 2021
from
Monday 14 June 2021 (09:00)
to
Friday 18 June 2021 (17:00)
Monday 14 June 2021
09:00
Opening Session
-
Sebastian Lopienski
(
CERN
)
Frederic Hemmer
(
CERN
)
Opening Session
Sebastian Lopienski
(
CERN
)
Frederic Hemmer
(
CERN
)
09:00 - 09:30
09:30
Preparing for the HL-LHC computational challenge
-
Danilo Piparo
(
CERN
)
Preparing for the HL-LHC computational challenge
(Introduction lecture)
Danilo Piparo
(
CERN
)
09:30 - 10:30
In this talk we will introduce some basic concepts related to HEP data processing and analysis workflows, seeing them in action in the context of LHC experiments. We’ll also talk about the evolution of the LHC accelerator and experiments. We’ll characterise at a high level what are the consequences of those upgrades for the HEP data processing software, in particular in the context of an evolving hardware and computing infrastructure.
10:30
Coffee break
Coffee break
10:30 - 10:50
10:50
Introduction to efficient computing
-
Andrzej Nowak
Introduction to efficient computing
(Track 1: Technologies and Platforms)
Andrzej Nowak
10:50 - 11:50
Technologies and Platforms - lecture 1 - The evolution of computing hardware and what it means in practice - The seven dimensions of performance - Controlling and benchmarking your computer and software - Software that scales with the hardware - Advanced performance tuning in hardware
11:50
Self-presentation: 1 minute per person
Self-presentation: 1 minute per person
11:50 - 12:20
**School participants, lecturers and organizers** (in alphabetical order): * Alfonsi Alice * Bachmayer Marie * Baptista de Souza Leite Juan * Barbetti Matteo * Barlou Maria * Brunner David * Bury Florian * Campora Daniel * Carrere Matthieu * Choi Wonqook * Chug Neha * Connor Patrick * Cristella Leonardo * De Simoni Micol * Fargier Sylvain * Favoni Matteo * Ferencek Dinko * Galli Massimiliano * Garcia Chavez Tonatiuh * Gilman Alexander Leon * Hedia Sassia * Lasaosa Garcia Clara * Leon Coello Moises David * Lopienski Sebastian Continued in the afternoon session (right after the lunch break): * Manfreda Alberto * Mania Georgiana * Martikainen Laura * Mishra Saswat * Mostafa Jalal * Ouvrard Xavier Eric * Padulano Vincenzo * Piparo Danilo * Polok Jarek * Ponce Sebastien * Popescu Andrei * Pournaghi Atousa * Rafanoharana Dimbiniaina * Reid Tres * Shchedrolosiev Mykyta * Sobol Bartosz * Storetvedt Maksim Melnik * Sunneborn Gudnadottir Olga * Tolomeo Joelma * Triantafyllou Natalia * Vage Liv Helen * Vnuchenkot Anna * vom Bruch Dorothea
14:00
Self-presentation: 1 minute per person
Self-presentation: 1 minute per person
14:00 - 14:30
(continued from the session before lunch: https://indico.cern.ch/event/1017080/contributions/4291663/)
14:30
Coffee break
Coffee break
14:30 - 14:50
14:50
Group assignment for Track 1: Technologies and Platforms
Group assignment for Track 1: Technologies and Platforms
(Track 1: Technologies and Platforms)
14:50 - 17:00
The goal of this exercise is to provoke you into thinking about some of the key choices in computing. **The scenario** Modern scientific experiments are massive producers of data. Imagine that you’re a computing manager for one such experiment, which produces 100 terabits of raw data per second and has no computing infrastructure yet. Your task is to use your current knowledge to conceptualize data processing for your experiment and, in the process, to uncover important choices to make. **The challenge** Focus on key aspects of compute and software, and less so on networks, accelerators or data flows. What kind of considerations, tradeoffs and assumptions would you have to take into account? What kind of equipment would you use, where would you put it and why? What kind of software would you run? What do you think would be the rough purchase and maintenance cost and effort? Can you identify gaps in your current knowledge that you would need to fill in? **What we expect** You're not expected to have all the answers! In many cases already listing the important questions can be helpful. Seasoned professionals can spend even 10 years of their careers making such a plan for a single experiment. Try to answer the challenge in conceptual terms, and using rough estimates. When faced with unknowns, you can make assumptions – make sure to clearly specify when that’s the case. It’s best if you present your solution on the basis of a 1-slide diagram illustrating key concepts and components, but it’s not a requirement.
Tuesday 15 June 2021
09:00
Writing parallel software
-
Danilo Piparo
(
CERN
)
Writing parallel software
(Track 2: Parallel and Optimised Scientific Software)
Danilo Piparo
(
CERN
)
09:00 - 10:00
Parallel and Optimised Scientific Software - lecture 1 - Amdahl's and Gustafson's laws - Asynchronous execution - Finding concurrency, task vs. data parallelism - Using threading in C++ and Python, comparison with multi-process - Resource protection and thread safety - Locks, thread local storage, atomic operations
10:00
Modern programming languages for HEP
-
Sebastien Ponce
(
CERN
)
Modern programming languages for HEP
(Track 2: Parallel and Optimised Scientific Software)
Sebastien Ponce
(
CERN
)
10:00 - 11:00
Parallel and Optimised Scientific Software - lecture 2 - Why Python and C++ ? - Recent evolutions: C++ 11/14/17 - Modern features of C++ related to performance - Templating versus inheritance, pros and cons of virtual inheritance - Python 3, and switching from Python 2
11:00
Coffee break
Coffee break
11:00 - 11:20
11:20
Optimizing existing large codebase
-
Sebastien Ponce
(
CERN
)
Optimizing existing large codebase
(Track 2: Parallel and Optimised Scientific Software)
Sebastien Ponce
(
CERN
)
11:20 - 12:20
Parallel and Optimised Scientific Software - lecture 3 - Measuring performance, tools and key indicators - Improving memory handling - The nightmare of thread safety - Code modernization and low level optimizations - Data structures for efficient computation in modern C++
14:00
School photo
School photo
14:00 - 14:05
We will be taking a "group photo" of the school - a picture of the participants connected to the Zoom room. This group photo, containing a lot of small but recognizable pictures of individual participants, will afterwards be published on the school website (and possibly, in other CERN publications). * If you want to be part of the group photo, please enable your camera when we will be taking the photo (technically, screenshots of the Zoom gallery view). * If you prefer not to be included in this group photo, please just keep your camera off. In any case, your name will not appear in the final edited group photo.
14:05
Parallel and optimised scientific software - exercise introduction
-
Sebastien Ponce
(
CERN
)
Parallel and optimised scientific software - exercise introduction
(Track 2: Parallel and Optimised Scientific Software)
Sebastien Ponce
(
CERN
)
14:05 - 14:25
Optimisation of an existing, production grade large codebase
14:25
Parallel and optimised scientific software - exercise
-
Sebastien Ponce
(
CERN
)
Arthur Hennequin
(
CNRS
)
Parallel and optimised scientific software - exercise
(Track 2: Parallel and Optimised Scientific Software)
Sebastien Ponce
(
CERN
)
Arthur Hennequin
(
CNRS
)
14:25 - 17:00
Optimisation of an existing, production grade large codebase
19:00
Special evening talk: Future of the Universe and of Humanity
-
Ivica Puljak
(
University of Split
)
Special evening talk: Future of the Universe and of Humanity
(Additional lectures)
Ivica Puljak
(
University of Split
)
19:00 - 20:00
Wednesday 16 June 2021
09:00
Data-oriented design
-
Andrzej Nowak
Data-oriented design
(Track 1: Technologies and Platforms)
Andrzej Nowak
09:00 - 10:00
Technologies and Platforms - lecture 3 - Hardware vectorization in detail – theory vs. practice - Software design for vectorization and smooth data flow - How can compilers and other tools help?
10:00
Practical vectorization
-
Sebastien Ponce
(
CERN
)
Practical vectorization
(Track 2: Parallel and Optimised Scientific Software)
Sebastien Ponce
(
CERN
)
10:00 - 11:00
Parallel and Optimised Scientific Software - lecture 4 - Measuring vectorization level - What to expect from vectorization - Preparing code for vectorization - Vectorizing techniques in C++: intrinsics, libraries, autovectorization
11:00
Coffee break
Coffee break
11:00 - 11:20
11:20
Scientific computing on heterogeneous architectures
-
Dorothea vom Bruch
(
CPPM/CNRS
)
Scientific computing on heterogeneous architectures
(Track 3: Programming for Heterogeneous Architectures)
Dorothea vom Bruch
(
CPPM/CNRS
)
11:20 - 12:20
Programming for Heterogeneous Architectures - lecture 1 - Introduction to heterogeneous architectures and the performance challenge - From general to specialized: Hardware accelerators and applications - Type of workloads ideal for different accelerators - Trade-offs between multi-core and many-core architectures - Implications of heterogeneous hardware on the design and architecture of scientific software - Embarrassingly parallel scientific applications in HPC and CERN
14:00
Group assignment for Track 2: Parallel and Optimised Scientific Software
Group assignment for Track 2: Parallel and Optimised Scientific Software
(Track 2: Parallel and Optimised Scientific Software)
14:00 - 15:30
**Topic for group 1**: Large software systems are more and more difficult to maintain over years. In addition, programming languages evolve and the relevant expertise is lost (e.g. about programming in Fortran). When is the right moment to restart from scratch a large software project? Is it possible at all? **Topic for group 2**: How to ensure long term data preservation? Today, we can read the writings of Newton, and redo his computations. However, in 300 years, will someone be able to rerun todays' software? How to make it happen? Is it feasible at all? **Topic for group 3**: How to ensure good test coverage of a large code base? How to test software that will run on thousands of machines concurrently? **Topic for group 4**: A lot of bad quality code and bugs are introduced in physics software due to lack of knowledge of computing languages by non expert software developers. How can we spread better the computer science knowledge and best practices in large scientific collaborations? **Topic for group 5**: Every now and then, new hardware or software appears, with often very promising prospects. However, the risk is that they disappear within a few years (think of object oriented databases, Google glasses etc.). How to take benefit of latest technologies without jeopardising a multi-decade project? **Topic for group 6**: What's the impact of hardware evolution and choices on software and programming languages? Is is realistic to have hardware agnostic programming languages? **Topic for group 7**: According to Donald Knuth, "Premature optimization is the root of all evil". Have you ever had similar experiences? How to decide when a good moment to do optimisation, and what to optimise?
15:30
Coffee break
Coffee break
15:30 - 15:50
15:50
Student lightning talks
-
Georgiana Mania
(
DESY
)
Florian Bury
(
Catholic University of Louvain
)
David Brunner
(
DESY
)
Bartosz Marek Sobol
(
Jagiellonian University Krakow
)
Micol De Simoni
(
Sapienza University of Rome
)
Student lightning talks
(Additional lectures)
Georgiana Mania
(
DESY
)
Florian Bury
(
Catholic University of Louvain
)
David Brunner
(
DESY
)
Bartosz Marek Sobol
(
Jagiellonian University Krakow
)
Micol De Simoni
(
Sapienza University of Rome
)
15:50 - 16:30
16:30
Parallel and optimised scientific software - exercise debriefing
-
Sebastien Ponce
(
CERN
)
Parallel and optimised scientific software - exercise debriefing
(Track 2: Parallel and Optimised Scientific Software)
Sebastien Ponce
(
CERN
)
16:30 - 17:00
Optimisation of an existing, production grade large codebase
Thursday 17 June 2021
09:00
Hardware evolution and heterogeneity
-
Andrzej Nowak
Hardware evolution and heterogeneity
(Track 1: Technologies and Platforms)
Andrzej Nowak
09:00 - 10:00
Technologies and Platforms - lecture 2 - Accelerators, co-processors, heterogeneity - Memory architectures, hardware caching and NUMA - Compute devices: CPU, GPU, FPGA, ASIC etc. - The role of compilers
10:00
Programming for GPUs
-
Dorothea vom Bruch
(
CPPM/CNRS
)
Programming for GPUs
(Track 3: Programming for Heterogeneous Architectures)
Dorothea vom Bruch
(
CPPM/CNRS
)
10:00 - 11:00
Programming for Heterogeneous Architectures - lecture 2 - From SIMD to SPMD, a programming model transition - Thread and memory organization - Basic building blocks of a GPU program - Control flow, synchronization, atomics
11:00
Coffee break
Coffee break
11:00 - 11:20
11:20
Performant programming for GPUs
-
Daniel Campora
(
University of Maastricht
)
Performant programming for GPUs
(Track 3: Programming for Heterogeneous Architectures)
Daniel Campora
(
University of Maastricht
)
11:20 - 12:20
Programming for Heterogeneous Architectures - lecture 3 - Data locality, coalesced memory accesses, tiled data processing - GPU streams, pipelined memory transfers - Under the hood: branchless, warps, masked execution - Debugging and profiling a GPU application
14:00
Programming for heterogeneous architectures - exercise introduction
-
Daniel Campora
(
University of Maastricht
)
Dorothea vom Bruch
(
CPPM/CNRS
)
Programming for heterogeneous architectures - exercise introduction
(Track 3: Programming for Heterogeneous Architectures)
Daniel Campora
(
University of Maastricht
)
Dorothea vom Bruch
(
CPPM/CNRS
)
14:00 - 14:20
14:20
Programming for heterogeneous architectures - exercise
-
Dorothea vom Bruch
(
CPPM/CNRS
)
Daniel Campora
(
University of Maastricht
)
Programming for heterogeneous architectures - exercise
(Track 3: Programming for Heterogeneous Architectures)
Dorothea vom Bruch
(
CPPM/CNRS
)
Daniel Campora
(
University of Maastricht
)
14:20 - 17:00
Friday 18 June 2021
09:00
Group assignment for Track 3: Programming for heterogeneous architectures
Group assignment for Track 3: Programming for heterogeneous architectures
(Track 3: Programming for Heterogeneous Architectures)
09:00 - 10:30
**The scenario** Imagine you have to process 400 terabits of raw data per second at a future HEP experiment. Assume the data arrives in a data center, with the information from all sub-detectors already combined for every event. There is no strict latency requirement, i.e. you can use deep buffers inside the servers to store the data until a decision is taken. The physics you are interested in requires the most complete knowledge of the event possible, ideally track reconstruction, particle identification, calorimeter reconstruction, particle building, maybe jet reconstruction. And possibly other objects you would like the trigger to reconstruct to make your analysis more sensitive. **The task** Design a trigger system which reduces the rate by at least a factor 1000! --- **Each group will choose and discuss one of the three following topics:** **Topic 1** Can you achieve the data reduction in a single step? What are the advantages / disadvantages of multiple selection steps? Which computing architecture(s) would you choose for your data center? Would you offload parts of the workload to accelerators? If yes, which ones? **Topic 2** What would be the dataflow of your DAQ system? How would you model the data processing and relations between the different parts of your system? How would you ensure the pipelining between accelerators and the servers? Are there any bottlenecks to consider? How would you address them? **Topic 3** How does the detector layout influence the data flow (eg. would you rather have a homogeneous detector where all particles pass through the same detectors or one with different sub-detectors in different regions of phase space)? Do you have recommendations for the detector design that would allow for a more performant DAQ system, depending on the architectures you choose for your system?
10:30
Coffee break
Coffee break
10:30 - 10:50
10:50
Design patterns and best practices
-
Daniel Campora
(
University of Maastricht
)
Design patterns and best practices
(Track 3: Programming for Heterogeneous Architectures)
Daniel Campora
(
University of Maastricht
)
10:50 - 11:50
Programming for Heterogeneous Architectures - lecture 4 - Good practices: single precision, floating point rounding, avoid register spilling, prefer single source - Other standards: SYCL, HIP, OpenCL - Middleware libraries and cross-architecture compatibility - Reusable parallel design patterns with real-life applications
11:50
Programming for heterogeneous architectures - exercise debriefing
-
Daniel Campora
(
University of Maastricht
)
Dorothea vom Bruch
(
CPPM/CNRS
)
Programming for heterogeneous architectures - exercise debriefing
(Track 3: Programming for Heterogeneous Architectures)
Daniel Campora
(
University of Maastricht
)
Dorothea vom Bruch
(
CPPM/CNRS
)
11:50 - 12:20
14:00
Summary and future technologies overview
-
Andrzej Nowak
Summary and future technologies overview
(Track 1: Technologies and Platforms)
Andrzej Nowak
14:00 - 15:00
Technologies and Platforms - lecture 4 - Teaching program summary and wrap-up - Next-generation memory technologies and interconnect - Future computing evolution
15:00
Coffee break
Coffee break
15:00 - 15:30
15:30
Exam
Exam
15:30 - 16:10
16:40
Closing Session
-
Sebastian Lopienski
(
CERN
)
Closing Session
Sebastian Lopienski
(
CERN
)
16:40 - 17:00