Ginkgo
Generated from pipelines/1570051012 branch based on develop. Ginkgo version 1.9.0
A numerical linear algebra library targeting many-core architectures
|
Ell is a sparse matrix format that stores the same number of nonzeros in each row, enabling coalesced accesses. More...
#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< 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_with_half< ValueType >, IndexType > > | |
using | result_type = Ell< next_precision_with_half< ValueType >, IndexType > |
Public Member Functions | |
void | convert_to (Ell< next_precision_with_half< ValueType >, IndexType > *result) const override |
void | move_to (Ell< next_precision_with_half< ValueType >, IndexType > *result) override |
std::unique_ptr< unbatch_type > | 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. More... | |
std::unique_ptr< const unbatch_type > | 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. More... | |
value_type * | get_values () noexcept |
Returns a pointer to the array of values of the matrix. More... | |
const value_type * | get_const_values () const noexcept |
Returns a pointer to the array of values of the matrix. More... | |
index_type * | get_col_idxs () noexcept |
Returns a pointer to the array of column indices of the matrix. More... | |
const index_type * | get_const_col_idxs () const noexcept |
Returns a pointer to the array of column indices of the matrix. More... | |
index_type | get_num_stored_elements_per_row () const noexcept |
Returns the number of elements per row explicitly stored. More... | |
size_type | get_num_stored_elements () const noexcept |
Returns the number of elements explicitly stored in the batch matrix, cumulative across all the batch items. More... | |
size_type | get_num_elements_per_item () const noexcept |
Returns the number of stored elements in each batch item. More... | |
index_type * | get_col_idxs_for_item (size_type batch_id) noexcept |
Returns a pointer to the array of col_idxs of the matrix. More... | |
const index_type * | get_const_col_idxs_for_item (size_type batch_id) const noexcept |
Returns a pointer to the array of col_idxs of the matrix. More... | |
value_type * | get_values_for_item (size_type batch_id) noexcept |
Returns a pointer to the array of values of the matrix for a specific batch item. More... | |
const value_type * | get_const_values_for_item (size_type batch_id) const noexcept |
Returns a pointer to the array of values of the matrix for a specific batch item. More... | |
Ell * | apply (ptr_param< const MultiVector< value_type >> b, ptr_param< MultiVector< value_type >> x) |
Apply the matrix to a multi-vector. More... | |
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) |
Apply the matrix to a multi-vector with a linear combination of the given input vector. More... | |
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) |
Performs in-place row and column scaling for this matrix. More... | |
void | 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. More... | |
Public Member Functions inherited from gko::EnableAbstractPolymorphicObject< Ell< ValueType, IndexType >, BatchLinOp > | |
std::unique_ptr< Ell< ValueType, IndexType > > | create_default (std::shared_ptr< const Executor > exec) const |
std::unique_ptr< Ell< ValueType, IndexType > > | create_default () const |
std::unique_ptr< Ell< ValueType, IndexType > > | clone (std::shared_ptr< const Executor > exec) const |
std::unique_ptr< Ell< ValueType, IndexType > > | clone () const |
Ell< ValueType, IndexType > * | copy_from (const PolymorphicObject *other) |
std::enable_if_t< std::is_base_of< PolymorphicObject, std::decay_t< Derived > >::value, Ell< ValueType, IndexType > > * | copy_from (std::unique_ptr< Derived > &&other) |
std::enable_if_t< std::is_base_of< PolymorphicObject, std::decay_t< Derived > >::value, Ell< ValueType, IndexType > > * | copy_from (const std::unique_ptr< Derived > &other) |
Ell< ValueType, IndexType > * | copy_from (const std::shared_ptr< const PolymorphicObject > &other) |
Ell< ValueType, IndexType > * | move_from (ptr_param< PolymorphicObject > other) |
Ell< ValueType, IndexType > * | clear () |
Public Member Functions inherited from gko::EnablePolymorphicAssignment< Ell< ValueType, IndexType > > | |
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... | |
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::ConvertibleTo< Ell< next_precision_with_half< 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) |
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) |
Creates an uninitialized Ell matrix of the specified size. More... | |
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) |
Creates a Ell matrix from an already allocated (and initialized) array. More... | |
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>, More... | |
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) |
Creates a constant (immutable) batch ell matrix from a constant array. More... | |
Friends | |
class | EnablePolymorphicObject< Ell, BatchLinOp > |
class | Ell< to_complex< ValueType >, IndexType > |
class | Ell< previous_precision_with_half< 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.
ValueType | value precision of matrix elements |
IndexType | index precision of matrix elements |
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.
alpha | the scalar for identity |
beta | the scalar to multiply this matrix |
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
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 |
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 |
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.
b | the multi-vector to be applied to |
x | the output multi-vector |
const Ell* gko::batch::matrix::Ell< ValueType, IndexType >::apply | ( | ptr_param< const MultiVector< value_type >> | b, |
ptr_param< MultiVector< value_type >> | x | ||
) | const |
|
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.
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. |
values
is 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.
|
inlinestatic |
create(std::shared_ptr<const Executor>,
create(std::shared_ptr<const Executor>, const batch_dim<2>&, const IndexType, array<value_type>, array<index_type>)
References gko::batch::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_elems_per_row | the number of elements to be stored in each row |
Referenced by gko::batch::matrix::Ell< ValueType, IndexType >::create().
|
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.
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. |
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.
item_id | The index of the batch 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.
item_id | The index of the batch item |
|
inlinenoexcept |
Returns a pointer to the array of column indices of the matrix.
References gko::array< ValueType >::get_data().
|
inlinenoexcept |
Returns a pointer to the array of col_idxs of the matrix.
This is shared across all batch items.
batch_id | the id of the batch item. |
References gko::array< ValueType >::get_data().
|
inlinenoexcept |
Returns a pointer to the array of column indices of the matrix.
References gko::array< ValueType >::get_const_data().
|
inlinenoexcept |
Returns a pointer to the array of col_idxs of the matrix.
This is shared across all batch items.
batch_id | the id of the batch item. |
References gko::array< ValueType >::get_const_data().
|
inlinenoexcept |
Returns a pointer to the array of values of the matrix.
References gko::array< ValueType >::get_const_data().
|
inlinenoexcept |
Returns a pointer to the array of values of the matrix for a specific batch item.
batch_id | the id of the batch item. |
References gko::array< ValueType >::get_const_data(), and gko::batch::matrix::Ell< ValueType, IndexType >::get_num_elements_per_item().
|
inlinenoexcept |
Returns the number of stored elements in each 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().
|
inlinenoexcept |
Returns the number of elements explicitly stored in the batch matrix, 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().
|
inlinenoexcept |
Returns the number of elements per row explicitly stored.
|
inlinenoexcept |
Returns a pointer to the array of values of the matrix.
References gko::array< ValueType >::get_data().
|
inlinenoexcept |
Returns a pointer to the array of values of the matrix for a specific batch item.
batch_id | the id of the batch item. |
References gko::array< ValueType >::get_data(), and gko::batch::matrix::Ell< ValueType, IndexType >::get_num_elements_per_item().
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.
row_scale | the row scalars |
col_scale | the column scalars |