View on GitHub

Heterogeneous programming with Kokkos

raining material for the session 'Heterogeneous programming with Kokkos'

As the diversity of hardware accelerators increases, and CPUs keep adding more cores, it becomes increasingly important to write software that can run in a heterogeneous environment. This training will introduce you to Kokkos, a programming model that allows you to write code that can run on CPUs, GPUs, and other accelerators. Kokkos is a C++ library that provides abstractions for parallel programming, and can generate code for different hardware platforms.

Learning outcomes

When you complete this training, you will

Schedule

Schedule

Total duration: 6 hours, split over two sessions.

Session one

Total duration: 3 hours

Subject Duration
introduction and motivation 5 min.
GPU hardware and general programming model 85 min.
coffee break 10 min.
installation and building 20 min.
Kokkos views 60 min.

Session two

4otal duration: 3 hours

Subject Duration
Kokkos executtion patterns 30 min.
Kokkos execution spaces 30 min.
code examples 30 min.
coffee break 10 min.
Kokkos nested parallelism 30 min.
Kokkos scratch pads 20 min.
Kokkos libraries and kernels 20 min.
wrap-up & questions 10 min.

Training materials

Slides and source code are available in the GitHub repository, as well as example code and hands-on material.

Target audience

This training is for you if you want to develop software that can run on CPUs, GPUs, and other accelerators.

Prerequisites

You should be familiar with C++. Familiarity with a Linux environment is also required.

More concretely, participants should already be comfortable with the following:

You do not need prior experience with Kokkos itself, execution spaces, views,

Training materials

Slides and source code are available in the GitHub repository, as well as example code and hands-on material.

Target audience

This training is for you if you want to develop software that can run on CPUs, GPUs, and other accelerators.

Prerequisites

You should be familiar with C++. Familiarity with a Linux environment is also required.

More concretely, participants should already be comfortable with the following:

You do not need prior experience with Kokkos itself, execution spaces, views,

Training materials

Slides and source code are available in the GitHub repository, as well as example code and hands-on material.

Target audience

This training is for you if you want to develop software that can run on CPUs, GPUs, and other accelerators.

Prerequisites

You should be familiar with C++. Familiarity with a Linux environment is also required.

More concretely, participants should already be comfortable with the following:

You do not need prior experience with Kokkos itself, execution spaces, views, team policies, device memory, or backend-specific GPU programming such as CUDA or HIP. Those are part of the training itself.

Quick self-assessment

If you can do most of the tasks below without looking up basic C++ or shell syntax, you are likely ready for this training.

If several of these items still feel difficult, the training will probably move too fast. In that case, it is better to first refresh modern C++ basics and, if needed, take a short introduction to parallel programming concepts.

Level of the Material

For participants who already have basic to intermediate C++ programming experience, the material in this training is approximately

These percentages describe the level of the heterogeneous-programming and Kokkos topics covered in the training, not the required entry level in C++ itself.

Trainer(s)