Morpheus 1.0.0
Dynamic matrix type and algorithms for sparse matrices
Loading...
Searching...
No Matches
Public Types | Public Member Functions | List of all members
Morpheus::CsrMatrix< ValueType, Properties > Class Template Reference

Implementation of the Compressed-Sparse Row (CSR) Sparse Matrix Format Representation. More...

#include <Morpheus_CsrMatrix.hpp>

Inheritance diagram for Morpheus::CsrMatrix< ValueType, Properties >:
Inheritance graph
[legend]
Collaboration diagram for Morpheus::CsrMatrix< ValueType, Properties >:
Collaboration graph
[legend]

Public Types

using traits = ContainerTraits< CsrMatrix, ValueType, Properties... >
 
using type = typename traits::type
 
using base = MatrixBase< CsrMatrix, ValueType, Properties... >
 
using tag = typename MatrixFormatTag< Morpheus::CsrFormatTag >::tag
 
using value_type = typename traits::value_type
 
using non_const_value_type = typename traits::non_const_value_type
 
using size_type = typename traits::size_type
 
using index_type = typename traits::index_type
 
using non_const_index_type = typename traits::non_const_index_type
 
using array_layout = typename traits::array_layout
 
using backend = typename traits::backend
 
using memory_space = typename traits::memory_space
 
using execution_space = typename traits::execution_space
 
using device_type = typename traits::device_type
 
using memory_traits = typename traits::memory_traits
 
using HostMirror = typename traits::HostMirror
 
using pointer = typename traits::pointer
 
using const_pointer = typename traits::const_pointer
 
using reference = typename traits::reference
 
using const_reference = typename traits::const_reference
 
using index_array_type = Morpheus::DenseVector< index_type, size_type, array_layout, backend, memory_traits >
 
using const_index_array_type = const index_array_type
 
using index_array_pointer = typename index_array_type::value_array_pointer
 
using index_array_reference = typename index_array_type::value_array_reference
 
using const_index_array_reference = const index_array_reference
 
using value_array_type = Morpheus::DenseVector< value_type, size_type, array_layout, backend, memory_traits >
 
using const_value_array_type = const value_array_type
 
using value_array_pointer = typename value_array_type::value_array_pointer
 
using value_array_reference = typename value_array_type::value_array_reference
 
using const_value_array_reference = const value_array_reference
 
- Public Types inherited from Morpheus::MatrixBase< CsrMatrix, ValueType, Properties... >
using type = MatrixBase< CsrMatrix, ValueType, Properties... >
 The traits associated with the particular container.
 
using traits = ContainerTraits< CsrMatrix, ValueType, Properties... >
 The type of the indices held by the container.
 
using size_type = typename traits::size_type
 
- Public Types inherited from Morpheus::ContainerTraits< Container, ValueType, Properties >
enum  { is_hostspace = std::is_same<MemorySpace, Kokkos::HostSpace>::value }
 
enum  { is_managed = MemoryTraits::is_unmanaged == 0 }
 
using value_type = ValueType
 The type of values held by the container.
 
using const_value_type = typename std::add_const< ValueType >::type
 The const type of values held by the container.
 
using non_const_value_type = typename std::remove_const< ValueType >::type
 The non-const type of values held by the container.
 
using index_type = IndexType
 The type of indices held by the container.
 
using size_type = size_t
 The size type of the container.
 
using non_const_index_type = typename std::remove_const< IndexType >::type
 The non-const type of indices held by the container.
 
using array_layout = ArrayLayout
 The storage layout of data held by the container.
 
using backend = Backend
 The backend out of which algorithms will be dispatched from.
 
using execution_space = ExecutionSpace
 The space in which member functions will be executed in.
 
using memory_space = MemorySpace
 The space in which data will be stored in.
 
using device_type = Morpheus::Device< execution_space, memory_space, backend >
 A device aware of the execution, memory spaces and backend.
 
using memory_traits = MemoryTraits
 Represents the user's intended access behaviour.
 
using host_mirror_backend = typename Morpheus::HostMirror< backend >::backend
 The host equivalent backend.
 
using type = Container< value_type, index_type, array_layout, backend, memory_traits >
 The complete type of the container.
 
using HostMirror = Container< non_const_value_type, non_const_index_type, array_layout, Morpheus::Device< typename host_mirror_backend::execution_space, typename host_mirror_backend::memory_space, typename host_mirror_backend::backend >, typename Kokkos::MemoryManaged >
 The host mirror equivalent for the container. More...
 
using pointer = typename std::add_pointer< type >::type
 The pointer type of the container.
 
using const_pointer = typename std::add_pointer< typename std::add_const< type >::type >::type
 The const pointer type of the container.
 
using reference = typename std::add_lvalue_reference< type >::type
 The reference type of the container.
 
using const_reference = typename std::add_lvalue_reference< typename std::add_const< type >::type >::type
 The const reference type of the container.
 

Public Member Functions

 ~CsrMatrix ()=default
 The default destructor.
 
 CsrMatrix (const CsrMatrix &)=default
 The default copy contructor (shallow copy) of a CsrMatrix container from another CsrMatrix container with the same properties.
 
 CsrMatrix (CsrMatrix &&)=default
 The default move contructor (shallow copy) of a CsrMatrix container from another CsrMatrix container with the same properties.
 
CsrMatrixoperator= (const CsrMatrix &)=default
 The default copy assignment (shallow copy) of a CsrMatrix container from another CsrMatrix container with the same properties.
 
CsrMatrixoperator= (CsrMatrix &&)=default
 The default move assignment (shallow copy) of a CsrMatrix container from another CsrMatrix container with the same properties.
 
 CsrMatrix ()
 Construct an empty CsrMatrix object.
 
 CsrMatrix (const size_type num_rows, const size_type num_cols, const size_type num_entries)
 Construct a CsrMatrix object with shape (num_rows, num_cols) and number of non-zeros equal to num_entries. More...
 
template<typename ValuePtr , typename IndexPtr >
 CsrMatrix (const size_type num_rows, const size_type num_cols, const size_type num_entries, IndexPtr roff_ptr, IndexPtr cind_ptr, ValuePtr vals_ptr, typename std::enable_if<(std::is_pointer< ValuePtr >::value &&is_same_value_type< value_type, ValuePtr >::value &&memory_traits::is_unmanaged) &&(std::is_pointer< IndexPtr >::value &&is_same_index_type< index_type, IndexPtr >::value &&memory_traits::is_unmanaged)>::type *=nullptr)
 
template<typename ValueArray , typename IndexArray >
 CsrMatrix (const size_type num_rows, const size_type num_cols, const size_type num_entries, IndexArray roff, IndexArray cind, ValueArray vals, typename std::enable_if< is_dense_vector_format_container< ValueArray >::value &&is_dense_vector_format_container< IndexArray >::value &&is_compatible< typename CsrMatrix::value_array_type, ValueArray >::value &&is_compatible< typename CsrMatrix::index_array_type, IndexArray >::value &&!ValueArray::memory_traits::is_unmanaged &&!IndexArray::memory_traits::is_unmanaged >::type *=nullptr)
 Construct a CsrMatrix object with shape (num_rows, num_cols) and number of non-zeros equal to num_entries and assign the indices and values from DenseVector arrays. More...
 
template<class VR , class... PR>
 CsrMatrix (const CsrMatrix< VR, PR... > &src, typename std::enable_if< is_format_compatible< CsrMatrix, CsrMatrix< VR, PR... > >::value >::type *=nullptr)
 Constructs a CsrMatrix from another compatible CsrMatrix. More...
 
template<class VR , class... PR>
std::enable_if< is_format_compatible< CsrMatrix, CsrMatrix< VR, PR... > >::value, CsrMatrix & >::type operator= (const CsrMatrix< VR, PR... > &src)
 Assigns a CsrMatrix from another compatible CsrMatrix. More...
 
template<class VR , class... PR>
 CsrMatrix (const DynamicMatrix< VR, PR... > &src, typename std::enable_if< is_dynamically_compatible< CsrMatrix, DynamicMatrix< VR, PR... > >::value >::type *=nullptr)
 Constructs a CsrMatrix from a compatible DynamicMatrix. More...
 
template<class VR , class... PR>
std::enable_if< is_dynamically_compatible< CsrMatrix, DynamicMatrix< VR, PR... > >::value, CsrMatrix & >::type operator= (const DynamicMatrix< VR, PR... > &src)
 Assigns a CsrMatrix from a compatible DynamicMatrix. More...
 
template<typename MatrixType >
 CsrMatrix (const MatrixType &src)=delete
 Construct a CsrMatrix object from another storage format. This functionality is disabled to avoid implicit copies and conversion operations. More...
 
template<typename MatrixType >
reference operator= (const MatrixType &src)=delete
 Assigns to CsrMatrix object from another storage format. This functionality is disabled to avoid implicit copies and conversion operations. More...
 
void resize (const size_type num_rows, const size_type num_cols, const size_type num_entries)
 Resizes CsrMatrix with shape of (num_rows, num_cols) and sets number of non-zero entries to num_entries. More...
 
template<class VR , class... PR>
void resize (const CsrMatrix< VR, PR... > &src)
 Resizes CsrMatrix with the shape and number of non-zero entries of another CsrMatrix with different parameters. More...
 
template<class VR , class... PR>
CsrMatrixallocate (const CsrMatrix< VR, PR... > &src)
 Allocates memory from another CsrMatrix container with different properties. More...
 
formats_e format_enum () const
 Returns the format enum assigned to the CsrMatrix container. More...
 
int format_index () const
 Returns the equivalent index to the format enum assigned to the CsrMatrix container. More...
 
MORPHEUS_FORCEINLINE_FUNCTION index_array_reference row_offsets (size_type n)
 Returns a reference to the row offset of the matrix with index n. More...
 
MORPHEUS_FORCEINLINE_FUNCTION index_array_reference column_indices (size_type n)
 Returns a reference to the column index of the matrix with index n. More...
 
MORPHEUS_FORCEINLINE_FUNCTION value_array_reference values (size_type n)
 Returns a reference to the value of the matrix with index n. More...
 
MORPHEUS_FORCEINLINE_FUNCTION const_index_array_reference crow_offsets (size_type n) const
 Returns a const-reference to the row offset of the matrix with index n. More...
 
MORPHEUS_FORCEINLINE_FUNCTION const_index_array_reference ccolumn_indices (size_type n) const
 Returns a const-reference to the column index of the matrix with index n. More...
 
MORPHEUS_FORCEINLINE_FUNCTION const_value_array_reference cvalues (size_type n) const
 Returns a const-reference to the value of the matrix with index n. More...
 
MORPHEUS_FORCEINLINE_FUNCTION index_array_typerow_offsets ()
 Returns a reference to the row offsets of the matrix. More...
 
MORPHEUS_FORCEINLINE_FUNCTION index_array_typecolumn_indices ()
 Returns a reference to the column indices of the matrix. More...
 
MORPHEUS_FORCEINLINE_FUNCTION value_array_typevalues ()
 Returns a reference to the values of the matrix. More...
 
MORPHEUS_FORCEINLINE_FUNCTION const_index_array_typecrow_offsets () const
 Returns a const-reference to the row offsets of the matrix. More...
 
MORPHEUS_FORCEINLINE_FUNCTION const_index_array_typeccolumn_indices () const
 Returns a const-reference to the column indices of the matrix. More...
 
MORPHEUS_FORCEINLINE_FUNCTION const_value_array_typecvalues () const
 Returns a reference to the values of the matrix. More...
 
- Public Member Functions inherited from Morpheus::MatrixBase< CsrMatrix, ValueType, Properties... >
 MatrixBase ()
 Default constructor. More...
 
 MatrixBase (size_type rows, size_type cols, size_type entries=0)
 Construct a MatrixBase object with shape (num_rows, num_cols) and number of non-zeros equal to num_entries. More...
 
void resize (size_type rows, size_type cols, size_type entries)
 Resizes MatrixBase with shape of (num_rows, num_cols) and sets number of non-zero entries to num_entries. More...
 
size_type nrows () const
 Number of rows of the matrix. More...
 
size_type ncols () const
 Number of columns of the matrix. More...
 
size_type nnnz () const
 Number of non-zeros of the matrix. More...
 
void set_nrows (const size_type rows)
 Set the number of rows of the matrix. More...
 
void set_ncols (const size_type cols)
 Set the number of columns of the matrix. More...
 
void set_nnnz (const size_type nnz)
 Set the number of non-zeros of the matrix. More...
 
MatrixStructure structure () const
 The specialized structure of the matrix e.g Symmetric. More...
 
MatrixOptions options () const
 Information about specific characteristics of the matrix e.g has short rows. More...
 
void set_structure (MatrixStructure op)
 Set the structure of the matrix. More...
 
void set_options (MatrixOptions op)
 Set the characteristics of the matrix. More...
 

Detailed Description

template<class ValueType, class... Properties>
class Morpheus::CsrMatrix< ValueType, Properties >

Implementation of the Compressed-Sparse Row (CSR) Sparse Matrix Format Representation.

Template Parameters
ValueTypeType of values to store
PropertiesOptional properties to modify the behaviour of the container. Sensible defaults are selected based on the configuration. Please refer to impl/Morpheus_ContainerTraits.hpp to find out more about the valid properties.
Overview
The CsrMatrix container is a two-dimensional container that represents a sparse matrix. This container is the compressed implementation of the COO Format, where the row indices array is compressed. In general, it allows for fast row access and matrix-vector multiplications and it is one of the most widely used formats. It is a polymorphic container in the sense that it can store scalar or integer type values, on host or device depending how the template parameters are selected.
Example
#include <Morpheus_Core.hpp>
// Matrix to Build
// [1 * 2]
// [* * 3]
// [* 4 *]
int main(){
using index_array_type = typename Matrix::index_array_type;
using value_array_type = typename Matrix::value_array_type;
index_array_type off(4, 0), j(4, 0);
off[0] = 0; off[1] = 2; off[2] = 3; off[3] = 4;
j[0] = 0; v[0] = 1;
j[1] = 2; v[1] = 2;
j[2] = 2; v[2] = 3;
j[3] = 1; v[3] = 4;
// Construct the matrix from off,j,v
Matrix A(3, 3, 4, off, j, v);
Morpheus::print(A); // prints A
}
Implementation of the Compressed-Sparse Row (CSR) Sparse Matrix Format Representation.
Definition: Morpheus_CsrMatrix.hpp:91

Member Typedef Documentation

◆ index_array_type

template<class ValueType , class... Properties>
using Morpheus::CsrMatrix< ValueType, Properties >::index_array_type = Morpheus::DenseVector<index_type, size_type, array_layout, backend, memory_traits>

The type of DenseVector that holds the index_type data

◆ index_type

template<class ValueType , class... Properties>
using Morpheus::CsrMatrix< ValueType, Properties >::index_type = typename traits::index_type

The type of the indices held by the container - can be const

◆ non_const_index_type

template<class ValueType , class... Properties>
using Morpheus::CsrMatrix< ValueType, Properties >::non_const_index_type = typename traits::non_const_index_type

The non-constant type of the indices held by the container

◆ non_const_value_type

template<class ValueType , class... Properties>
using Morpheus::CsrMatrix< ValueType, Properties >::non_const_value_type = typename traits::non_const_value_type

The non-constant type of the values held by the container

◆ tag

template<class ValueType , class... Properties>
using Morpheus::CsrMatrix< ValueType, Properties >::tag = typename MatrixFormatTag<Morpheus::CsrFormatTag>::tag

The tag associated specificaly to the particular container

◆ traits

template<class ValueType , class... Properties>
using Morpheus::CsrMatrix< ValueType, Properties >::traits = ContainerTraits<CsrMatrix, ValueType, Properties...>

The traits associated with the particular container

◆ type

template<class ValueType , class... Properties>
using Morpheus::CsrMatrix< ValueType, Properties >::type = typename traits::type

The complete type of the container

◆ value_array_type

template<class ValueType , class... Properties>
using Morpheus::CsrMatrix< ValueType, Properties >::value_array_type = Morpheus::DenseVector<value_type, size_type, array_layout, backend, memory_traits>

The type of DenseVector that holds the value_type data

◆ value_type

template<class ValueType , class... Properties>
using Morpheus::CsrMatrix< ValueType, Properties >::value_type = typename traits::value_type

The type of the values held by the container - can be const

Constructor & Destructor Documentation

◆ CsrMatrix() [1/5]

template<class ValueType , class... Properties>
Morpheus::CsrMatrix< ValueType, Properties >::CsrMatrix ( const size_type  num_rows,
const size_type  num_cols,
const size_type  num_entries 
)
inline

Construct a CsrMatrix object with shape (num_rows, num_cols) and number of non-zeros equal to num_entries.

Parameters
num_rowsNumber of rows of the matrix.
num_colsNumber of columns of the matrix.
num_entriesNumber of non-zero values in the matrix.

◆ CsrMatrix() [2/5]

template<class ValueType , class... Properties>
template<typename ValueArray , typename IndexArray >
Morpheus::CsrMatrix< ValueType, Properties >::CsrMatrix ( const size_type  num_rows,
const size_type  num_cols,
const size_type  num_entries,
IndexArray  roff,
IndexArray  cind,
ValueArray  vals,
typename std::enable_if< is_dense_vector_format_container< ValueArray >::value &&is_dense_vector_format_container< IndexArray >::value &&is_compatible< typename CsrMatrix< ValueType, Properties >::value_array_type, ValueArray >::value &&is_compatible< typename CsrMatrix< ValueType, Properties >::index_array_type, IndexArray >::value &&!ValueArray::memory_traits::is_unmanaged &&!IndexArray::memory_traits::is_unmanaged >::type = nullptr 
)
inlineexplicit

Construct a CsrMatrix object with shape (num_rows, num_cols) and number of non-zeros equal to num_entries and assign the indices and values from DenseVector arrays.

Template Parameters
ValueArrayValue type DenseVector type.
IndexArrayIndex type DenseVector type.
Parameters
num_rowsNumber of rows of the matrix.
num_colsNumber of columns of the matrix.
num_entriesNumber of non-zero values in the matrix.
rindDenseVector containing the row indices of the matrix.
cindDenseVector containing the column indices of the matrix.
valsDenseVector containing the values of the matrix.

◆ CsrMatrix() [3/5]

template<class ValueType , class... Properties>
template<class VR , class... PR>
Morpheus::CsrMatrix< ValueType, Properties >::CsrMatrix ( const CsrMatrix< VR, PR... > &  src,
typename std::enable_if< is_format_compatible< CsrMatrix< ValueType, Properties >, CsrMatrix< VR, PR... > >::value >::type = nullptr 
)
inline

Constructs a CsrMatrix from another compatible CsrMatrix.

Constructs a CsrMatrix from another compatible CsrMatrix i.e a
matrix that satisfies the is_format_compatible check.
Template Parameters
VRType of Values the Other Matrix holds.
PRProperties of the Other Matrix.
Parameters
srcThe matrix we are constructing from.

◆ CsrMatrix() [4/5]

template<class ValueType , class... Properties>
template<class VR , class... PR>
Morpheus::CsrMatrix< ValueType, Properties >::CsrMatrix ( const DynamicMatrix< VR, PR... > &  src,
typename std::enable_if< is_dynamically_compatible< CsrMatrix< ValueType, Properties >, DynamicMatrix< VR, PR... > >::value >::type = nullptr 
)
inline

Constructs a CsrMatrix from a compatible DynamicMatrix.

Overview
Constructs a CsrMatrix from a compatible DynamicMatrix i.e a matrix that satisfies the is_dynamically_compatible check. Note that when the active type of the dynamic matrix is different from the concrete type, this will result in an exception thrown.
Template Parameters
VRType of Values the Other Matrix holds.
PRProperties of the Other Matrix.
Parameters
srcThe matrix we are constructing from.

◆ CsrMatrix() [5/5]

template<class ValueType , class... Properties>
template<typename MatrixType >
Morpheus::CsrMatrix< ValueType, Properties >::CsrMatrix ( const MatrixType &  src)
delete

Construct a CsrMatrix object from another storage format. This functionality is disabled to avoid implicit copies and conversion operations.

Template Parameters
MatrixTypeAny of the supported storage formats.
Parameters
srcThe source container.

Member Function Documentation

◆ allocate()

template<class ValueType , class... Properties>
template<class VR , class... PR>
CsrMatrix & Morpheus::CsrMatrix< ValueType, Properties >::allocate ( const CsrMatrix< VR, PR... > &  src)
inline

Allocates memory from another CsrMatrix container with different properties.

Template Parameters
VRValue Type of the container we are allocating from.
PROptional properties of the container we are allocating from.
Parameters
srcThe CsrMatrix container we are allocating from.

◆ ccolumn_indices() [1/2]

template<class ValueType , class... Properties>
MORPHEUS_FORCEINLINE_FUNCTION const_index_array_type & Morpheus::CsrMatrix< ValueType, Properties >::ccolumn_indices ( ) const
inline

Returns a const-reference to the column indices of the matrix.

Returns
index_array_type& A const-reference to the column indices.

◆ ccolumn_indices() [2/2]

template<class ValueType , class... Properties>
MORPHEUS_FORCEINLINE_FUNCTION const_index_array_reference Morpheus::CsrMatrix< ValueType, Properties >::ccolumn_indices ( size_type  n) const
inline

Returns a const-reference to the column index of the matrix with index n.

Parameters
nIndex of the value to extract
Returns
Column index at index n

◆ column_indices() [1/2]

template<class ValueType , class... Properties>
MORPHEUS_FORCEINLINE_FUNCTION index_array_type & Morpheus::CsrMatrix< ValueType, Properties >::column_indices ( )
inline

Returns a reference to the column indices of the matrix.

Returns
index_array_type& A reference to the column indices.

◆ column_indices() [2/2]

template<class ValueType , class... Properties>
MORPHEUS_FORCEINLINE_FUNCTION index_array_reference Morpheus::CsrMatrix< ValueType, Properties >::column_indices ( size_type  n)
inline

Returns a reference to the column index of the matrix with index n.

Parameters
nIndex of the value to extract
Returns
Column index at index n

◆ crow_offsets() [1/2]

template<class ValueType , class... Properties>
MORPHEUS_FORCEINLINE_FUNCTION const_index_array_type & Morpheus::CsrMatrix< ValueType, Properties >::crow_offsets ( ) const
inline

Returns a const-reference to the row offsets of the matrix.

Returns
const index_array_type& A const reference to the row offsets.

◆ crow_offsets() [2/2]

template<class ValueType , class... Properties>
MORPHEUS_FORCEINLINE_FUNCTION const_index_array_reference Morpheus::CsrMatrix< ValueType, Properties >::crow_offsets ( size_type  n) const
inline

Returns a const-reference to the row offset of the matrix with index n.

Parameters
nIndex of the value to extract
Returns
Row offset at index n

◆ cvalues() [1/2]

template<class ValueType , class... Properties>
MORPHEUS_FORCEINLINE_FUNCTION const_value_array_type & Morpheus::CsrMatrix< ValueType, Properties >::cvalues ( ) const
inline

Returns a reference to the values of the matrix.

Returns
values_array_type& A reference to the values.

◆ cvalues() [2/2]

template<class ValueType , class... Properties>
MORPHEUS_FORCEINLINE_FUNCTION const_value_array_reference Morpheus::CsrMatrix< ValueType, Properties >::cvalues ( size_type  n) const
inline

Returns a const-reference to the value of the matrix with index n.

Parameters
nIndex of the value to extract
Returns
Value of the element at index n

◆ format_enum()

template<class ValueType , class... Properties>
formats_e Morpheus::CsrMatrix< ValueType, Properties >::format_enum ( ) const
inline

Returns the format enum assigned to the CsrMatrix container.

Returns
formats_e The format enum

◆ format_index()

template<class ValueType , class... Properties>
int Morpheus::CsrMatrix< ValueType, Properties >::format_index ( ) const
inline

Returns the equivalent index to the format enum assigned to the CsrMatrix container.

Returns
int The equivalent index to format_e

◆ operator=() [1/3]

template<class ValueType , class... Properties>
template<class VR , class... PR>
std::enable_if< is_format_compatible< CsrMatrix, CsrMatrix< VR, PR... > >::value, CsrMatrix & >::type Morpheus::CsrMatrix< ValueType, Properties >::operator= ( const CsrMatrix< VR, PR... > &  src)
inline

Assigns a CsrMatrix from another compatible CsrMatrix.

Overview
Assigns a CsrMatrix from another compatible CsrMatrix i.e a matrix that satisfies the is_format_compatible check.
Template Parameters
VRType of Values the Other Matrix holds.
PRProperties of the Other Matrix.
Parameters
srcThe matrix we are assigning from.

◆ operator=() [2/3]

template<class ValueType , class... Properties>
template<class VR , class... PR>
std::enable_if< is_dynamically_compatible< CsrMatrix, DynamicMatrix< VR, PR... > >::value, CsrMatrix & >::type Morpheus::CsrMatrix< ValueType, Properties >::operator= ( const DynamicMatrix< VR, PR... > &  src)
inline

Assigns a CsrMatrix from a compatible DynamicMatrix.

Overview
Assigns a CsrMatrix from a compatible DynamicMatrix i.e a matrix that satisfies the is_dynamically_compatible check. Note that when the active type of the dynamic matrix is different from the concrete type, this will result in an exception thrown.
Template Parameters
VRType of Values the Other Matrix holds.
PRProperties of the Other Matrix.
Parameters
srcThe matrix we are assigning from.

◆ operator=() [3/3]

template<class ValueType , class... Properties>
template<typename MatrixType >
reference Morpheus::CsrMatrix< ValueType, Properties >::operator= ( const MatrixType &  src)
delete

Assigns to CsrMatrix object from another storage format. This functionality is disabled to avoid implicit copies and conversion operations.

Template Parameters
MatrixTypeAny of the supported storage formats.
Parameters
srcThe source container.

◆ resize() [1/2]

template<class ValueType , class... Properties>
template<class VR , class... PR>
void Morpheus::CsrMatrix< ValueType, Properties >::resize ( const CsrMatrix< VR, PR... > &  src)
inline

Resizes CsrMatrix with the shape and number of non-zero entries of another CsrMatrix with different parameters.

Template Parameters
VRType of values the source matrix stores.
PROther properties of source matrix.
Parameters
srcThe source CsrMatrix we are resizing from.

◆ resize() [2/2]

template<class ValueType , class... Properties>
void Morpheus::CsrMatrix< ValueType, Properties >::resize ( const size_type  num_rows,
const size_type  num_cols,
const size_type  num_entries 
)
inline

Resizes CsrMatrix with shape of (num_rows, num_cols) and sets number of non-zero entries to num_entries.

Parameters
num_rowsNumber of rows of resized matrix.
num_colsNumber of columns of resized matrix.
num_entriesNumber of non-zero entries in resized matrix.

◆ row_offsets() [1/2]

template<class ValueType , class... Properties>
MORPHEUS_FORCEINLINE_FUNCTION index_array_type & Morpheus::CsrMatrix< ValueType, Properties >::row_offsets ( )
inline

Returns a reference to the row offsets of the matrix.

Returns
index_array_type& A reference to the row offsets.

◆ row_offsets() [2/2]

template<class ValueType , class... Properties>
MORPHEUS_FORCEINLINE_FUNCTION index_array_reference Morpheus::CsrMatrix< ValueType, Properties >::row_offsets ( size_type  n)
inline

Returns a reference to the row offset of the matrix with index n.

Parameters
nIndex of the value to extract
Returns
Row offset at index n

◆ values() [1/2]

template<class ValueType , class... Properties>
MORPHEUS_FORCEINLINE_FUNCTION value_array_type & Morpheus::CsrMatrix< ValueType, Properties >::values ( )
inline

Returns a reference to the values of the matrix.

Returns
value_array_type& A reference to the values.

◆ values() [2/2]

template<class ValueType , class... Properties>
MORPHEUS_FORCEINLINE_FUNCTION value_array_reference Morpheus::CsrMatrix< ValueType, Properties >::values ( size_type  n)
inline

Returns a reference to the value of the matrix with index n.

Parameters
nIndex of the value to extract
Returns
Value of the element at index n

The documentation for this class was generated from the following files: