CExA organizes a Kokkos hackathon in January 12-16 at Maison de la Simulation (MdlS). This training is two-fold. It first features a full-day traditional Kokkos course targeted to beginners, or users who would like to refresh their knowledge of the library. It then proposes a 3-day hackathon, where teams of participants eager to go further would accelerate and optimize a solver using Kokkos. Users can choose to attend either or both parts of the training. Computers with access to a local GPU cluster will be provided.
Registration is free but mandatory, there is a limit of 90 attendants for the course, and 45 attendants for the hackathon.
The course
The course teaches the basis of Kokkos and of GPU programming.1 The difference between CPU and GPU for numerical computation are highlighted. The Kokkos data containers and parallel constructs are introduced. Practical examples will be given live by the teacher.
Outline
- Introduction
- Basic concepts of Kokkos
- Compilation
- Starting and compiling a Kokkos program
- Data container
- Parallel loops
- Extending loop policies
- Parallel reduction
- Conclusion
The hackathon
The hackathon is based on a lightweight version of MiniPIC,2 a pedagogic, single-node, particles-in-cell (PIC) solver developed by M. Lobet et al., CEA.3 With the support of trainers, participants will team up in groups of three to accelerate a sequential version of the code, where Kokkos data containers and some Kokkos loops are already present. Each team will profile it with Kokkos-tools and NVIDIA tools (namely, Nsight Systems and Nsight Compute), and optimize it with Kokkos features. In the end the teams will compare the performance of their resulting code while keeping its accuracy.
Outline
Note that the following notions may be discussed during the hackathon depending on the progress of the teams.
- Profiling and debugging;
- Atomic operations;
- Hierarchical parallelism.
Pre-requisites
| Notion | Course | Hackathon |
|---|---|---|
| C++ | Basic | Intermediate |
| Parallel programming | Basic | Basic |
| CMake | Basic | Basic |
| Linux | Basic | Intermediate* |
| Kokkos | None | Basic |
*use of SSH and submission of Slurm jobs.