GPU Programming: Why, When and How?
This workshop is based on a multilateral collaboration between GPU programming specialists from the Nordic countries. It is meant to help both software developers and decision-makers navigate the GPU programming landscape and make more informed decisions on which languages or frameworks to learn and use for their projects.
This workshop will cover basic aspects of GPU programming concepts and models including:
- GPU hardware and software ecosystem
- GPU programming concepts & models
- Directive-based models (OpenACC, OpenMP)
- Portable kernel-based models (Kokkos, OpenCL, SYCL, etc.)
- Non-portable kernel-based models I (CUDA, HIP)
- High-level language support (Python, Julia)
- Multi-GPU programming with MPI
- Preparing code for GPU porting
- Hand-on examples
What you will learn
- Understand why and when to use GPUs.
- Become comfortable with key concepts in GPU programming.
- Acquire a comprehensive overview of different software frameworks, what levels they operate at, and which to use when.
- Learn the fundamentals in at least one framework to a level which will enable you to quickly become a productive GPU programmer.
Prerequisites
This workshop is most relevant to researchers and engineers who already develop software that runs on CPUs in workstations or supercomputers. We recommend familiarity with one or more programming languages like C/C++, Fortran, Python or Julia.
However, the first morning session on November 12 (9:00-12:00) is appropriate also to decision-makers or project managers who don’t write code but make strategic decisions in software projects, whether it’s in academia, industry, or the public sector. If you wish to attend only the first morning session, please indicate so in the registration form.
In the final afternoon session, participants are invited to bring their own code, discuss it with experts and get concrete advice.
Agenda
Day 1 (Nov. 12) (Sweden time)
Time | Contents |
---|---|
09:00-09:20 | Welcome |
09:20-09:45 | Why GPUs? |
09:45-10:15 | GPU hardware and software ecosystem |
10:15-10:30 | Coffee break |
10:30-11:00 | What problems fit to GPU? |
11:00-11:30 | GPU programming concepts |
11:30-12:00 | Introduction to GPU programming models |
12:00-13:00 | Lunch break |
13:00-14:10 | Directive-based models (OpenACC, OpenMP) |
14:10-14:30 | Coffee break |
14:30-15:50 | Non-portable kernel-based models (CUDA, HIP) |
15:50-16:00 | Wrap-up |
Day 2 (Nov. 13)
Time | Contents |
---|---|
09:00-10:30 | Portable kernel-based models (C++ stdpar, Kokkos, OpenCL, SYCL) |
10:30-10:45 | Coffee break |
10:45-12:00 | Exercises (on various programming models) |
12:00-13:00 | Lunch break |
13:00-14:15 | High-level language support (Python and Julia) |
14:15-14:30 | Coffee break |
14:30-15:55 | Multi-GPU programming with MPI |
15:50-16:00 | Wrap-up |
Day 3 (Nov 14)
Time | Contents |
---|---|
09:00-10:00 | Preparing code for GPU porting |
10:00-10:30 | Recommendations and discussions |
10:30-10:45 | Coffee break |
10:45-11:55 | End-to-end GPU programming example |
11:55-12:00 | Wrap-up |
12:00-13:00 | Lunch break |
13:00-15:50 | Bring your code and get expert advice |
15:50-16:00 | Summary of this workshop |
Why learning GPU programming is important
Graphical processing units (GPUs) are the workhorse of many high-performance computing (HPC) systems around the world. Currently, the majority of HPC computing power available to researchers and engineers is provided by GPUs or other types of accelerators. Programming GPUs and other accelerators is thus increasingly important to developers who write software that is executed on HPC systems.
The landscape of GPU hardware, software, and programming environments is complicated. Multiple vendors compete in the high-end GPU market, each vendor provides their own software stack and development toolkits, and even beyond that, there is a proliferation of tools, languages, and frameworks that can be used to write code for GPUs. It can thus be difficult for individual developers and project owners to know how to navigate this landscape and select the most appropriate GPU programming framework for their projects based on the requirements of a given project and the technical specifics of existing code.
ENCCS Lessons
Have a look at ENCCS lesson materials where you can find multiple lessons on GPU programming, data analysis, HPC optimisation, and more!
More information and registration can be found on the ENCCS webpage.
The event lectures are available at the ENCCS repository.
Time
12.11.2024 - 14.11.2024
10:00 - 17:00
More information
EuroCC
Organizer
KTH in Sweden, HPC2N in Umeå, CSC in Finland, NRIS in Norway, Vilnius University in Lithuania, Aalto University in Finland, and ENCCS in Sweden