Thematic CERN School of Computing 2020
from
Sunday 7 June 2020 (11:00)
to
Saturday 13 June 2020 (11:00)
Sunday 7 June 2020
11:00
Registration
Registration
11:00 - 12:45
13:00
Lunch
Lunch
13:00 - 13:45
14:00
Registration / Coffee break
Registration / Coffee break
14:00 - 15:30
15:30
Opening Ceremony
-
Sebastian Lopienski
(
CERN
)
Frederic Hemmer
(
CERN
)
Ivica Puljak
(
University of Split, FESB
)
Opening Ceremony
Sebastian Lopienski
(
CERN
)
Frederic Hemmer
(
CERN
)
Ivica Puljak
(
University of Split, FESB
)
15:30 - 17:00
17:30
Introduction to efficient computing
-
Andrzej Nowak
Introduction to efficient computing
Andrzej Nowak
17:30 - 18:30
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
18:30
Writing parallel software
-
Sebastien Ponce
Writing parallel software
Sebastien Ponce
18:30 - 19:30
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
20:00
Outside Welcome Dinner
Outside Welcome Dinner
20:00 - 21:45
Monday 8 June 2020
10:00
Announcements
Announcements
10:00 - 10:15
10:15
Hardware evolution and heterogeneity
-
Andrzej Nowak
Hardware evolution and heterogeneity
Andrzej Nowak
10:15 - 11:15
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
11:15
Coffee
Coffee
11:15 - 11:45
11:45
Modern programming languages for HEP
-
Sebastien Ponce
Modern programming languages for HEP
Sebastien Ponce
11:45 - 12:45
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
13:00
Lunch
Lunch
13:00 - 13:45
14:00
Study time and/or daily sports
Study time and/or daily sports
14:00 - 15:45
15:45
Coffee
Coffee
15:45 - 16:15
16:15
Data-oriented design
-
Andrzej Nowak
Data-oriented design
Andrzej Nowak
16:15 - 17:15
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?
17:30
Technologies and Platforms - exercise 1
-
Andrzej Nowak
Technologies and Platforms - exercise 1
Andrzej Nowak
17:30 - 18:30
18:30
Technologies and Platforms - exercise 2
-
Andrzej Nowak
Technologies and Platforms - exercise 2
Andrzej Nowak
18:30 - 19:30
20:00
Dinner at MEDILS
Dinner at MEDILS
20:00 - 21:00
21:00
Special evening talk: Future of the Universe and of Humanity
-
Ivica Puljak
(
University of Split, FESB
)
Special evening talk: Future of the Universe and of Humanity
Ivica Puljak
(
University of Split, FESB
)
21:00 - 22:00
Tuesday 9 June 2020
09:00
Technologies and Platforms - exercise 3
-
Andrzej Nowak
Technologies and Platforms - exercise 3
Andrzej Nowak
09:00 - 10:00
10:00
Technologies and Platforms - exercise 4
-
Andrzej Nowak
Technologies and Platforms - exercise 4
Andrzej Nowak
10:00 - 11:00
11:00
Coffee
Coffee
11:00 - 11:30
11:30
Announcements
Announcements
11:30 - 11:45
11:45
Scientific computing on heterogeneous architectures
-
Daniel Campora
(
Nikhef National institute for subatomic physics (NL)
)
Scientific computing on heterogeneous architectures
Daniel Campora
(
Nikhef National institute for subatomic physics (NL)
)
11:45 - 12:45
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
13:00
Lunch
Lunch
13:00 - 13:45
14:00
Study time and/or daily sports
Study time and/or daily sports
14:00 - 15:30
15:30
Coffee
Coffee
15:30 - 15:45
15:45
Official School Photo
Official School Photo
15:45 - 16:00
16:00
Student presentations
Student presentations
16:00 - 17:15
17:30
Parallel and Optimised Scientific Software - exercise 3
-
Sebastien Ponce
Parallel and Optimised Scientific Software - exercise 3
Sebastien Ponce
17:30 - 18:30
18:30
Parallel and Optimised Scientific Software - exercise 4
-
Sebastien Ponce
Parallel and Optimised Scientific Software - exercise 4
Sebastien Ponce
18:30 - 19:30
20:00
Dinner at MEDILS
Dinner at MEDILS
20:00 - 21:00
Wednesday 10 June 2020
09:00
Programming for GPUs
-
Daniel Campora
(
Nikhef National institute for subatomic physics (NL)
)
Programming for GPUs
Daniel Campora
(
Nikhef National institute for subatomic physics (NL)
)
09:00 - 10: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 - Debugging and profiling a GPU application
10:00
Optimizing existing large codebase
-
Sebastien Ponce
Optimizing existing large codebase
Sebastien Ponce
10:00 - 11:00
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++
11:00
Announcements
Announcements
11:00 - 11:15
11:15
Coffee
Coffee
11:15 - 11:45
11:45
Parallel cross-architecture programming
-
Daniel Campora
(
Nikhef National institute for subatomic physics (NL)
)
Parallel cross-architecture programming
Daniel Campora
(
Nikhef National institute for subatomic physics (NL)
)
11:45 - 12:45
Programming for Heterogeneous Architectures - lecture 3 - Data locality, coalesced memory accesses, tiled data processing - Control flow, synchronization, atomics - Other standards: SYCL, HIP, OpenCL - Middleware libraries and cross-architecture compatibility
13:00
Lunch
Lunch
13:00 - 13:45
14:00
Special sports afternoon
Special sports afternoon
14:00 - 19:00
19:00
Outside dinner
Outside dinner
19:00 - 21:00
Thursday 11 June 2020
09:00
Programming for Heterogeneous Architectures - exercise 1
-
Daniel Campora
(
Nikhef National institute for subatomic physics (NL)
)
Programming for Heterogeneous Architectures - exercise 1
Daniel Campora
(
Nikhef National institute for subatomic physics (NL)
)
09:00 - 10:00
10:00
Programming for Heterogeneous Architectures - exercise 2
-
Daniel Campora
(
Nikhef National institute for subatomic physics (NL)
)
Programming for Heterogeneous Architectures - exercise 2
Daniel Campora
(
Nikhef National institute for subatomic physics (NL)
)
10:00 - 11:00
11:00
Coffee
Coffee
11:00 - 11:30
11:30
Announcements
Announcements
11:30 - 11:45
11:45
Design patterns and best practices
-
Daniel Campora
(
Nikhef National institute for subatomic physics (NL)
)
Design patterns and best practices
Daniel Campora
(
Nikhef National institute for subatomic physics (NL)
)
11:45 - 12:45
Programming for Heterogeneous Architectures - lecture 4 - GPU streams, pipelined memory transfers - Good practices: single precision, branchless, avoid register spilling, convert the problem - Reusable parallel design patterns with real-life applications - Under the hood: Warps, masked execution, floating point rounding
13:00
Lunch
Lunch
13:00 - 13:45
14:00
Study time and/or daily sports
Study time and/or daily sports
14:00 - 15:45
15:45
Coffee
Coffee
15:45 - 16:15
16:15
Practical vectorization
-
Sebastien Ponce
Practical vectorization
Sebastien Ponce
16:15 - 17:15
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
17:30
Parallel and Optimised Scientific Software - exercise 1
-
Sebastien Ponce
Parallel and Optimised Scientific Software - exercise 1
Sebastien Ponce
17:30 - 18:30
Optimisation of an existing, production grade large codebase - exercise 1
18:30
Parallel and Optimised Scientific Software - exercise 2
-
Sebastien Ponce
Parallel and Optimised Scientific Software - exercise 2
Sebastien Ponce
18:30 - 19:30
Optimisation of an existing, production grade large codebase - exercise 2
20:00
Dinner at MEDILS
Dinner at MEDILS
20:00 - 21:00
Friday 12 June 2020
09:00
Programming for Heterogeneous Architectures - exercise 3
-
Daniel Campora
(
Nikhef National institute for subatomic physics (NL)
)
Programming for Heterogeneous Architectures - exercise 3
Daniel Campora
(
Nikhef National institute for subatomic physics (NL)
)
09:00 - 10:00
10:00
Programming for Heterogeneous Architectures - exercise 4
-
Daniel Campora
(
Nikhef National institute for subatomic physics (NL)
)
Programming for Heterogeneous Architectures - exercise 4
Daniel Campora
(
Nikhef National institute for subatomic physics (NL)
)
10:00 - 11:00
11:00
Coffee
Coffee
11:00 - 11:30
11:30
Announcements
Announcements
11:30 - 11:45
11:45
Summary and future technologies overview
-
Andrzej Nowak
Summary and future technologies overview
Andrzej Nowak
11:45 - 12:45
Technologies and Platforms - lecture 4 - Teaching program summary and wrap-up - Next-generation memory technologies and interconnect - Rack-sized data centres and future computing evolution
13:00
Lunch
Lunch
13:00 - 13:45
14:00
Exam
Exam
14:00 - 15:00
16:30
Coffee
Coffee
16:30 - 17:00
17:00
Closing Session
Closing Session
17:00 - 18:15
18:15
Visit to Split
Visit to Split
18:15 - 20:00
20:00
Outside Closing Dinner
Outside Closing Dinner
20:00 - 21:45
Saturday 13 June 2020
09:00
Departure
Departure
09:00 - 11:00