![]() |
Ginkgo
Generated from pipelines/2897303314 branch based on develop. Ginkgo version 2.0.0
A numerical linear algebra library targeting many-core architectures
|
ELL is a matrix format where stride with explicit zeros is used such that all rows have the same number of stored elements. More...
#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 > |
| using | device_view = matrix::view::ell< value_type, index_type > |
| using | const_device_view = matrix::view::ell< const value_type, const index_type > |
Public Types inherited from gko::EnableCloneable< Ell< ValueType, IndexType > > | |
| using | result_type = Ell< ValueType, IndexType > |
Public Types inherited from gko::ConvertibleTo< Ell< ValueType, IndexType > > | |
| using | result_type = Ell< ValueType, IndexType > |
Public Types inherited from gko::ConvertibleTo< Ell< next_precision< ValueType >, IndexType > > | |
| using | result_type = Ell< next_precision< ValueType >, IndexType > |
Public Types inherited from gko::ConvertibleTo< Dense< ValueType > > | |
| using | result_type = Dense< ValueType > |
Public Types inherited from gko::ConvertibleTo< Csr< ValueType, IndexType > > | |
| using | result_type = Csr< ValueType, IndexType > |
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< remove_complex< Ell< ValueType, IndexType > > > | |
| using | absolute_type = remove_complex< Ell< ValueType, IndexType > > |
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 (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 |
| Reads a matrix from a matrix_data structure. More... | |
| void | read (const device_mat_data &data) override |
| Reads a matrix from a device_matrix_data structure. More... | |
| void | read (device_mat_data &&data) override |
| Reads a matrix from a device_matrix_data structure. More... | |
| void | write (mat_data &data) const override |
| Writes a matrix to a matrix_data structure. More... | |
| std::unique_ptr< Diagonal< ValueType > > | extract_diagonal () const override |
| Extracts the diagonal entries of the matrix into a vector. More... | |
| std::unique_ptr< absolute_type > | compute_absolute () const override |
| Gets the AbsoluteLinOp. More... | |
| void | compute_absolute_inplace () override |
| Compute absolute inplace on each element. | |
| value_type * | get_values () noexcept |
| Returns the values of the matrix. More... | |
| const value_type * | get_const_values () const noexcept |
| Returns the values of the matrix. More... | |
| index_type * | get_col_idxs () noexcept |
| Returns the column indexes of the matrix. More... | |
| const index_type * | get_const_col_idxs () const noexcept |
| Returns the column indexes of the matrix. More... | |
| size_type | get_num_stored_elements_per_row () const noexcept |
| Returns the number of stored elements per row. More... | |
| size_type | get_stride () const noexcept |
| Returns the stride of the matrix. More... | |
| size_type | get_num_stored_elements () const noexcept |
| Returns the number of elements explicitly stored in the matrix. More... | |
| value_type & | val_at (size_type row, size_type idx) noexcept |
Returns the idx-th non-zero element of the row-th row . More... | |
| value_type | val_at (size_type row, size_type idx) const noexcept |
Returns the idx-th non-zero element of the row-th row . More... | |
| index_type & | col_at (size_type row, size_type idx) noexcept |
Returns the idx-th column index of the row-th row . More... | |
| index_type | col_at (size_type row, size_type idx) const noexcept |
Returns the idx-th column index of the row-th row . More... | |
| device_view | get_device_view () |
| get the non-owning device view | |
| const_device_view | get_const_device_view () const |
| get the const non-owning device view | |
| void | validate_data () const override |
| Throws gko::InvalidData exception if we found the data inside the object does not fulfill certain property up to our knowledge. | |
| Ell & | operator= (const Ell &) |
| Copy-assigns an Ell matrix. More... | |
| Ell & | operator= (Ell &&) |
| Move-assigns an Ell matrix. More... | |
| Ell (const Ell &) | |
| Copy-constructs an Ell matrix. More... | |
| Ell (Ell &&) | |
| Move-constructs an Ell matrix. More... | |
Public Member Functions inherited from gko::LinOp | |
| void | apply (ptr_param< const LinOp > b, ptr_param< LinOp > x) const |
| Applies a linear operator to a vector (or a sequence of vectors). More... | |
| void | apply (ptr_param< const LinOp > alpha, ptr_param< const LinOp > b, ptr_param< const LinOp > beta, ptr_param< LinOp > x) const |
| Performs the operation x = alpha * op(b) + beta * x. More... | |
| const dim< 2 > & | get_size () const noexcept |
| Returns the size of the operator. More... | |
| virtual bool | apply_uses_initial_guess () const |
| Returns true if the linear operator uses the data given in x as an initial guess. More... | |
| LinOp & | operator= (const LinOp &)=default |
| Copy-assigns a LinOp. More... | |
| LinOp & | operator= (LinOp &&other) |
| Move-assigns a LinOp. More... | |
| LinOp (const LinOp &)=default | |
| Copy-constructs a LinOp. More... | |
| LinOp (LinOp &&other) | |
| Move-constructs a LinOp. More... | |
Public Member Functions inherited from gko::PolymorphicObject | |
| PolymorphicObject & | operator= (const PolymorphicObject &) |
| std::shared_ptr< const Executor > | get_executor () const noexcept |
| Returns the Executor of the object. More... | |
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::EnableCloneable< Ell< ValueType, IndexType > > | |
| std::unique_ptr< Ell< ValueType, IndexType > > | clone (std::shared_ptr< const Executor > exec) const |
| Creates a clone of the object. More... | |
| std::unique_ptr< Ell< ValueType, IndexType > > | clone () const |
| Creates a clone of the object. More... | |
| void | convert_to (result_type *result) const override |
| Converts the implementer to an object of type result_type. More... | |
| void | move_to (result_type *result) override |
| Converts the implementer to an object of type result_type by moving data from this object. More... | |
| std::unique_ptr< Ell< ValueType, IndexType > > | create_default () const |
| std::unique_ptr< Ell< ValueType, IndexType > > | create_default (std::shared_ptr< const Executor > exec) const |
Public Member Functions inherited from gko::ConvertibleTo< Ell< ValueType, IndexType > > | |
| void | convert_to (ptr_param< result_type > result) const |
| void | move_to (ptr_param< result_type > result) |
Public Member Functions inherited from gko::Cloneable | |
| std::unique_ptr< Cloneable > | clone (std::shared_ptr< const Executor > exec) const |
| std::unique_ptr< Cloneable > | clone () const |
| Cloneable * | copy_from (ptr_param< const Cloneable > other) |
| Cloneable * | move_from (ptr_param< Cloneable > other) |
| std::unique_ptr< Cloneable > | create_default (std::shared_ptr< const Executor > exec) const |
| std::unique_ptr< Cloneable > | create_default () const |
Public Member Functions inherited from gko::ConvertibleTo< Ell< next_precision< ValueType >, IndexType > > | |
| virtual void | convert_to (result_type *result) const=0 |
| Converts the implementer to an object of type result_type. More... | |
| 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. More... | |
| void | move_to (ptr_param< result_type > result) |
Public Member Functions inherited from gko::ConvertibleTo< Dense< ValueType > > | |
| virtual void | convert_to (result_type *result) const=0 |
| Converts the implementer to an object of type result_type. More... | |
| 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. More... | |
| void | move_to (ptr_param< result_type > result) |
Public Member Functions inherited from gko::ConvertibleTo< Csr< ValueType, IndexType > > | |
| virtual void | convert_to (result_type *result) const=0 |
| Converts the implementer to an object of type result_type. More... | |
| 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. More... | |
| 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 |
| Extracts the diagonal entries of the matrix into a vector. More... | |
Public Member Functions inherited from gko::ReadableFromMatrixData< ValueType, IndexType > | |
| void | read (const matrix_assembly_data< ValueType, IndexType > &data) |
| Reads a matrix from a matrix_assembly_data structure. More... | |
Public Member Functions inherited from gko::WritableToMatrixData< ValueType, IndexType > | |
| virtual void | write (device_matrix_data< ValueType, IndexType > &data) const |
| Writes a matrix to a device_matrix_data structure. More... | |
Public Member Functions inherited from gko::EnableAbsoluteComputation< remove_complex< Ell< ValueType, IndexType > > > | |
| std::unique_ptr< LinOp > | compute_absolute_linop () const override |
| Gets the absolute LinOp. More... | |
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) |
| Creates an uninitialized Ell matrix of the specified size. More... | |
| 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) |
| Creates an ELL matrix from already allocated (and initialized) column index and value arrays. More... | |
| 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>, More... | |
| 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) |
| Creates a constant (immutable) Ell matrix from a set of constant arrays. More... | |
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.
| ValueType | precision of matrix elements |
| IndexType | precision of matrix indexes |
| gko::matrix::Ell< ValueType, IndexType >::Ell | ( | const Ell< ValueType, IndexType > & | ) |
Copy-constructs an Ell matrix.
Inherits executor and dimensions, but copies data without padding.
| 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).
|
inlinenoexcept |
Returns the idx-th column index of the row-th row .
| row | the row of the requested element |
| idx | the idx-th stored element of the row |
References gko::matrix::Ell< ValueType, IndexType >::get_const_col_idxs().
|
inlinenoexcept |
Returns the idx-th column index of the row-th row .
| row | the row of the requested element |
| idx | the idx-th stored element of the row |
References gko::matrix::Ell< ValueType, IndexType >::get_col_idxs().
|
overridevirtual |
Gets the AbsoluteLinOp.
Implements gko::EnableAbsoluteComputation< remove_complex< Ell< ValueType, IndexType > > >.
|
static |
Creates an ELL matrix from already allocated (and initialized) column index and value arrays.
| 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 |
col_idxs or values is 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.
|
inlinestatic |
create(std::shared_ptr<const Executor>,
create(std::shared_ptr<const Executor>, const dim<2>&, array<value_type>, array<index_type>, size_type, size_type)
References gko::matrix::Ell< ValueType, IndexType >::create().
|
static |
Creates an uninitialized Ell matrix of the specified size.
| 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. |
Referenced by gko::matrix::Ell< ValueType, IndexType >::create().
|
static |
Creates a constant (immutable) Ell matrix from a set of constant arrays.
| 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 |
|
overridevirtual |
Extracts the diagonal entries of the matrix into a vector.
| diag | the vector into which the diagonal will be written |
Implements gko::DiagonalExtractable< ValueType >.
|
inlinenoexcept |
Returns the column indexes of the matrix.
References gko::array< ValueType >::get_data().
Referenced by gko::matrix::Ell< ValueType, IndexType >::col_at().
|
inlinenoexcept |
Returns the column indexes of the matrix.
References gko::array< ValueType >::get_const_data().
Referenced by gko::matrix::Ell< ValueType, IndexType >::col_at().
|
inlinenoexcept |
Returns the values of the matrix.
References gko::array< ValueType >::get_const_data().
|
inlinenoexcept |
Returns the number of elements explicitly stored in the matrix.
References gko::array< ValueType >::get_size().
|
inlinenoexcept |
Returns the number of stored elements per row.
|
inlinenoexcept |
Returns the stride of the matrix.
|
inlinenoexcept |
Returns the values of the matrix.
References gko::array< ValueType >::get_data().
| 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.
| 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).
|
overridevirtual |
Reads a matrix from a device_matrix_data structure.
| data | the device_matrix_data structure. |
Reimplemented from gko::ReadableFromMatrixData< ValueType, IndexType >.
|
overridevirtual |
Reads a matrix from a matrix_data structure.
| data | the matrix_data structure |
Implements gko::ReadableFromMatrixData< ValueType, IndexType >.
|
overridevirtual |
Reads a matrix from a device_matrix_data structure.
The structure may be emptied by this function.
| data | the device_matrix_data structure. |
Reimplemented from gko::ReadableFromMatrixData< ValueType, IndexType >.
|
inlinenoexcept |
Returns the idx-th non-zero element of the row-th row .
| row | the row of the requested element |
| idx | the idx-th stored element of the row |
References gko::array< ValueType >::get_const_data().
|
inlinenoexcept |
Returns the idx-th non-zero element of the row-th row .
| row | the row of the requested element |
| idx | the idx-th stored element of the row |
References gko::array< ValueType >::get_data().
|
overridevirtual |
Writes a matrix to a matrix_data structure.
| data | the matrix_data structure |
Implements gko::WritableToMatrixData< ValueType, IndexType >.
1.8.16