Thematic CERN School of Computing on Scientific Software for Heterogeneous Architectures 2025
from
Sunday 5 October 2025 (15:00)
to
Saturday 11 October 2025 (11:30)
Sunday 5 October 2025
Monday 6 October 2025
09:00
Opening Session
Opening Session
09:00 - 10:00
10:00
Self-presentation: 1 minute per person
Self-presentation: 1 minute per person
10:00 - 10:30
10:30
Coffee Break
Coffee Break
10:30 - 11:00
11:00
Lecture 1
Lecture 1
11:00 - 12:30
Description of theme / lecture
12:30
Lunch
Lunch
12:30 - 13:30
13:30
Practice 1
Practice 1
13:30 - 15:00
Description about Practice 1
15:00
Coffee Break
Coffee Break
15:00 - 15:30
15:30
Practice 2
Practice 2
15:30 - 17:00
Description about Practice 1
Tuesday 7 October 2025
07:45
Breakfast
Breakfast
07:45 - 08:45
08:45
Writing parallel software
-
Sebastien Ponce
(
CERN
)
Writing parallel software
Sebastien Ponce
(
CERN
)
08:45 - 09:45
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
09:45
Writing efficient software
-
Sebastien Ponce
(
CERN
)
Writing efficient software
Sebastien Ponce
(
CERN
)
09:45 - 10: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
10:45
Announcements
Announcements
10:45 - 11:00
11:00
School Photo
School Photo
11:00 - 11:05
11:05
Coffee break
Coffee break
11:05 - 11:30
11:30
Low-level Performance Optimization
-
Guilherme Amadio
(
CERN
)
Low-level Performance Optimization
Guilherme Amadio
(
CERN
)
11:30 - 12:30
CPU Architecture and High Performance - lecture 3 - Main sources of performance bottlenecks - Floating point arithmetics performance - Advanced low-level performance tuning
12:30
Data-Oriented Design
-
Guilherme Amadio
(
CERN
)
Data-Oriented Design
Guilherme Amadio
(
CERN
)
12:30 - 13:30
CPU Architecture and High Performance - lecture 4 - Principles of data-oriented design - Memory access and data-type profiling - Data structure performance optimization
13:30
Lunch
Lunch
13:30 - 14:30
14:30
Study or sports time
Study or sports time
14:30 - 16:00
16:00
Coffee break
Coffee break
16:00 - 16:30
16:30
Optimizing existing large codebase
-
Sebastien Ponce
(
CERN
)
Optimizing existing large codebase
Sebastien Ponce
(
CERN
)
16:30 - 17:30
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++
17:30
Student lightning talks
Student lightning talks
17:30 - 18:15
18:15
CPU Architecture and High Performance - exercise 2
-
Guilherme Amadio
(
CERN
)
CPU Architecture and High Performance - exercise 2
Guilherme Amadio
(
CERN
)
18:15 - 19:15
19:30
Dinner
Dinner
19:30 - 20:30
Wednesday 8 October 2025
07:45
Breakfast
Breakfast
07:45 - 08:45
08:45
Scientific computing on heterogeneous architectures
-
Daniel Hugo Campora Perez
(
NVIDIA
)
Scientific computing on heterogeneous architectures
Daniel Hugo Campora Perez
(
NVIDIA
)
08:45 - 09: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
09:45
Optimizing existing large codebase - exercise 1
-
Sebastien Ponce
(
CERN
)
Optimizing existing large codebase - exercise 1
Sebastien Ponce
(
CERN
)
09:45 - 10:45
Optimisation of an existing, production grade large codebase
10:45
Announcements
Announcements
10:45 - 11:00
11:00
Coffee break
Coffee break
11:00 - 11:15
11:15
Optimizing existing large codebase - exercise 2
-
Sebastien Ponce
(
CERN
)
Optimizing existing large codebase - exercise 2
Sebastien Ponce
(
CERN
)
11:15 - 12:15
Optimisation of an existing, production grade large codebase
12:15
Lunch
Lunch
12:15 - 13:00
13:00
River rafting excursion - Cetina River
River rafting excursion - Cetina River
13:00 - 18:00
18:30
Dinner at Kastel Slanica Omis
Dinner at Kastel Slanica Omis
18:30 - 20:30
20:30
Transport to Medils
Transport to Medils
20:30 - 21:30
Thursday 9 October 2025
07:45
Breakfast
Breakfast
07:45 - 08:45
08:45
Performant programming for GPUs
-
Daniel Campora
(
NVIDIA
)
Performant programming for GPUs
Daniel Campora
(
NVIDIA
)
08:45 - 09:45
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
09:45
Performant programming for GPUs
-
Daniel Campora
(
NVIDIA
)
Performant programming for GPUs
Daniel Campora
(
NVIDIA
)
09:45 - 10:45
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
10:45
Announcements
Announcements
10:45 - 11:00
11:00
Coffee break
Coffee break
11:00 - 11:30
11:30
Practical vectorization
-
Sebastien Ponce
(
CERN
)
Practical vectorization
Sebastien Ponce
(
CERN
)
11:30 - 12:30
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
12:30
Practical vectorization - exercise
-
Sebastien Ponce
(
CERN
)
Practical vectorization - exercise
Sebastien Ponce
(
CERN
)
12:30 - 13:30
13:30
Lunch
Lunch
13:30 - 14:30
14:30
Study time or sports
Study time or sports
14:30 - 16:30
16:30
Coffee break
Coffee break
16:30 - 17:00
17:00
Programming for heterogeneous architectures - exercise
-
Daniel Campora
(
NVIDIA
)
Programming for heterogeneous architectures - exercise
Daniel Campora
(
NVIDIA
)
17:00 - 18:00
18:00
Programming for heterogeneous architectures - exercise
-
Daniel Campora
(
NVIDIA
)
Programming for heterogeneous architectures - exercise
Daniel Campora
(
NVIDIA
)
18:00 - 19:00
19:30
Dinner
Dinner
19:30 - 20:30
20:30
The Future of the Universe and Humanity
-
Ivica Puljak
(
Technical University of Split FESB
)
The Future of the Universe and Humanity
Ivica Puljak
(
Technical University of Split FESB
)
20:30 - 21:30
Friday 10 October 2025
07:45
Breakfast
Breakfast
07:45 - 08:45
08:45
Debrief of exercises
Debrief of exercises
08:45 - 09:45
09:45
Design patterns and best practices
-
Daniel Campora
(
NVIDIA
)
Design patterns and best practices
Daniel Campora
(
NVIDIA
)
09:45 - 10:45
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
10:45
Announcements
Announcements
10:45 - 11:00
11:00
Coffee break
Coffee break
11:00 - 11:30
11:30
Programming for heterogeneous architectures - exercise
-
Daniel Campora
(
NVIDIA
)
Programming for heterogeneous architectures - exercise
Daniel Campora
(
NVIDIA
)
11:30 - 12:30
12:30
Programming for heterogeneous architectures - exercise
-
Daniel Campora
(
NVIDIA
)
Programming for heterogeneous architectures - exercise
Daniel Campora
(
NVIDIA
)
12:30 - 13:30
13:30
Lunch
Lunch
13:30 - 14:30
14:30
Exam
Exam
14:30 - 15:30
15:30
Coffee break
Coffee break
15:30 - 16:00
16:00
Free time
Free time
16:00 - 18:30
18:30
Closing Session
Closing Session
18:30 - 19:30
19:30
Closing dinner Medils
Closing dinner Medils
19:30 - 21:30
Saturday 11 October 2025
07:30
Breakfast
Breakfast
07:30 - 08:30
09:00
Departures
Departures
09:00 - 11:30