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.
Explore 500+ Semiconductor & AI Topics
From EUV lithography to CUDA optimization — search the full knowledge base or chat with our AI assistant.