Loading Events

« All Events

  • 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:30Welcome/ENCCS introduction
09:30–11:30Algorithms and complexity
11:30–13:00Compilers and optimizations

Day 2 - Tuesday, 14 November 2023

Time (CET)Topic
09:00–09:20Introduction
09:20–11:00Instruction level parallelism
11:00–13:00Memory hierarchies

Day 3 - Wednesday, 15 November 2023

Time (CET)Topic
09:00–09:20Introduction to tuning matrix
multiplication
09:20–11:00Vectorization
11:00–13:00Blocking

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