Thematic CERN School of Computing 2020
from
Sunday, June 7, 2020 (11:00 AM)
to
Saturday, June 13, 2020 (11:00 AM)
Sunday, June 7, 2020
11:00 AM
Registration
Registration
11:00 AM - 12:45 PM
1:00 PM
Lunch
Lunch
1:00 PM - 1:45 PM
2:00 PM
Registration / Coffee break
Registration / Coffee break
2:00 PM - 3:30 PM
3:30 PM
Opening Ceremony
-
Frederic Hemmer
(
CERN
)
Ivica Puljak
(
University of Split, FESB
)
Sebastian Lopienski
(
CERN
)
Opening Ceremony
Frederic Hemmer
(
CERN
)
Ivica Puljak
(
University of Split, FESB
)
Sebastian Lopienski
(
CERN
)
3:30 PM - 5:00 PM
5:30 PM
Introduction to efficient computing
-
Andrzej Nowak
Introduction to efficient computing
Andrzej Nowak
5:30 PM - 6:30 PM
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
6:30 PM
Writing parallel software
-
Sebastien Ponce
Writing parallel software
Sebastien Ponce
6:30 PM - 7:30 PM
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
8:00 PM
Outside Welcome Dinner
Outside Welcome Dinner
8:00 PM - 9:45 PM
Monday, June 8, 2020
10:00 AM
Announcements
Announcements
10:00 AM - 10:15 AM
10:15 AM
Hardware evolution and heterogeneity
-
Andrzej Nowak
Hardware evolution and heterogeneity
Andrzej Nowak
10:15 AM - 11:15 AM
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 AM
Coffee
Coffee
11:15 AM - 11:45 AM
11:45 AM
Modern programming languages for HEP
-
Sebastien Ponce
Modern programming languages for HEP
Sebastien Ponce
11:45 AM - 12:45 PM
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
1:00 PM
Lunch
Lunch
1:00 PM - 1:45 PM
2:00 PM
Study time and/or daily sports
Study time and/or daily sports
2:00 PM - 3:45 PM
3:45 PM
Coffee
Coffee
3:45 PM - 4:15 PM
4:15 PM
Data-oriented design
-
Andrzej Nowak
Data-oriented design
Andrzej Nowak
4:15 PM - 5:15 PM
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?
5:30 PM
Technologies and Platforms - exercise 1
-
Andrzej Nowak
Technologies and Platforms - exercise 1
Andrzej Nowak
5:30 PM - 6:30 PM
6:30 PM
Technologies and Platforms - exercise 2
-
Andrzej Nowak
Technologies and Platforms - exercise 2
Andrzej Nowak
6:30 PM - 7:30 PM
8:00 PM
Dinner at MEDILS
Dinner at MEDILS
8:00 PM - 9:00 PM
9:00 PM
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
)
9:00 PM - 10:00 PM
Tuesday, June 9, 2020
9:00 AM
Technologies and Platforms - exercise 3
-
Andrzej Nowak
Technologies and Platforms - exercise 3
Andrzej Nowak
9:00 AM - 10:00 AM
10:00 AM
Technologies and Platforms - exercise 4
-
Andrzej Nowak
Technologies and Platforms - exercise 4
Andrzej Nowak
10:00 AM - 11:00 AM
11:00 AM
Coffee
Coffee
11:00 AM - 11:30 AM
11:30 AM
Announcements
Announcements
11:30 AM - 11:45 AM
11:45 AM
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 AM - 12:45 PM
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
1:00 PM
Lunch
Lunch
1:00 PM - 1:45 PM
2:00 PM
Study time and/or daily sports
Study time and/or daily sports
2:00 PM - 3:30 PM
3:30 PM
Coffee
Coffee
3:30 PM - 3:45 PM
3:45 PM
Official School Photo
Official School Photo
3:45 PM - 4:00 PM
4:00 PM
Student presentations
Student presentations
4:00 PM - 5:15 PM
5:30 PM
Parallel and Optimised Scientific Software - exercise 3
-
Sebastien Ponce
Parallel and Optimised Scientific Software - exercise 3
Sebastien Ponce
5:30 PM - 6:30 PM
6:30 PM
Parallel and Optimised Scientific Software - exercise 4
-
Sebastien Ponce
Parallel and Optimised Scientific Software - exercise 4
Sebastien Ponce
6:30 PM - 7:30 PM
8:00 PM
Dinner at MEDILS
Dinner at MEDILS
8:00 PM - 9:00 PM
Wednesday, June 10, 2020
9:00 AM
Programming for GPUs
-
Daniel Campora
(
Nikhef National institute for subatomic physics (NL)
)
Programming for GPUs
Daniel Campora
(
Nikhef National institute for subatomic physics (NL)
)
9:00 AM - 10:00 AM
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 AM
Optimizing existing large codebase
-
Sebastien Ponce
Optimizing existing large codebase
Sebastien Ponce
10:00 AM - 11:00 AM
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 AM
Announcements
Announcements
11:00 AM - 11:15 AM
11:15 AM
Coffee
Coffee
11:15 AM - 11:45 AM
11:45 AM
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 AM - 12:45 PM
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
1:00 PM
Lunch
Lunch
1:00 PM - 1:45 PM
2:00 PM
Special sports afternoon
Special sports afternoon
2:00 PM - 7:00 PM
7:00 PM
Outside dinner
Outside dinner
7:00 PM - 9:00 PM
Thursday, June 11, 2020
9:00 AM
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)
)
9:00 AM - 10:00 AM
10:00 AM
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 AM - 11:00 AM
11:00 AM
Coffee
Coffee
11:00 AM - 11:30 AM
11:30 AM
Announcements
Announcements
11:30 AM - 11:45 AM
11:45 AM
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 AM - 12:45 PM
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
1:00 PM
Lunch
Lunch
1:00 PM - 1:45 PM
2:00 PM
Study time and/or daily sports
Study time and/or daily sports
2:00 PM - 3:45 PM
3:45 PM
Coffee
Coffee
3:45 PM - 4:15 PM
4:15 PM
Practical vectorization
-
Sebastien Ponce
Practical vectorization
Sebastien Ponce
4:15 PM - 5:15 PM
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
5:30 PM
Parallel and Optimised Scientific Software - exercise 1
-
Sebastien Ponce
Parallel and Optimised Scientific Software - exercise 1
Sebastien Ponce
5:30 PM - 6:30 PM
Optimisation of an existing, production grade large codebase - exercise 1
6:30 PM
Parallel and Optimised Scientific Software - exercise 2
-
Sebastien Ponce
Parallel and Optimised Scientific Software - exercise 2
Sebastien Ponce
6:30 PM - 7:30 PM
Optimisation of an existing, production grade large codebase - exercise 2
8:00 PM
Dinner at MEDILS
Dinner at MEDILS
8:00 PM - 9:00 PM
Friday, June 12, 2020
9:00 AM
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)
)
9:00 AM - 10:00 AM
10:00 AM
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 AM - 11:00 AM
11:00 AM
Coffee
Coffee
11:00 AM - 11:30 AM
11:30 AM
Announcements
Announcements
11:30 AM - 11:45 AM
11:45 AM
Summary and future technologies overview
-
Andrzej Nowak
Summary and future technologies overview
Andrzej Nowak
11:45 AM - 12:45 PM
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
1:00 PM
Lunch
Lunch
1:00 PM - 1:45 PM
2:00 PM
Exam
Exam
2:00 PM - 3:00 PM
4:30 PM
Coffee
Coffee
4:30 PM - 5:00 PM
5:00 PM
Closing Session
Closing Session
5:00 PM - 6:15 PM
6:15 PM
Visit to Split
Visit to Split
6:15 PM - 8:00 PM
8:00 PM
Outside Closing Dinner
Outside Closing Dinner
8:00 PM - 9:45 PM
Saturday, June 13, 2020
9:00 AM
Departure
Departure
9:00 AM - 11:00 AM