Kokkos Introduction Tutorial
Nathan Ellingwood and Jeff Miles (Sandia National Laboratories)
Room: Capitol Hill
Kokkos is a C++ Programming Model for Performance Portability developed by a team spanning some of the major HPC facilities in the world. It allows developers to implement their applications in a single source fashion, with hardware vendor agnostic programming patterns. Implemented as a C++ template meta programming library, Kokkos can be used with the primary tool chains on any HPC platforms. The model is used by many HPC applications both within and outside the US, and is the primary programming model for the efforts of the Sandia National Laboratory to make their engineering and science codes ready for exascale. At this point more than 100 projects are using Kokkos to obtain performance portability.
The tutorial will teach attendees the basics of Kokkos programming through a step-by-step sequence of lectures and hands-on exercises. Fundamental concerns of performance portable programming will be explained, and attendees will be provided with cloud instances to do the exercises on systems with GPUs and CPUs. At the end of the training, attendees will have learned how to dispatch parallel work with Kokkos, do parallel reductions, manage data, identify and manage data layout issues and expose hierarchical parallelism. The material used during the training will be available online, including the exercises and their solutions.