Thematic CERN School of Computing on Scientific Software for Heterogeneous Architectures
from
Sunday 5 October 2025 (15:00)
to
Saturday 11 October 2025 (11:30)
Sunday 5 October 2025
15:00
Registration
Registration
15:00 - 16:00
16:00
Welcome and introduction
Welcome and introduction
16:00 - 16:20
16:20
Self presentations
Self presentations
16:20 - 17:00
One minute-one slide self presentations
17:00
Transport to Split
Transport to Split
17:00 - 17:30
17:30
Guided tour of Split
Guided tour of Split
17:30 - 18:45
19:30
Welcome dinner at Restoran Para di šoto
Welcome dinner at Restoran Para di šoto
19:30 - 21:00
Monday 6 October 2025
07:45
Breakfast
Breakfast
07:45 - 08:45
08:45
Opening Session
-
Alberto Pace
(
CERN
)
Opening Session
Alberto Pace
(
CERN
)
08:45 - 09:45
09:45
Preparing for the HL-LHC computational challenge
-
Danilo Piparo
(
CERN
)
Preparing for the HL-LHC computational challenge
Danilo Piparo
(
CERN
)
09:45 - 10:45
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:45
Announcements
Announcements
10:45 - 11:00
11:00
Break
Break
11:00 - 11:30
11:30
CPU Hardware Architecture and Evolution
-
Guilherme Amadio
(
CERN
)
CPU Hardware Architecture and Evolution
Guilherme Amadio
(
CERN
)
11:30 - 12:30
CPU Architecture and High Performance - lecture 1 - Hardware evolution of the CPU - Memory hierarchy, caching, NUMA - Microarchitecture of modern CPUs
12:30
Performance Analysis on Modern CPUs
-
Guilherme Amadio
(
CERN
)
Performance Analysis on Modern CPUs
Guilherme Amadio
(
CERN
)
12:30 - 13:30
CPU Architecture and High Performance - lecture 2 - Performance analysis tools for Linux - CPU features for performance analysis - Top-down microarchitecture analysis
13:30
Lunch
Lunch
13:30 - 14:30
14:30
Study or Sports time
Study or Sports time
14:30 - 16:00
16:00
Break
Break
16:00 - 16:30
16:30
CPU Architecture and High Performance - exercise 1
-
Guilherme Amadio
(
CERN
)
CPU Architecture and High Performance - exercise 1
Guilherme Amadio
(
CERN
)
16:30 - 17:30
17:30
Student lightning talks
Student lightning talks
17:30 - 18:15
19:30
Dinner
Dinner
19:30 - 20:30
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
Coffee break
Coffee break
11:00 - 11:30
11:30
Low-level Performance Optimization Guidelines
-
Guilherme Amadio
(
CERN
)
Low-level Performance Optimization Guidelines
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
CPU Architecture and High Performance - exercise 2
-
Guilherme Amadio
(
CERN
)
CPU Architecture and High Performance - exercise 2
Guilherme Amadio
(
CERN
)
12:30 - 13:30
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
Data-Oriented Design
-
Guilherme Amadio
(
CERN
)
Data-Oriented Design
Guilherme Amadio
(
CERN
)
17:30 - 18:30
CPU Architecture and High Performance - lecture 4 - Principles of data-oriented design - Memory access and data-type profiling - Data structure performance optimization
18:30
Managing Large Databases: Challenges and Lessons
-
Andrzej Nowicki
(
CERN
)
Managing Large Databases: Challenges and Lessons
Andrzej Nowicki
(
CERN
)
18:30 - 19:30
With around 100 Oracle databases and several PB of data, CERN faces numerous intriguing challenges and unique caveats in regards to managing the database infrastructure. This lecture aims to provide an overview of both past and current issues and obstacles encountered in the realm of database systems at CERN. By doing so, it seeks to offer valuable insights into potential problems to avoid and effective solutions to address encountered difficulties.
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
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:45
15:45
Coffee break
Coffee break
15:45 - 16:20
16:20
Closing Session
Closing Session
16:20 - 17:20
17:20
Free time
Free time
17:20 - 19:20
19:30
Closing dinner Kavanazona
Closing dinner Kavanazona
19:30 - 21:30
Saturday 11 October 2025
07:30
Breakfast
Breakfast
07:30 - 08:30
09:00
Departures
Departures
09:00 - 11:30