Inverted CERN School of Computing 2020
from
Monday 28 September 2020 (14:00)
to
Friday 2 October 2020 (18:00)
Monday 28 September 2020
14:00
A word from the IT Department Head
-
Frederic Hemmer
(
CERN
)
A word from the IT Department Head
Frederic Hemmer
(
CERN
)
14:00 - 14:10
14:10
Introduction to the Inverted CSC
-
Sebastian Lopienski
(
CERN
)
Introduction to the Inverted CSC
Sebastian Lopienski
(
CERN
)
14:10 - 14:15
14:15
Programming Paradigms (lecture)
-
Kilian Lieret
(
Ludwig Maximilian University
)
Programming Paradigms (lecture)
Kilian Lieret
(
Ludwig Maximilian University
)
14:15 - 15:15
Ever been to the point where even little improvements require large refactoring efforts or dirty hacks? If only one had made the right choices on the way! This course discusses programming paradigms (functional vs object oriented, imperative vs declarative programming, ...) and introduces common design patterns (reusable solutions to common problems). While theory alone is unlikely to make you a better developer, having an overview of common principles paired with the vocabulary to describe them will make it easier to come up with the right solutions. In the exercises, we refactor various code snippets using the ideas of the lecture. Different approaches and their applicability to HEP problems are being discussed. Basic familiarity with Python is advised for the exercises. This series is aimed at scientists with little formal training in software engineering, but veterans are always welcome to join for additional input in the discussions!
15:25
From the electric pulse to image quality - the analysis chain of imaging detectors (lecture)
-
Rita Roque
(
University of Coimbra
)
From the electric pulse to image quality - the analysis chain of imaging detectors (lecture)
Rita Roque
(
University of Coimbra
)
15:25 - 16:25
Imaging gaseous detectors are the base-technology for many applications, such like Medical Imaging and Airport Security, as they are an upgrade to our biologic eyes. The objective of this lecture is to join physics and computing concepts to fully understand the analysis chain of an imaging gaseous detector. We will discuss the physics inside the detector, the engineering that processes the electric pulses, the computing skills behind image reconstruction and come back to the physical concepts by extracting meaningful parameters from the final image. In the exercise session, you will follow these steps yourself by analyzing electric pulses from an oscilloscope, reconstructing an image from a data file and quantifying some important parameters like position resolution and noise.
16:35
Modern C++ vs. its legacy: when stability is more important than performance (lecture)
-
Nis Meinert
(
German Aerospace Center (DLR)
)
Modern C++ vs. its legacy: when stability is more important than performance (lecture)
Nis Meinert
(
German Aerospace Center (DLR)
)
16:35 - 17:35
"Leaving no room for a lower-level language", this has always been the declared mantra of the C++ language development. At the same time C++ is an old language and its legacy affects possible performance improvements in the STL due to ABI stability concerns. ABI stands for "Application Binary Interface" and its stability is often put over performance on the one hand while on the other hand, "ABI" or even its stability is not mentioned a single time in the entire C++ standard. In this talk I will explain what ABI stability means, why it is not mentioned in the standard but is still lethal to many proposals, and discuss some recent implications. I will not be able to present solutions to the dilemma; the hope is to encourage attendees to make their mind and to attend ongoing discussions about this vital topic.
Tuesday 29 September 2020
14:00
Software Design Patterns (lecture)
-
Kilian Lieret
(
Ludwig Maximilian University
)
Software Design Patterns (lecture)
Kilian Lieret
(
Ludwig Maximilian University
)
14:00 - 15:00
Ever been to the point where even little improvements require large refactoring efforts or dirty hacks? If only one had made the right choices on the way! This course discusses programming paradigms (functional vs object oriented, imperative vs declarative programming, ...) and introduces common design patterns (reusable solutions to common problems). While theory alone is unlikely to make you a better developer, having an overview of common principles paired with the vocabulary to describe them will make it easier to come up with the right solutions. In the exercises, we refactor various code snippets using the ideas of the lecture. Different approaches and their applicability to HEP problems are being discussed. Basic familiarity with Python is advised for the exercises. This series is aimed at scientists with little formal training in software engineering, but veterans are always welcome to join for additional input in the discussions!
15:10
Modern C++: Everything you (n)ever wanted to know about C++'s Lambdas (lecture)
-
Nis Meinert
(
German Aerospace Center (DLR)
)
Modern C++: Everything you (n)ever wanted to know about C++'s Lambdas (lecture)
Nis Meinert
(
German Aerospace Center (DLR)
)
15:10 - 16:25
From a syntactical point of view, the Lambda expression of C++ is nothing but syntactic sugar of a struct with an appropriate call operator overload. On the other hand, this simple syntax is shockingly flexible and allows powerful abstractions in a functional way, while providing elegant and easy to read code in a language that is notoriously famous for being unnecessary clunky and verbose. I will give an overview about the basic syntax and best practices. I will then talk about stateful Lambdas, Lambda inheritance and their real-world applications.
16:35
From the electric pulse to image quality - the analysis chain of imaging detectors (exercise consultation)
-
Rita Roque
(
University of Coimbra
)
From the electric pulse to image quality - the analysis chain of imaging detectors (exercise consultation)
Rita Roque
(
University of Coimbra
)
16:35 - 17:05
Imaging gaseous detectors are the base-technology for many applications, such like Medical Imaging and Airport Security, as they are an upgrade to our biologic eyes. The objective of this lecture is to join physics and computing concepts to fully understand the analysis chain of an imaging gaseous detector. We will discuss the physics inside the detector, the engineering that processes the electric pulses, the computing skills behind image reconstruction and come back to the physical concepts by extracting meaningful parameters from the final image. In the exercise session, you will follow these steps yourself by analyzing electric pulses from an oscilloscope, reconstructing an image from a data file and quantifying some important parameters like position resolution and noise. Exercise instructions: 1. Download the Exercises_files.zip and extract the files 2. Upload files to SWAN (https://swan.cern.ch) for CERN users or Google Colab (https://colab.research.google.com) if you do not have CERN account. You will see 5 different files: - 4 .csv files with data for the exercises - Student Version.ipynb, with the guided exercises; - Solutions.ipynb - if you want to do the exercises on your own, do not open this file for now. 3. Open Student Version.ipynb and follow the instructions. 4. When finished or if stuck, check Solutions.ipynb for the answers.
Wednesday 30 September 2020
14:00
Computational fluid dynamics for physicists and engineers (lecture)
-
Ruchi Mishra
(
Nicolaus Copernicus Astronomical Center
)
Computational fluid dynamics for physicists and engineers (lecture)
Ruchi Mishra
(
Nicolaus Copernicus Astronomical Center
)
14:00 - 15:00
Computational fluid dynamics(CFD) is an interdisciplinary approach involving Physics and Computer Science which deals with solving the governing equation of fluid flow. With the increasing advancement of technology, CFD has gained a lot of popularity in wide ranging topics of Physics and Engineering. In this lecture we will look into the basic idea behind CFD, the conservation system of equations governing fluid dynamics, physical domain and equation discretization, use of numerical methods such as Finite difference and Finite volume methods, different boundary conditions and Reimann solvers.
15:00
Group photo
Group photo
15:00 - 15:10
We will want to take 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. * If you want to be part of it, please enable your camera (or set up a Zoom profile picture) when we will be taking the group 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, and have no Zoom profile picture set up. In any case, your name will not appear in the final edited group photo.
15:10
Big Data technologies and distributed data processing with SQL (lecture)
-
Emil Kleszcz
(
CERN
)
Big Data technologies and distributed data processing with SQL (lecture)
Emil Kleszcz
(
CERN
)
15:10 - 16:10
The interest of many users communities in solutions based on the Big Data ecosystem such as Hadoop is constantly increasing at CERN, including physics experiments, monitoring, and accelerator controls. This lecture will introduce the participant to some of the Big Data technologies that CERN offers for distributed processing. It will cover some history, architecture, and specifics of selected technologies such as the Hadoop, Spark, and Presto for SQL-like data processing. Moreover, this talk will cover the example of using the Big Data tools to speedup some computations on hundreds of terabytes of events coming from the Atlas experiment at CERN.
16:20
Modern C++: Everything you (n)ever wanted to know about C++'s Lambdas (demo)
-
Nis Meinert
(
German Aerospace Center (DLR)
)
Modern C++: Everything you (n)ever wanted to know about C++'s Lambdas (demo)
Nis Meinert
(
German Aerospace Center (DLR)
)
16:20 - 17:20
From a syntactical point of view, the Lambda expression of C++ is nothing but syntactic sugar of a struct with an appropriate call operator overload. On the other hand, this simple syntax is shockingly flexible and allows powerful abstractions in a functional way, while providing elegant and easy to read code in a language that is notoriously famous for being unnecessary clunky and verbose. I will give an overview about the basic syntax and best practices. I will then talk about stateful Lambdas, Lambda inheritance and their real-world applications.
Thursday 1 October 2020
14:00
Heterogeneous computing: Introduction to OpenCL for FPGAs (lecture 1)
-
Miguel Astrain Etxezarreta
(
Universidad Politécnica de Madrid
)
Heterogeneous computing: Introduction to OpenCL for FPGAs (lecture 1)
Miguel Astrain Etxezarreta
(
Universidad Politécnica de Madrid
)
14:00 - 15:00
This seminar introduces OpenCL as a heterogeneous programming language. We will analyze the structure of an OpenCL program and how to handle the different elements of OpenCL. Examples of parallel computing are presented to illustrate how to write computing programs in OpenCL. Finally, we discuss how these concepts have to be translated into the FPGA context to achieve high performance. The exercises expand the concepts with example programs. The examples help to understand the role of the host program to allocate memory, schedule tasks, and execute kernels in the OpenCL device. More advanced examples explain optimization decisions made due to hardware particularities.
15:10
Modern C++: Demystifying Value Categories in C++ (lecture 1)
-
Nis Meinert
(
German Aerospace Center (DLR)
)
Modern C++: Demystifying Value Categories in C++ (lecture 1)
Nis Meinert
(
German Aerospace Center (DLR)
)
15:10 - 16:10
Value categories are omnipresent in today's C++ code bases. Since the advent of move semantics the field continuously becomes wider and knowing terms such as lvalue and rvalue only from compiler error messages is not enough anymore. I will present an overview about C++ value categories and decay rules, the subtle difference between pointers and references, explain why neither std::move moves, nor std::forward forward values and talk about implication on related topics such as RVO.
16:20
Big Data technologies and distributed data processing with SQL (exercise consultation)
-
Emil Kleszcz
(
CERN
)
Big Data technologies and distributed data processing with SQL (exercise consultation)
Emil Kleszcz
(
CERN
)
16:20 - 16:50
The interest of many users communities in solutions based on the Big Data ecosystem such as Hadoop is constantly increasing at CERN, including physics experiments, monitoring, and accelerator controls. This lecture will introduce the participant to some of the Big Data technologies that CERN offers for distributed processing. It will cover some history, architecture, and specifics of selected technologies such as the Hadoop, Spark, and Presto for SQL-like data processing. Moreover, this talk will cover the example of using the Big Data tools to speedup some computations on hundreds of terabytes of events coming from the Atlas experiment at CERN.
17:00
Programming Paradigms and Software Design Patterns (exercise consultation)
-
Kilian Lieret
(
Ludwig Maximilian University
)
Programming Paradigms and Software Design Patterns (exercise consultation)
Kilian Lieret
(
Ludwig Maximilian University
)
17:00 - 17:30
Ever been to the point where even little improvements require large refactoring efforts or dirty hacks? If only one had made the right choices on the way! This course discusses programming paradigms (functional vs object oriented, imperative vs declarative programming, ...) and introduces common design patterns (reusable solutions to common problems). While theory alone is unlikely to make you a better developer, having an overview of common principles paired with the vocabulary to describe them will make it easier to come up with the right solutions. In the exercises, we refactor various code snippets using the ideas of the lecture. Different approaches and their applicability to HEP problems are being discussed. Basic familiarity with Python is advised for the exercises. This series is aimed at scientists with little formal training in software engineering, but veterans are always welcome to join for additional input in the discussions!
Friday 2 October 2020
14:00
Heterogeneous computing: Introduction to OpenCL for FPGAs (lecture 2)
-
Miguel Astrain Etxezarreta
(
Universidad Politécnica de Madrid
)
Heterogeneous computing: Introduction to OpenCL for FPGAs (lecture 2)
Miguel Astrain Etxezarreta
(
Universidad Politécnica de Madrid
)
14:00 - 15:00
This seminar introduces OpenCL as a heterogeneous programming language. We will analyze the structure of an OpenCL program and how to handle the different elements of OpenCL. Examples of parallel computing are presented to illustrate how to write computing programs in OpenCL. Finally, we discuss how these concepts have to be translated into the FPGA context to achieve high performance. The exercises expand the concepts with example programs. The examples help to understand the role of the host program to allocate memory, schedule tasks, and execute kernels in the OpenCL device. More advanced examples explain optimization decisions made due to hardware particularities.
15:10
Modern C++: Demystifying Value Categories in C++ (lecture 2)
-
Nis Meinert
(
German Aerospace Center (DLR)
)
Modern C++: Demystifying Value Categories in C++ (lecture 2)
Nis Meinert
(
German Aerospace Center (DLR)
)
15:10 - 16:10
Value categories are omnipresent in today's C++ code bases. Since the advent of move semantics the field continuously becomes wider and knowing terms such as lvalue and rvalue only from compiler error messages is not enough anymore. I will present an overview about C++ value categories and decay rules, the subtle difference between pointers and references, explain why neither std::move moves nor std::forward forwards values, and talk about implication on related topics such as RVO.
16:20
Heterogeneous computing: Introduction to OpenCL for FPGAs (demo)
-
Miguel Astrain Etxezarreta
(
Universidad Politécnica de Madrid
)
Heterogeneous computing: Introduction to OpenCL for FPGAs (demo)
Miguel Astrain Etxezarreta
(
Universidad Politécnica de Madrid
)
16:20 - 16:50
This seminar introduces OpenCL as a heterogeneous programming language. We will analyze the structure of an OpenCL program and how to handle the different elements of OpenCL. Examples of parallel computing are presented to illustrate how to write computing programs in OpenCL. Finally, we discuss how these concepts have to be translated into the FPGA context to achieve high performance. The exercises expand the concepts with example programs. The examples help to understand the role of the host program to allocate memory, schedule tasks, and execute kernels in the OpenCL device. More advanced examples explain optimization decisions made due to hardware particularities.
16:50
Closing remarks
-
Sebastian Lopienski
(
CERN
)
Closing remarks
Sebastian Lopienski
(
CERN
)
16:50 - 17:00