This article was accepted into the corpus but its outbound wikilinks were never NER-processed — typical at the deepest BFS hop or when the run's entity cap was reached. No expansion funnel to show.
| Kokkos (programming model) | |
|---|---|
| Name | Kokkos |
| Developer | Sandia National Laboratories |
| Released | 2013 |
| Programming language | C++ |
| Operating system | Cross-platform |
| License | BSD |
Kokkos (programming model) is a C++ programming model and library developed to provide performance portability for parallel applications across heterogeneous hardware. It targets scientific computing workloads and aims to map high-level parallel constructs to diverse backends such as multicore Intel CPUs, NVIDIA GPUs, and manycore accelerators while integrating with ecosystem projects in high-performance computing like MPI and OpenMP. Kokkos is used in national laboratory codes and academic projects to abstract execution and memory while exposing tunable performance knobs.
Kokkos originated at Sandia National Laboratories as part of efforts related to exascale computing initiatives coordinated with agencies such as the U.S. Department of Energy and collaborations with centers like Lawrence Livermore National Laboratory and Argonne National Laboratory. The project aligns with initiatives including the Exascale Computing Project and has been shaped by requirements from simulation codes such as Lattice QCD, Computational Fluid Dynamics, and large-scale multiphysics frameworks developed at institutions including Oak Ridge National Laboratory and universities like University of California, Berkeley. Kokkos provides abstractions to insulate application developers from hardware-specific APIs while enabling tuning for platforms produced by vendors like AMD and IBM.
Kokkos exposes a C++-centric API that leverages modern language features standardized by bodies such as ISO C++ Standards Committee to express parallel patterns. The model separates concerns into execution policies, memory spaces, and data abstractions so that teams working in projects such as Trilinos or PETSc can write code portable across architectures. Its programming model maps high-level constructs to lower-level runtimes like CUDA for NVIDIA hardware, HIP for AMD GPUs, and OpenMP targets for processors from vendors including Intel and Arm. The design facilitates integration with build systems and continuous integration services used by institutions such as GitHub and Jenkins.
Kokkos provides typed memory spaces and data containers that abstract allocation and access patterns so that applications can target devices from NVIDIA, AMD, and companies like Micron. View and Mirror abstractions coordinate host-device coherence while enabling copy semantics used by codes in domains like Astrophysics and Materials Science at research centers including Brookhaven National Laboratory. Memory spaces interoperate with allocator strategies and tools from projects such as LLVM and benefit from tooling developed by communities around Valgrind and Intel performance tools. The model encourages explicit control of data placement to match caches and NUMA topologies found in systems at centers such as Argonne National Laboratory.
Kokkos defines execution spaces that represent backend runtimes, enabling mapping to thread pools and kernel launches on platforms from vendors like NVIDIA and AMD. Parallel patterns include parallel_for, parallel_reduce, and parallel_scan, mirroring algorithmic patterns seen in libraries such as Thrust and TBB developed by Intel. These primitives allow codes from communities like Climate Modeling and Seismology to express loop-level parallelism and reductions while relying on Kokkos to generate efficient device-specific code paths, similar in intent to portability approaches found in projects such as SYCL and OpenCL.
Kokkos pursues performance portability by enabling single-source portability while providing knobs for platform-specific tuning, appealing to developers from labs like Sandia National Laboratories and companies such as Cray Inc. Performance engineering uses metrics and tooling from ecosystems including Perf and vendor profilers from NVIDIA and Intel. The library supports hierarchical parallelism to exploit on-chip parallel structures found in GPU architectures and multicore processors manufactured by AMD and Intel, and exposes memory layout options to match cache behavior relevant to codes in Computational Chemistry and Plasma Physics.
Kokkos is implemented as a header-only C++ library with backends that integrate with vendor toolchains such as CUDA Toolkit and compiler infrastructures like GCC and Clang. It is distributed and developed collaboratively using platforms such as GitHub and coordinated with package ecosystems including Spack for deployment on supercomputers at facilities like Oak Ridge National Laboratory. The project interoperates with scientific software frameworks such as Trilinos, Albany, and community toolkits employed by institutions like Lawrence Berkeley National Laboratory.
Kokkos is adopted by application teams across national laboratories, universities, and industry for codes in domains including Computational Fluid Dynamics, Materials Science, Nuclear Engineering, and Astrophysics. Large-scale simulation projects and production codes maintained by organizations such as Sandia National Laboratories, Los Alamos National Laboratory, and academic groups at Massachusetts Institute of Technology use Kokkos to maintain portability across clusters built by vendors like HPE and system integrators such as Cray Inc.. Training and outreach occur at conferences and workshops sponsored by entities like ACM and IEEE where researchers and engineers discuss best practices and case studies involving Kokkos.
Category:Programming models