-
Notifications
You must be signed in to change notification settings - Fork 99
CrsMatrix
Luc Berger edited this page Jun 2, 2020
·
21 revisions
template<class ScalarType,
class OrdinalType,
class Device,
class MemoryTraits = void,
class SizeType = typename Kokkos::ViewTraits<OrdinalType*, Device, void, void>::size_type>
class CrsMatrix {
public:
//! Type of the matrix's execution space.
typedef typename Device::execution_space execution_space;
//! Type of the matrix's memory space.
typedef typename Device::memory_space memory_space;
//! Type of the matrix's device type.
typedef Kokkos::Device<execution_space, memory_space> device_type;
//! Type of each value in the matrix.
typedef ScalarType value_type;
//! Type of each (column) index in the matrix.
typedef OrdinalType ordinal_type;
typedef MemoryTraits memory_traits;
/// \brief Type of each entry of the "row map."
///
/// The "row map" corresponds to the \c ptr array of row offsets in
/// compressed sparse row (CSR) storage.
typedef SizeType size_type;
//! Type of a host-memory mirror of the sparse matrix.
typedef CrsMatrix<ScalarType, OrdinalType, host_mirror_space, MemoryTraits> HostMirror;
//! Type of the graph structure of the sparse matrix.
typedef Kokkos::StaticCrsGraph<ordinal_type, Kokkos::LayoutLeft, execution_space, memory_traits, size_type> StaticCrsGraphType;
//! Type of the graph structure of the sparse matrix - consistent with Kokkos.
typedef Kokkos::StaticCrsGraph<ordinal_type, Kokkos::LayoutLeft, execution_space, memory_traits, size_type> staticcrsgraph_type;
//! Type of column indices in the sparse matrix.
typedef typename staticcrsgraph_type::entries_type index_type;
//! Const version of the type of column indices in the sparse matrix.
typedef typename index_type::const_value_type const_ordinal_type;
//! Nonconst version of the type of column indices in the sparse matrix.
typedef typename index_type::non_const_value_type non_const_ordinal_type;
//! Type of the "row map" (which contains the offset for each row's data).
typedef typename staticcrsgraph_type::row_map_type row_map_type;
//! Const version of the type of row offsets in the sparse matrix.
typedef typename row_map_type::const_value_type const_size_type;
//! Nonconst version of the type of row offsets in the sparse matrix.
typedef typename row_map_type::non_const_value_type non_const_size_type;
//! Kokkos Array type of the entries (values) in the sparse matrix.
typedef Kokkos::View<value_type*, Kokkos::LayoutRight, device_type, MemoryTraits> values_type;
//! Const version of the type of the entries in the sparse matrix.
typedef typename values_type::const_value_type const_value_type;
//! Nonconst version of the type of the entries in the sparse matrix.
typedef typename values_type::non_const_value_type non_const_value_type;
/// \name Storage of the actual sparsity structure and values.
///
/// CrsMatrix uses the compressed sparse row (CSR) storage format to
/// store the sparse matrix. CSR is also called "compressed row
/// storage"; hence the name, which it inherits from Tpetra and from
/// Epetra before it.
//@{
//! The graph (sparsity structure) of the sparse matrix.
staticcrsgraph_type graph;
//! The 1-D array of values of the sparse matrix.
values_type values;
//@}
}