Kokkos provides two main capabilities for Trilinos. The first is an abstract programming interface (API) for handling memory and specify work for shared-memory parallel nodes (the Kokkos Node API). The second is a collection of local (non-distributed) distributed linear algebra classes and the kernels needed to realized their functionality in parallel (the Kokkos Linear Algebra kernels library).
Kokkos is typically not used in applications, but instead as a significant component in higher-level Trilinos packages, such as Tpetra. The functionality contained here-in has been put in the Kokkos package in order to facilitate code re-use and ease experimentation for kernel researchers.
Kokkos contains a number of classes. They can be categorized as follows:
Kokkos Node API
Kokkos Linear Algebra Kernels Library
Data structures:
Kokkos::CrsMatrix, Kokkos::CrsGraph class: Classes providing the storage structure for a row-oriented sparse matrix.
Kokkos::MultiVector class: A class providing the structure of a dense multivector. Here, as throughout most of Trilinos, a "multivector" refers to a collection of vectors, typically stored in a contiguous allocation of memory.
Arithmetic interfaces:
Kokkos::DefaultArithmetic: Provides basic functionality for perfoming arithmetic of multivectors.
Kokkos::DefaultSparseMultiply, Kokkos::DefaultSparseSolve: Provides basic functionality for computing multiplication and solve of a sparse matrix against a multivector.
Kokkos can be used as a stand-alone package. However, it also provides functionality for Tpetra and Tifpack.