ELL is a matrix format where stride with explicit zeros is used such that all rows have the same number of stored elements.
More...
|
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 |
| Extracts the diagonal entries of the matrix into a vector.
|
|
std::unique_ptr< absolute_type > | compute_absolute () const override |
| Gets the AbsoluteLinOp.
|
|
void | compute_absolute_inplace () override |
| Compute absolute inplace on each element.
|
|
value_type * | get_values () noexcept |
| Returns the values of the matrix.
|
|
const value_type * | get_const_values () const noexcept |
| Returns the values of the matrix.
|
|
index_type * | get_col_idxs () noexcept |
| Returns the column indexes of the matrix.
|
|
const index_type * | get_const_col_idxs () const noexcept |
| Returns the column indexes of the matrix.
|
|
size_type | get_num_stored_elements_per_row () const noexcept |
| Returns the number of stored elements per row.
|
|
size_type | get_stride () const noexcept |
| Returns the stride of the matrix.
|
|
size_type | get_num_stored_elements () const noexcept |
| Returns the number of elements explicitly stored in the matrix.
|
|
value_type & | val_at (size_type row, size_type idx) noexcept |
| Returns the idx -th non-zero element of the row -th row .
|
|
value_type | val_at (size_type row, size_type idx) const noexcept |
| Returns the idx -th non-zero element of the row -th row .
|
|
index_type & | col_at (size_type row, size_type idx) noexcept |
| Returns the idx -th column index of the row -th row .
|
|
index_type | col_at (size_type row, size_type idx) const noexcept |
| Returns the idx -th column index of the row -th row .
|
|
Ell & | operator= (const Ell &) |
| Copy-assigns an Ell matrix.
|
|
Ell & | operator= (Ell &&) |
| Move-assigns an Ell matrix.
|
|
| Ell (const Ell &) |
| Copy-constructs an Ell matrix.
|
|
| Ell (Ell &&) |
| Move-constructs an Ell matrix.
|
|
const Ell< default_precision, int32 > * | apply (ptr_param< const LinOp > b, ptr_param< LinOp > x) const |
|
Ell< default_precision, int32 > * | apply (ptr_param< const LinOp > b, ptr_param< LinOp > x) |
|
const Ell< default_precision, int32 > * | apply (ptr_param< const LinOp > alpha, ptr_param< const LinOp > b, ptr_param< const LinOp > beta, ptr_param< LinOp > x) const |
|
Ell< default_precision, int32 > * | apply (ptr_param< const LinOp > alpha, ptr_param< const LinOp > b, ptr_param< const LinOp > beta, ptr_param< LinOp > x) |
|
std::unique_ptr< Ell< default_precision, int32 > > | create_default (std::shared_ptr< const Executor > exec) const |
|
std::unique_ptr< Ell< default_precision, int32 > > | create_default () const |
|
std::unique_ptr< Ell< default_precision, int32 > > | clone (std::shared_ptr< const Executor > exec) const |
|
std::unique_ptr< Ell< default_precision, int32 > > | clone () const |
|
Ell< default_precision, int32 > * | copy_from (const PolymorphicObject *other) |
|
std::enable_if_t< std::is_base_of< PolymorphicObject, std::decay_t< Derived > >::value, Ell< default_precision, int32 > > * | copy_from (std::unique_ptr< Derived > &&other) |
|
std::enable_if_t< std::is_base_of< PolymorphicObject, std::decay_t< Derived > >::value, Ell< default_precision, int32 > > * | copy_from (const std::unique_ptr< Derived > &other) |
|
Ell< default_precision, int32 > * | copy_from (const std::shared_ptr< const PolymorphicObject > &other) |
|
Ell< default_precision, int32 > * | move_from (ptr_param< PolymorphicObject > other) |
|
Ell< default_precision, int32 > * | clear () |
|
LinOp * | apply (ptr_param< const LinOp > b, ptr_param< LinOp > x) |
| Applies a linear operator to a vector (or a sequence of vectors).
|
|
const LinOp * | apply (ptr_param< const LinOp > b, ptr_param< LinOp > x) const |
|
LinOp * | apply (ptr_param< const LinOp > alpha, ptr_param< const LinOp > b, ptr_param< const LinOp > beta, ptr_param< LinOp > x) |
| Performs the operation x = alpha * op(b) + beta * x.
|
|
const LinOp * | apply (ptr_param< const LinOp > alpha, ptr_param< const LinOp > b, ptr_param< const LinOp > beta, ptr_param< LinOp > x) const |
|
const dim< 2 > & | get_size () const noexcept |
| Returns the size of the operator.
|
|
virtual bool | apply_uses_initial_guess () const |
| Returns true if the linear operator uses the data given in x as an initial guess.
|
|
LinOp & | operator= (const LinOp &)=default |
| Copy-assigns a LinOp.
|
|
LinOp & | operator= (LinOp &&other) |
| Move-assigns a LinOp.
|
|
| LinOp (const LinOp &)=default |
| Copy-constructs a LinOp.
|
|
| LinOp (LinOp &&other) |
| Move-constructs a LinOp.
|
|
std::unique_ptr< LinOp > | create_default (std::shared_ptr< const Executor > exec) const |
|
std::unique_ptr< LinOp > | create_default () const |
|
std::unique_ptr< LinOp > | clone (std::shared_ptr< const Executor > exec) const |
|
std::unique_ptr< LinOp > | clone () const |
|
LinOp * | copy_from (const PolymorphicObject *other) |
|
std::enable_if_t< std::is_base_of< PolymorphicObject, std::decay_t< Derived > >::value, LinOp > * | copy_from (std::unique_ptr< Derived > &&other) |
|
std::enable_if_t< std::is_base_of< PolymorphicObject, std::decay_t< Derived > >::value, LinOp > * | copy_from (const std::unique_ptr< Derived > &other) |
|
LinOp * | copy_from (const std::shared_ptr< const PolymorphicObject > &other) |
|
LinOp * | move_from (ptr_param< PolymorphicObject > other) |
|
LinOp * | clear () |
|
PolymorphicObject & | operator= (const PolymorphicObject &) |
|
std::unique_ptr< PolymorphicObject > | create_default (std::shared_ptr< const Executor > exec) const |
| Creates a new "default" object of the same dynamic type as this object.
|
|
std::unique_ptr< PolymorphicObject > | create_default () const |
| Creates a new "default" object of the same dynamic type as this object.
|
|
std::unique_ptr< PolymorphicObject > | clone (std::shared_ptr< const Executor > exec) const |
| Creates a clone of the object.
|
|
std::unique_ptr< PolymorphicObject > | clone () const |
| Creates a clone of the object.
|
|
PolymorphicObject * | copy_from (const PolymorphicObject *other) |
| Copies another object into this object.
|
|
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) |
| Moves another object into this object.
|
|
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) |
| Copies another object into this object.
|
|
PolymorphicObject * | copy_from (const std::shared_ptr< const PolymorphicObject > &other) |
| Copies another object into this object.
|
|
PolymorphicObject * | move_from (ptr_param< PolymorphicObject > other) |
| Moves another object into this object.
|
|
PolymorphicObject * | clear () |
| Transforms the object into its default state.
|
|
std::shared_ptr< const Executor > | get_executor () const noexcept |
| Returns the Executor of the object.
|
|
void | add_logger (std::shared_ptr< const Logger > logger) override |
| Adds a new logger to the list of subscribed loggers.
|
|
void | remove_logger (const Logger *logger) override |
| Removes a logger from the list of subscribed loggers.
|
|
void | remove_logger (ptr_param< const Logger > logger) |
|
const std::vector< std::shared_ptr< const Logger > > & | get_loggers () const override |
| Returns the vector containing all loggers registered at this object.
|
|
void | clear_loggers () override |
| Remove all loggers registered at this object.
|
|
void | remove_logger (ptr_param< const Logger > logger) |
|
void | convert_to (result_type *result) const override |
|
void | move_to (result_type *result) override |
|
void | convert_to (ptr_param< result_type > result) const |
|
void | move_to (ptr_param< result_type > result) |
|
virtual void | convert_to (result_type *result) const=0 |
| Converts the implementer to an object of type result_type.
|
|
void | convert_to (ptr_param< result_type > result) const |
|
virtual void | move_to (result_type *result)=0 |
| Converts the implementer to an object of type result_type by moving data from this object.
|
|
void | move_to (ptr_param< result_type > result) |
|
virtual void | convert_to (result_type *result) const=0 |
| Converts the implementer to an object of type result_type.
|
|
void | convert_to (ptr_param< result_type > result) const |
|
virtual void | move_to (result_type *result)=0 |
| Converts the implementer to an object of type result_type by moving data from this object.
|
|
void | move_to (ptr_param< result_type > result) |
|
virtual void | convert_to (result_type *result) const=0 |
| Converts the implementer to an object of type result_type.
|
|
void | convert_to (ptr_param< result_type > result) const |
|
virtual void | move_to (result_type *result)=0 |
| Converts the implementer to an object of type result_type by moving data from this object.
|
|
void | move_to (ptr_param< result_type > result) |
|
virtual void | convert_to (result_type *result) const=0 |
| Converts the implementer to an object of type result_type.
|
|
void | convert_to (ptr_param< result_type > result) const |
|
virtual void | move_to (result_type *result)=0 |
| Converts the implementer to an object of type result_type by moving data from this object.
|
|
void | move_to (ptr_param< result_type > result) |
|
virtual void | read (const matrix_data< default_precision, int32 > &data)=0 |
| Reads a matrix from a matrix_data structure.
|
|
void | read (const matrix_assembly_data< default_precision, int32 > &data) |
| Reads a matrix from a matrix_assembly_data structure.
|
|
virtual void | read (const device_matrix_data< default_precision, int32 > &data) |
| Reads a matrix from a device_matrix_data structure.
|
|
virtual void | read (device_matrix_data< default_precision, int32 > &&data) |
| Reads a matrix from a device_matrix_data structure.
|
|
virtual void | write (matrix_data< default_precision, int32 > &data) const=0 |
| Writes a matrix to a matrix_data structure.
|
|
std::unique_ptr< LinOp > | compute_absolute_linop () const override |
| Gets the absolute LinOp.
|
|
template<typename ValueType = default_precision, typename IndexType = int32>
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 |