Ell< ValueType, IndexType > Class Template Reference#
|
Reference API
|
#include <ginkgo/core/matrix/batch_ell.hpp>
Public Types | |
| using | value_type = ValueType |
| using | index_type = IndexType |
| using | unbatch_type = gko::matrix::Ell< value_type, index_type > |
| using | absolute_type = remove_complex< Ell > |
| using | complex_type = to_complex< Ell > |
Public Types inherited from gko::EnablePolymorphicAssignment< ConcreteBatchLinOp > | |
| using | result_type = ConcreteBatchLinOp |
Public Types inherited from gko::ConvertibleTo< ResultType > | |
| using | result_type = ResultType |
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 |
| std::unique_ptr< unbatch_type > | create_view_for_item (size_type item_id) |
| std::unique_ptr< const unbatch_type > | create_const_view_for_item (size_type item_id) const |
| 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 |
| index_type | get_num_stored_elements_per_row () const noexcept |
| size_type | get_num_stored_elements () const noexcept |
| size_type | get_num_elements_per_item () const noexcept |
| index_type * | get_col_idxs_for_item (size_type batch_id) noexcept |
| const index_type * | get_const_col_idxs_for_item (size_type batch_id) const noexcept |
| value_type * | get_values_for_item (size_type batch_id) noexcept |
| const value_type * | get_const_values_for_item (size_type batch_id) const noexcept |
| Ell * | apply (ptr_param< const MultiVector< value_type > > b, ptr_param< MultiVector< value_type > > x) |
| Ell * | apply (ptr_param< const MultiVector< value_type > > alpha, ptr_param< const MultiVector< value_type > > b, ptr_param< const MultiVector< value_type > > beta, ptr_param< MultiVector< value_type > > x) |
| const Ell * | apply (ptr_param< const MultiVector< value_type > > b, ptr_param< MultiVector< value_type > > x) const |
| const Ell * | apply (ptr_param< const MultiVector< value_type > > alpha, ptr_param< const MultiVector< value_type > > b, ptr_param< const MultiVector< value_type > > beta, ptr_param< MultiVector< value_type > > x) const |
| void | scale (const array< value_type > &row_scale, const array< value_type > &col_scale) |
| void | add_scaled_identity (ptr_param< const MultiVector< value_type > > alpha, ptr_param< const MultiVector< value_type > > beta) |
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< ConcreteBatchLinOp > | |
| 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) |
Static Public Member Functions | |
| static std::unique_ptr< Ell > | create (std::shared_ptr< const Executor > exec, const batch_dim< 2 > &size=batch_dim< 2 >{}, const IndexType num_elems_per_row=0) |
| static std::unique_ptr< Ell > | create (std::shared_ptr< const Executor > exec, const batch_dim< 2 > &size, const IndexType num_elems_per_row, array< value_type > values, array< index_type > col_idxs) |
| template<typename InputValueType , typename ColIndexType > | |
| static std::unique_ptr< Ell > | create (std::shared_ptr< const Executor > exec, const batch_dim< 2 > &size, const IndexType num_elems_per_row, std::initializer_list< InputValueType > values, std::initializer_list< ColIndexType > col_idxs) |
| create(std::shared_ptr<const Executor>,const batch_dim<2>&, const IndexType, array<value_type>,array<index_type>) | |
| static std::unique_ptr< const Ell > | create_const (std::shared_ptr< const Executor > exec, const batch_dim< 2 > &sizes, const index_type num_elems_per_row, gko::detail::const_array_view< value_type > &&values, gko::detail::const_array_view< index_type > &&col_idxs) |
Additional Inherited Members | |
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 |
Protected Attributes inherited from gko::log::EnableLogging< PolymorphicObject > | |
| std::vector< std::shared_ptr< const Logger > > | loggers_ |
Detailed Description
class gko::batch::matrix::Ell< ValueType, IndexType >
Ell is a sparse matrix format that stores the same number of nonzeros in each row, enabling coalesced accesses. It is suitable for sparsity patterns that have a similar number of nonzeros in every row. The values are stored in a column-major fashion similar to the monolithic gko::matrix::Ell class.
Similar to the monolithic gko::matrix::Ell class, invalid_index<IndexType> is used as the column index for padded zero entries.
- Note
- It is also assumed that the sparsity pattern of all the items in the batch is the same and therefore only a single copy of the sparsity pattern is stored.
- Currently only IndexType of int32 is supported.
- Template Parameters
-
ValueType value precision of matrix elements IndexType index precision of matrix elements
Member Function Documentation
◆ add_scaled_identity()
| void gko::batch::matrix::Ell< ValueType, IndexType >::add_scaled_identity | ( | ptr_param< const MultiVector< value_type > > | alpha, |
| ptr_param< const MultiVector< value_type > > | beta | ||
| ) |
Performs the operation this = alpha*I + beta*this.
- Parameters
-
alpha the scalar for identity beta the scalar to multiply this matrix
- Note
- Performs the operation in-place for this batch matrix.
- This operation fails in case this matrix does not have all its diagonal entries.
◆ apply() [1/4]
| Ell * gko::batch::matrix::Ell< ValueType, IndexType >::apply | ( | ptr_param< const MultiVector< value_type > > | alpha, |
| ptr_param< const MultiVector< value_type > > | b, | ||
| ptr_param< const MultiVector< value_type > > | beta, | ||
| ptr_param< MultiVector< value_type > > | x | ||
| ) |
Apply the matrix to a multi-vector with a linear combination of the given input vector. Represents the matrix vector multiplication, x = alpha * A
- b + beta * x, where x and b are both multi-vectors.
- Parameters
-
alpha the scalar to scale the matrix-vector product with b the multi-vector to be applied to beta the scalar to scale the x vector with x the output multi-vector
◆ apply() [2/4]
| const Ell * gko::batch::matrix::Ell< ValueType, IndexType >::apply | ( | ptr_param< const MultiVector< value_type > > | alpha, |
| ptr_param< const MultiVector< value_type > > | b, | ||
| ptr_param< const MultiVector< value_type > > | beta, | ||
| ptr_param< MultiVector< value_type > > | x | ||
| ) | const |
◆ apply() [3/4]
| Ell * gko::batch::matrix::Ell< ValueType, IndexType >::apply | ( | ptr_param< const MultiVector< value_type > > | b, |
| ptr_param< MultiVector< value_type > > | x | ||
| ) |
Apply the matrix to a multi-vector. Represents the matrix vector multiplication, x = A * b, where x and b are both multi-vectors.
- Parameters
-
b the multi-vector to be applied to x the output multi-vector
◆ apply() [4/4]
| const Ell * gko::batch::matrix::Ell< ValueType, IndexType >::apply | ( | ptr_param< const MultiVector< value_type > > | b, |
| ptr_param< MultiVector< value_type > > | x | ||
| ) | const |
◆ create() [1/3]
|
static |
Creates a Ell matrix from an already allocated (and initialized) array. The column indices array needs to be the same for all batch items.
- Parameters
-
exec Executor associated to the matrix size size of the matrix num_elems_per_row the number of elements to be stored in each row values array of matrix values col_idxs the col_idxs array of a single batch item of the matrix.
- Note
- If
valuesis not an rvalue, not an array of ValueType, or is on the wrong executor, an internal copy 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_elems_per_row the number of elements to be stored in each row
- Returns
- A smart pointer to the newly created matrix.
Referenced by gko::batch::matrix::Ell< ValueType, IndexType >::create().
◆ create_const()
|
static |
Creates a constant (immutable) batch ell matrix from a constant array. The column indices array needs to be the same for all batch items.
- Parameters
-
exec the executor to create the matrix on size the dimensions of the matrix num_elems_per_row the number of elements to be stored in each row values the value array of the matrix col_idxs the col_idxs array of a single batch item of the matrix.
- Returns
- A smart pointer to the constant matrix wrapping the input array (if it resides on the same executor as the matrix) or a copy of the array on the correct executor.
- A smart pointer to the newly created matrix.
◆ create_const_view_for_item()
| std::unique_ptr< const unbatch_type > gko::batch::matrix::Ell< ValueType, IndexType >::create_const_view_for_item | ( | size_type | item_id | ) | const |
Creates a mutable view (of matrix::Ell type) of one item of the batch::matrix::Ell<value_type> object. Does not perform any deep copies, but only returns a view of the data.
- Parameters
-
item_id The index of the batch item
- Returns
- a batch::matrix::Ell object with the data from the batch item at the given index.
◆ create_view_for_item()
| std::unique_ptr< unbatch_type > gko::batch::matrix::Ell< ValueType, IndexType >::create_view_for_item | ( | size_type | item_id | ) |
Creates a mutable view (of matrix::Ell type) of one item of the batch::matrix::Ell<value_type> object. Does not perform any deep copies, but only returns a view of the data.
- Parameters
-
item_id The index of the batch item
- Returns
- a batch::matrix::Ell object with the data from the batch item at the given index.
◆ get_col_idxs()
|
inlinenoexcept |
Returns a pointer to the array of column indices of the matrix
- Returns
- the pointer to the array of column indices
References gko::array< ValueType >::get_data().
◆ get_col_idxs_for_item()
|
inlinenoexcept |
Returns a pointer to the array of col_idxs of the matrix. This is shared across all batch items.
- Parameters
-
batch_id the id of the batch item.
- Returns
- the pointer to the array of col_idxs
References gko::array< ValueType >::get_data().
◆ get_const_col_idxs()
|
inlinenoexcept |
Returns a pointer to the array of column indices of the matrix
- Returns
- the pointer to the array of column indices
- 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_const_col_idxs_for_item()
|
inlinenoexcept |
Returns a pointer to the array of col_idxs of the matrix. This is shared across all batch items.
- Parameters
-
batch_id the id of the batch item.
- Returns
- the pointer to the array of col_idxs
- 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_const_values()
|
inlinenoexcept |
Returns a pointer to the array of values of the matrix
- Returns
- the pointer to the array of values
- 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_const_values_for_item()
|
inlinenoexcept |
Returns a pointer to the array of values of the matrix for a specific batch item.
- Parameters
-
batch_id the id of the batch item.
- Returns
- the pointer to the array of values
- 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(), and gko::batch::matrix::Ell< ValueType, IndexType >::get_num_elements_per_item().
◆ get_num_elements_per_item()
|
inlinenoexcept |
Returns the number of stored elements in each batch item.
- Returns
- the number of stored elements per batch item.
References gko::batch::matrix::Ell< ValueType, IndexType >::get_num_stored_elements().
Referenced by gko::batch::matrix::Ell< ValueType, IndexType >::get_const_values_for_item(), and gko::batch::matrix::Ell< ValueType, IndexType >::get_values_for_item().
◆ get_num_stored_elements()
|
inlinenoexcept |
Returns the number of elements explicitly stored in the batch matrix, cumulative across all the batch items.
- Returns
- the number of elements explicitly stored in the vector, cumulative across all the batch items
References gko::array< ValueType >::get_size().
Referenced by gko::batch::matrix::Ell< ValueType, IndexType >::get_num_elements_per_item().
◆ get_num_stored_elements_per_row()
|
inlinenoexcept |
Returns the number of elements per row explicitly stored.
- Returns
- the number of elements stored in each row of the ELL matrix. Same for each batch item
◆ get_values()
|
inlinenoexcept |
Returns a pointer to the array of values of the matrix
- Returns
- the pointer to the array of values
References gko::array< ValueType >::get_data().
◆ get_values_for_item()
|
inlinenoexcept |
Returns a pointer to the array of values of the matrix for a specific batch item.
- Parameters
-
batch_id the id of the batch item.
- Returns
- the pointer to the array of values
References gko::array< ValueType >::get_data(), and gko::batch::matrix::Ell< ValueType, IndexType >::get_num_elements_per_item().
◆ scale()
| void gko::batch::matrix::Ell< ValueType, IndexType >::scale | ( | const array< value_type > & | row_scale, |
| const array< value_type > & | col_scale | ||
| ) |
Performs in-place row and column scaling for this matrix.
- Parameters
-
row_scale the row scalars col_scale the column scalars
The documentation for this class was generated from the following file:
- ginkgo/core/matrix/batch_ell.hpp
Generated by
Public Types inherited from