Home Knowledge Base Kokkos Performance Portability: C++ Abstraction Layer — enabling single-source code across CUDA, OpenMP, HIP, SYCL backends

Kokkos Performance Portability: C++ Abstraction Layer — enabling single-source code across CUDA, OpenMP, HIP, SYCL backends

Kokkos is a C++ performance portability framework from Sandia National Laboratories. It abstracts parallelism, memory, and synchronization, enabling code to port across GPUs (CUDA, HIP, SYCL, Intel GPU) and CPUs (OpenMP, Pthreads) via compile-time backend selection.

Execution Spaces and Memory Spaces

Execution spaces define where computation occurs (Cuda, OpenMP, Serial, SYCL, HIP, RAJA). Memory spaces define data location (CudaSpace, HostSpace, HBMSpace). Execution policy specifies execution space, work item type (thread/block), and tiling. MDRangePolicy enables 2D/3D parallelism with independent loop bounds; hierarchical policies expose thread teams for multi-level parallelism.

Kokkos::View Multidimensional Arrays

Kokkos::View abstracts multidimensional array layouts, memory spaces, and access patterns. Template parameters specify: data type, layout (LayoutLeft/LayoutRight—column/row-major), memory space, access permissions. Layout abstraction enables automatic performance tuning: LayoutLeft suits CUDA (coalesced access), LayoutRight suits CPUs (cache-friendly). Subview creates array slices without copy. Atomicity and reductions are encapsulated.

Thread Teams and Hierarchical Parallelism

Team-based policies expose two-level parallelism: coarse-grain teams (thread blocks) and fine-grain team members (threads). Kokkos::parallel_for(team_policy, [](member &team) { team.parallel_for(Kokkos::TeamVectorRange(team, N), & { ... }); }) enables nested parallelism portably. Shared team memory simulates GPU shared memory on CPUs via temporary allocations.

Parallel Operations

parallel_for executes function over index range. parallel_reduce combines parallel computation with reduction (sum, min, max) per team. parallel_scan (prefix sum) enables cumulative operations. Team-level operations reduce, scan, and barrier-synchronize teams collectively.

Trilinos Integration

Trilinos is a large-scale scientific computing library; Kokkos enables GPU acceleration in core packages (linear algebra, graph algorithms, sparse solvers). SNL production codes (ALEGRA, SIERRA) use Kokkos for portability. CMake-based build system enables backend selection at configure time.

kokkos portable programmingkokkos execution policykokkos view multidimensionalkokkos thread teamkokkos backends cuda openmp

Explore 500+ Semiconductor & AI Topics

From EUV lithography to CUDA optimization — search the full knowledge base or chat with our AI assistant.