Parallel Programming Languages, Libraries, Models and Notations
TimeMonday, November 13th1:30pm - 5pm
DescriptionThe Kokkos library enables applications and domain specific libraries/libraries to implement intra-node thread scalable algorithms that are performance portable across diverse manycore architectures. Kokkos uses C++ template meta-programming, as opposed to compiler extensions or source-to-source translators, to map user code onto architecture-targeted mechanisms such as OpenMP, Pthreads, and CUDA. Kokkos’ execution mapping inserts users’ parallel code bodies into well-defined parallel patterns and then uses an architecture-appropriate scheduling to execute the computation. Kokkos’ data mapping implements polymorphic layout multidimensional arrays that are allocated in architecture-abstracted memory spaces with a layout (e.g., row-major, column-major, tiled) appropriate for that architecture. By integrating execution and data mapping into a single programming model Kokkos eliminates the contemporary array-of-structures versus structure-of-arrays dilemma from user code. Kokkos’ programming model consists of the following extensible abstractions: execution spaces where computations execute, execution policies for scheduling computations, parallel patterns, memory spaces where data is allocated, array layouts mapping multi-indices onto memory, and data access intent traits to portably map data accesses to architecture-specific mechanisms such as GPU texture cache. Tutorial participants will learn Kokkos’ programming model through lectures, hands on exercises, and presented examples.