- This event has passed.
High-Performance Programming
13 Nov 2023 @ 09:00 – 15 Nov 2023 @ 13:00 CET
Registrations are now closed.

Welcome to our online workshop on High-Performance Programming, focusing on single-core performance optimisation. Over the course of three half-day sessions, we will delve into the intricacies of algorithms, algorithms and complexity, cache efficiency, SIMD vectorisation, and compiler optimisations. We will keep a practical focus on useful techniques and mindsets.
Who is this workshop for?
We designed our workshop for those familiar with the C language, but it will also be relevant to Fortran programmers, with a hardware focus on modern 64-bit x86 systems. We will assume a Linux environment, as it is the most common in high-performance computing. Whether you’re a seasoned programmer looking to optimise your code or a newcomer to the field, this workshop offers valuable insights into the world of high-performance programming.
This workshop is an interactive online event, featuring live coding, demos, and practical exercises. We aim to equip you with the tools and knowledge to write efficient, high-performance code.
Join us for this exciting journey into the world of high-performance programming!
Prerequisites
- Some experience with programming in C.
- Some familiarity with the use of Linux and its shell to build and run programs.
- Some knowledge of computer hardware might be useful but is not necessary. A ton of curiosity will be a good substitute!
Key takeaways
After attending the workshop, you will:
- Be familiar with the most common complexity classes and the relationship between program structure and complexity.
- Be able to use some widely useful approaches to algorithmic efficiency like sharing, sparseness, and memoisation.
- Learn about how the compiler will translate your code, and what optimisations you can rely on the compiler to do
(so that you don’t need to make them). - Be aware of how you can check the output of the compiler if you are still unsure.
- Get to know the basic structure of a modern out-of-order issue processor core.
- Get to know how a modern memory hierarchy works and how to write code that utilizes caches efficiently.
- Learn about SIMD vectorisation and how you can utilise it.
- Get to know how to time your program and avoid the related pitfalls.
- Be aware of how you can use performance counters to further analyse the execution of your program.
Agenda
Day 1 – Monday, 13 November 2023
| Time (CET) | Topic |
|---|---|
| 09:00–09:30 | Welcome/ENCCS introduction |
| 09:30–11:30 | Algorithms and complexity |
| 11:30–13:00 | Compilers and optimizations |
Day 2 – Tuesday, 14 November 2023
| Time (CET) | Topic |
|---|---|
| 09:00–09:20 | Introduction |
| 09:20–11:00 | Instruction level parallelism |
| 11:00–13:00 | Memory hierarchies |
Day 3 – Wednesday, 15 November 2023
| Time (CET) | Topic |
|---|---|
| 09:00–09:20 | Introduction to tuning matrix multiplication |
| 09:20–11:00 | Vectorization |
| 11:00–13:00 | Blocking |
Lesson material
The High-performance lesson material will soon be added here.
Registration
You can register by using the following link https://events.prace-ri.eu/event/1545/registrations/1123/
Lessons
Disclaimer
This training is intended for users established in the European Union or a country associated with Horizon 2020. You can read more about the countries associated with Horizon2020 here https://ec.europa.eu/info/research-and-innovation/statistics/framework-programme-facts-and-figures/horizon-2020-country-profiles_e