Ell< ValueType, IndexType > Class Template Reference#
|
Reference API
|
#include <ginkgo/core/matrix/ell.hpp>
Public Types | |
| using | value_type = ValueType |
| using | index_type = IndexType |
| using | mat_data = matrix_data< ValueType, IndexType > |
| using | device_mat_data = device_matrix_data< ValueType, IndexType > |
| using | absolute_type = remove_complex< Ell > |
Public Types inherited from gko::EnablePolymorphicAssignment< ConcreteLinOp > | |
| using | result_type = ConcreteLinOp |
Public Types inherited from gko::ConvertibleTo< ResultType > | |
| using | result_type = ResultType |
Public Types inherited from gko::DiagonalExtractable< ValueType > | |
| using | value_type = ValueType |
Public Types inherited from gko::ReadableFromMatrixData< ValueType, IndexType > | |
| using | value_type = ValueType |
| using | index_type = IndexType |
Public Types inherited from gko::WritableToMatrixData< ValueType, IndexType > | |
| using | value_type = ValueType |
| using | index_type = IndexType |
Public Types inherited from gko::EnableAbsoluteComputation< AbsoluteLinOp > | |
| using | absolute_type = AbsoluteLinOp |
Public Member Functions | |
| void | convert_to (Ell< next_precision< ValueType >, IndexType > *result) const override |
| void | move_to (Ell< next_precision< ValueType >, IndexType > *result) override |
| void | convert_to (Ell< next_precision< next_precision< ValueType > >, IndexType > *result) const override |
| void | move_to (Ell< next_precision< next_precision< ValueType > >, IndexType > *result) override |
| void | convert_to (Dense< ValueType > *other) const override |
| void | move_to (Dense< ValueType > *other) override |
| void | convert_to (Csr< ValueType, IndexType > *other) const override |
| void | move_to (Csr< ValueType, IndexType > *other) override |
| void | read (const mat_data &data) override |
| void | read (const device_mat_data &data) override |
| void | read (device_mat_data &&data) override |
| void | write (mat_data &data) const override |
| std::unique_ptr< Diagonal< ValueType > > | extract_diagonal () const override |
| std::unique_ptr< absolute_type > | compute_absolute () const override |
| void | compute_absolute_inplace () override |
| value_type * | get_values () noexcept |
| const value_type * | get_const_values () const noexcept |
| index_type * | get_col_idxs () noexcept |
| const index_type * | get_const_col_idxs () const noexcept |
| size_type | get_num_stored_elements_per_row () const noexcept |
| size_type | get_stride () const noexcept |
| size_type | get_num_stored_elements () const noexcept |
| value_type & | val_at (size_type row, size_type idx) noexcept |
| value_type | val_at (size_type row, size_type idx) const noexcept |
| index_type & | col_at (size_type row, size_type idx) noexcept |
| index_type | col_at (size_type row, size_type idx) const noexcept |
| Ell & | operator= (const Ell &) |
| Ell & | operator= (Ell &&) |
| Ell (const Ell &) | |
| Ell (Ell &&) | |
Public Member Functions inherited from gko::EnableLinOp< ConcreteLinOp, PolymorphicBase > | |
| const ConcreteLinOp * | apply (ptr_param< const LinOp > b, ptr_param< LinOp > x) const |
| ConcreteLinOp * | apply (ptr_param< const LinOp > b, ptr_param< LinOp > x) |
| const ConcreteLinOp * | apply (ptr_param< const LinOp > alpha, ptr_param< const LinOp > b, ptr_param< const LinOp > beta, ptr_param< LinOp > x) const |
| ConcreteLinOp * | apply (ptr_param< const LinOp > alpha, ptr_param< const LinOp > b, ptr_param< const LinOp > beta, ptr_param< LinOp > x) |
Public Member Functions inherited from gko::EnableAbstractPolymorphicObject< AbstractObject, PolymorphicBase > | |
| std::unique_ptr< AbstractObject > | create_default (std::shared_ptr< const Executor > exec) const |
| std::unique_ptr< AbstractObject > | create_default () const |
| std::unique_ptr< AbstractObject > | clone (std::shared_ptr< const Executor > exec) const |
| std::unique_ptr< AbstractObject > | clone () const |
| AbstractObject * | copy_from (const PolymorphicObject *other) |
| template<typename Derived > | |
| std::enable_if_t< std::is_base_of< PolymorphicObject, std::decay_t< Derived > >::value, AbstractObject > * | copy_from (std::unique_ptr< Derived > &&other) |
| template<typename Derived > | |
| std::enable_if_t< std::is_base_of< PolymorphicObject, std::decay_t< Derived > >::value, AbstractObject > * | copy_from (const std::unique_ptr< Derived > &other) |
| AbstractObject * | copy_from (const std::shared_ptr< const PolymorphicObject > &other) |
| AbstractObject * | move_from (ptr_param< PolymorphicObject > other) |
| AbstractObject * | clear () |
Public Member Functions inherited from gko::PolymorphicObject | |
| PolymorphicObject & | operator= (const PolymorphicObject &) |
| std::unique_ptr< PolymorphicObject > | create_default (std::shared_ptr< const Executor > exec) const |
| std::unique_ptr< PolymorphicObject > | create_default () const |
| std::unique_ptr< PolymorphicObject > | clone (std::shared_ptr< const Executor > exec) const |
| std::unique_ptr< PolymorphicObject > | clone () const |
| PolymorphicObject * | copy_from (const PolymorphicObject *other) |
| template<typename Derived , typename Deleter > | |
| std::enable_if_t< std::is_base_of< PolymorphicObject, std::decay_t< Derived > >::value, PolymorphicObject > * | copy_from (std::unique_ptr< Derived, Deleter > &&other) |
| template<typename Derived , typename Deleter > | |
| std::enable_if_t< std::is_base_of< PolymorphicObject, std::decay_t< Derived > >::value, PolymorphicObject > * | copy_from (const std::unique_ptr< Derived, Deleter > &other) |
| PolymorphicObject * | copy_from (const std::shared_ptr< const PolymorphicObject > &other) |
| PolymorphicObject * | move_from (ptr_param< PolymorphicObject > other) |
| PolymorphicObject * | clear () |
| std::shared_ptr< const Executor > | get_executor () const noexcept |
Public Member Functions inherited from gko::log::EnableLogging< PolymorphicObject > | |
| void | add_logger (std::shared_ptr< const Logger > logger) override |
| void | remove_logger (const Logger *logger) override |
| void | remove_logger (ptr_param< const Logger > logger) |
| const std::vector< std::shared_ptr< const Logger > > & | get_loggers () const override |
| void | clear_loggers () override |
Public Member Functions inherited from gko::log::Loggable | |
| void | remove_logger (ptr_param< const Logger > logger) |
Public Member Functions inherited from gko::EnablePolymorphicAssignment< ConcreteLinOp > | |
| void | convert_to (result_type *result) const override |
| void | move_to (result_type *result) override |
Public Member Functions inherited from gko::ConvertibleTo< ResultType > | |
| virtual void | convert_to (result_type *result) const =0 |
| void | convert_to (ptr_param< result_type > result) const |
| virtual void | move_to (result_type *result)=0 |
| void | move_to (ptr_param< result_type > result) |
Public Member Functions inherited from gko::DiagonalExtractable< ValueType > | |
| std::unique_ptr< LinOp > | extract_diagonal_linop () const override |
Public Member Functions inherited from gko::ReadableFromMatrixData< ValueType, IndexType > | |
| void | read (const matrix_assembly_data< ValueType, IndexType > &data) |
Public Member Functions inherited from gko::EnableAbsoluteComputation< AbsoluteLinOp > | |
| std::unique_ptr< LinOp > | compute_absolute_linop () const override |
Static Public Member Functions | |
| static std::unique_ptr< Ell > | create (std::shared_ptr< const Executor > exec, const dim< 2 > &size={}, size_type num_stored_elements_per_row=0, size_type stride=0) |
| static std::unique_ptr< Ell > | create (std::shared_ptr< const Executor > exec, const dim< 2 > &size, array< value_type > values, array< index_type > col_idxs, size_type num_stored_elements_per_row, size_type stride) |
| template<typename InputValueType , typename InputColumnIndexType > | |
| static std::unique_ptr< Ell > | create (std::shared_ptr< const Executor > exec, const dim< 2 > &size, std::initializer_list< InputValueType > values, std::initializer_list< InputColumnIndexType > col_idxs, size_type num_stored_elements_per_row, size_type stride) |
| create(std::shared_ptr<const Executor>,const dim<2>&, array<value_type>, array<index_type>, size_type,size_type) | |
| static std::unique_ptr< const Ell > | create_const (std::shared_ptr< const Executor > exec, const dim< 2 > &size, gko::detail::const_array_view< ValueType > &&values, gko::detail::const_array_view< IndexType > &&col_idxs, size_type num_stored_elements_per_row, size_type stride) |
Protected Member Functions | |
| Ell (std::shared_ptr< const Executor > exec, const dim< 2 > &size={}, size_type num_stored_elements_per_row=0, size_type stride=0) | |
| Ell (std::shared_ptr< const Executor > exec, const dim< 2 > &size, array< value_type > values, array< index_type > col_idxs, size_type num_stored_elements_per_row, size_type stride) | |
| void | resize (dim< 2 > new_size, size_type max_row_nnz) |
| void | apply_impl (const LinOp *b, LinOp *x) const override |
| void | apply_impl (const LinOp *alpha, const LinOp *b, const LinOp *beta, LinOp *x) const override |
| size_type | linearize_index (size_type row, size_type col) const noexcept |
Protected Member Functions inherited from gko::EnableLinOp< ConcreteLinOp, PolymorphicBase > | |
| ConcreteLinOp * | self () noexcept |
| const ConcreteLinOp * | self () const noexcept |
Protected Member Functions inherited from gko::EnablePolymorphicObject< ConcreteObject, PolymorphicBase > | |
| std::unique_ptr< PolymorphicObject > | create_default_impl (std::shared_ptr< const Executor > exec) const override |
| PolymorphicObject * | copy_from_impl (const PolymorphicObject *other) override |
| PolymorphicObject * | copy_from_impl (std::unique_ptr< PolymorphicObject > other) override |
| PolymorphicObject * | move_from_impl (PolymorphicObject *other) override |
| PolymorphicObject * | move_from_impl (std::unique_ptr< PolymorphicObject > other) override |
| PolymorphicObject * | clear_impl () override |
Protected Member Functions inherited from gko::PolymorphicObject | |
| PolymorphicObject (std::shared_ptr< const Executor > exec) | |
| PolymorphicObject (const PolymorphicObject &other) | |
Protected Member Functions inherited from gko::log::EnableLogging< PolymorphicObject > | |
| void | log (Params &&... params) const |
Additional Inherited Members | |
Protected Attributes inherited from gko::log::EnableLogging< PolymorphicObject > | |
| std::vector< std::shared_ptr< const Logger > > | loggers_ |
Detailed Description
class gko::matrix::Ell< ValueType, IndexType >
ELL is a matrix format where stride with explicit zeros is used such that all rows have the same number of stored elements. The number of elements stored in each row is the largest number of nonzero elements in any of the rows (obtainable through get_num_stored_elements_per_row() method). This removes the need of a row pointer like in the CSR format, and allows for SIMD processing of the distinct rows. For efficient processing, the nonzero elements and the corresponding column indices are stored in column-major fashion. The columns are padded to the length by user-defined stride parameter whose default value is the number of rows of the matrix.
This implementation uses the column index value invalid_index<IndexType>() to mark padding entries that are not part of the sparsity pattern.
- Template Parameters
-
ValueType precision of matrix elements IndexType precision of matrix indexes
Constructor & Destructor Documentation
◆ Ell() [1/2]
| gko::matrix::Ell< ValueType, IndexType >::Ell | ( | const Ell< ValueType, IndexType > & | ) |
Copy-constructs an Ell matrix. Inherits executor and dimensions, but copies data without padding.
◆ Ell() [2/2]
| gko::matrix::Ell< ValueType, IndexType >::Ell | ( | Ell< ValueType, IndexType > && | ) |
Move-constructs an Ell matrix. Inherits executor, dimensions and data with padding. The moved-from object is empty (0x0 with empty Array).
Member Function Documentation
◆ col_at() [1/2]
|
inlinenoexcept |
Returns the idx-th column index of the row-th row .
- Parameters
-
row the row of the requested element idx the idx-th stored element of the row
- Note
- the method has to be called on the same Executor the matrix is stored at (e.g. trying to call this method on a GPU matrix from the OMP results in a runtime error)
References gko::matrix::Ell< ValueType, IndexType >::get_const_col_idxs().
◆ col_at() [2/2]
|
inlinenoexcept |
Returns the idx-th column index of the row-th row .
- Parameters
-
row the row of the requested element idx the idx-th stored element of the row
- Note
- the method has to be called on the same Executor the matrix is stored at (e.g. trying to call this method on a GPU matrix from the OMP results in a runtime error)
References gko::matrix::Ell< ValueType, IndexType >::get_col_idxs().
◆ compute_absolute()
|
overridevirtual |
Gets the AbsoluteLinOp
- Returns
- a pointer to the new absolute object
Implements gko::EnableAbsoluteComputation< AbsoluteLinOp >.
◆ compute_absolute_inplace()
|
overridevirtual |
Compute absolute inplace on each element.
Implements gko::AbsoluteComputable.
◆ create() [1/3]
|
static |
Creates an ELL matrix from already allocated (and initialized) column index and value arrays.
- Parameters
-
exec Executor associated to the matrix size size of the matrix values array of matrix values col_idxs array of column indexes num_stored_elements_per_row the number of stored elements per row stride stride of the rows
- Note
- If one of
col_idxsorvaluesis not an rvalue, not an array of IndexType and ValueType, respectively, or is on the wrong executor, an internal copy of that array will be created, and the original array data will not be used in the matrix.
- Returns
- A smart pointer to the newly created matrix.
◆ create() [2/3]
|
inlinestatic |
◆ create() [3/3]
|
static |
Creates an uninitialized Ell matrix of the specified size.
- Parameters
-
exec Executor associated to the matrix size size of the matrix num_stored_elements_per_row the number of stored elements per row stride stride of the columns. If it is set to 0, size[0] will be used instead.
- Returns
- A smart pointer to the newly created matrix.
Referenced by gko::matrix::Ell< ValueType, IndexType >::create().
◆ create_const()
|
static |
Creates a constant (immutable) Ell matrix from a set of constant arrays.
- Parameters
-
exec the executor to create the matrix on size the dimensions of the matrix values the value array of the matrix col_idxs the column index array of the matrix num_stored_elements_per_row the number of stored nonzeros per row stride the column-stride of the value and column index array
- Returns
- A smart pointer to the constant matrix wrapping the input arrays (if they reside on the same executor as the matrix) or a copy of the arrays on the correct executor.
◆ extract_diagonal()
|
overridevirtual |
Extracts the diagonal entries of the matrix into a vector.
- Parameters
-
diag the vector into which the diagonal will be written
Implements gko::DiagonalExtractable< ValueType >.
◆ get_col_idxs()
|
inlinenoexcept |
Returns the column indexes of the matrix.
- Returns
- the column indexes of the matrix.
References gko::array< ValueType >::get_data().
Referenced by gko::matrix::Ell< ValueType, IndexType >::col_at().
◆ get_const_col_idxs()
|
inlinenoexcept |
Returns the column indexes of the matrix.
- Returns
- the column indexes of the matrix.
- Note
- This is the constant version of the function, which can be significantly more memory efficient than the non-constant version, so always prefer this version.
References gko::array< ValueType >::get_const_data().
Referenced by gko::matrix::Ell< ValueType, IndexType >::col_at().
◆ get_const_values()
|
inlinenoexcept |
Returns the values of the matrix.
- Returns
- the values of the matrix.
- Note
- This is the constant version of the function, which can be significantly more memory efficient than the non-constant version, so always prefer this version.
References gko::array< ValueType >::get_const_data().
◆ get_num_stored_elements()
|
inlinenoexcept |
Returns the number of elements explicitly stored in the matrix.
- Returns
- the number of elements explicitly stored in the matrix
References gko::array< ValueType >::get_size().
◆ get_num_stored_elements_per_row()
|
inlinenoexcept |
Returns the number of stored elements per row.
- Returns
- the number of stored elements per row.
◆ get_stride()
|
inlinenoexcept |
Returns the stride of the matrix.
- Returns
- the stride of the matrix.
◆ get_values()
|
inlinenoexcept |
Returns the values of the matrix.
- Returns
- the values of the matrix.
References gko::array< ValueType >::get_data().
◆ operator=() [1/2]
| Ell & gko::matrix::Ell< ValueType, IndexType >::operator= | ( | const Ell< ValueType, IndexType > & | ) |
Copy-assigns an Ell matrix. Preserves the executor, reallocates the matrix with minimal stride if the dimensions don't match, then copies the data over, ignoring padding.
◆ operator=() [2/2]
| Ell & gko::matrix::Ell< ValueType, IndexType >::operator= | ( | Ell< ValueType, IndexType > && | ) |
Move-assigns an Ell matrix. Preserves the executor, moves the data over preserving size and stride. Leaves the moved-from object in an empty state (0x0 with empty Array).
◆ read() [1/3]
|
overridevirtual |
Reads a matrix from a device_matrix_data structure.
- Parameters
-
data the device_matrix_data structure.
Reimplemented from gko::ReadableFromMatrixData< ValueType, IndexType >.
◆ read() [2/3]
|
overridevirtual |
Reads a matrix from a matrix_data structure.
- Parameters
-
data the matrix_data structure
Implements gko::ReadableFromMatrixData< ValueType, IndexType >.
◆ read() [3/3]
|
overridevirtual |
Reads a matrix from a device_matrix_data structure. The structure may be emptied by this function.
- Parameters
-
data the device_matrix_data structure.
Reimplemented from gko::ReadableFromMatrixData< ValueType, IndexType >.
◆ resize()
|
protected |
Resizes the matrix to the given dimensions and row nonzero count. If the dimensions or row nonzero count don't match their old values, the column stride will be reset to the number of rows and the internal storage reallocated to match these values.
- Parameters
-
new_size the new matrix dimensions max_row_nnz the new number of nonzeros per row
◆ val_at() [1/2]
|
inlinenoexcept |
Returns the idx-th non-zero element of the row-th row .
- Parameters
-
row the row of the requested element idx the idx-th stored element of the row
- Note
- the method has to be called on the same Executor the matrix is stored at (e.g. trying to call this method on a GPU matrix from the OMP results in a runtime error)
References gko::array< ValueType >::get_const_data().
◆ val_at() [2/2]
|
inlinenoexcept |
Returns the idx-th non-zero element of the row-th row .
- Parameters
-
row the row of the requested element idx the idx-th stored element of the row
- Note
- the method has to be called on the same Executor the matrix is stored at (e.g. trying to call this method on a GPU matrix from the OMP results in a runtime error)
References gko::array< ValueType >::get_data().
◆ write()
|
overridevirtual |
Writes a matrix to a matrix_data structure.
- Parameters
-
data the matrix_data structure
Implements gko::WritableToMatrixData< ValueType, IndexType >.
The documentation for this class was generated from the following files:
Generated by
Public Types inherited from