![]() |
Ginkgo Generated from branch based on master. Ginkgo version 1.7.0
A numerical linear algebra library targeting many-core architectures
|
MultiVector stores multiple vectors in a batched fashion and is useful for batched operations. More...
#include <ginkgo/core/base/batch_multi_vector.hpp>
Public Types | |
using | value_type = ValueType |
using | index_type = int32 |
using | unbatch_type = gko::matrix::Dense<ValueType> |
using | absolute_type = remove_complex<MultiVector<ValueType>> |
using | complex_type = to_complex<MultiVector<ValueType>> |
![]() | |
using | result_type = ResultType |
![]() | |
using | result_type = ResultType |
Public Member Functions | |
void | convert_to (MultiVector< next_precision< ValueType > > *result) const override |
void | move_to (MultiVector< next_precision< ValueType > > *result) override |
std::unique_ptr< unbatch_type > | create_view_for_item (size_type item_id) |
Creates a mutable view (of matrix::Dense type) of one item of the Batch MultiVector object. | |
std::unique_ptr< const unbatch_type > | create_const_view_for_item (size_type item_id) const |
Creates a mutable view (of matrix::Dense type) of one item of the Batch MultiVector object. | |
batch_dim< 2 > | get_size () const |
Returns the batch size. | |
size_type | get_num_batch_items () const |
Returns the number of batch items. | |
dim< 2 > | get_common_size () const |
Returns the common size of the batch items. | |
value_type * | get_values () noexcept |
Returns a pointer to the array of values of the multi-vector. | |
const value_type * | get_const_values () const noexcept |
Returns a pointer to the array of values of the multi-vector. | |
value_type * | get_values_for_item (size_type batch_id) noexcept |
Returns a pointer to the array of values of the multi-vector for a specific batch item. | |
const value_type * | get_const_values_for_item (size_type batch_id) const noexcept |
Returns a pointer to the array of values of the multi-vector for a specific batch item. | |
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. | |
size_type | get_cumulative_offset (size_type batch_id) const |
Get the cumulative storage size offset. | |
value_type & | at (size_type batch_id, size_type row, size_type col) |
Returns a single element for a particular batch item. | |
value_type | at (size_type batch_id, size_type row, size_type col) const |
Returns a single element for a particular batch item. | |
ValueType & | at (size_type batch_id, size_type idx) noexcept |
Returns a single element for a particular batch item. | |
ValueType | at (size_type batch_id, size_type idx) const noexcept |
Returns a single element for a particular batch item. | |
void | scale (ptr_param< const MultiVector< ValueType > > alpha) |
Scales the vector with a scalar (aka: BLAS scal). | |
void | add_scaled (ptr_param< const MultiVector< ValueType > > alpha, ptr_param< const MultiVector< ValueType > > b) |
Adds b scaled by alpha to the vector (aka: BLAS axpy). | |
void | compute_dot (ptr_param< const MultiVector< ValueType > > b, ptr_param< MultiVector< ValueType > > result) const |
Computes the column-wise dot product of each multi-vector in this batch and its corresponding entry in b . | |
void | compute_conj_dot (ptr_param< const MultiVector< ValueType > > b, ptr_param< MultiVector< ValueType > > result) const |
Computes the column-wise conjugate dot product of each multi-vector in this batch and its corresponding entry in b . | |
void | compute_norm2 (ptr_param< MultiVector< remove_complex< ValueType > > > result) const |
Computes the Euclidean (L^2) norm of each multi-vector in this batch. | |
void | fill (ValueType value) |
Fills the input MultiVector with a given value. | |
![]() | |
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 () |
![]() | |
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 |
Converts the implementer to an object of type result_type. | |
void | move_to (result_type *result) override |
Converts the implementer to an object of type result_type by moving data from this object. | |
![]() | |
void | convert_to (ptr_param< result_type > result) const |
void | move_to (ptr_param< result_type > result) |
Static Public Member Functions | |
static std::unique_ptr< MultiVector > | create_with_config_of (ptr_param< const MultiVector > other) |
Creates a MultiVector with the configuration of another MultiVector. | |
static std::unique_ptr< const MultiVector< ValueType > > | create_const (std::shared_ptr< const Executor > exec, const batch_dim< 2 > &sizes, gko::detail::const_array_view< ValueType > &&values) |
Creates a constant (immutable) batch multi-vector from a constant array. | |
![]() | |
template<typename... Args> | |
static std::unique_ptr< ConcreteType > | create (Args &&... args) |
Friends | |
class | EnableCreateMethod< MultiVector > |
class | EnablePolymorphicObject< MultiVector > |
class | MultiVector< to_complex< ValueType > > |
class | MultiVector< next_precision< ValueType > > |
MultiVector stores multiple vectors in a batched fashion and is useful for batched operations.
For example, if you want to store two batch items with multi-vectors of size (3 x 2) given below:
[1 2 ; 3 4 1 2 ; 3 4 1 2 ; 3 4]
In memory, they would be stored as a single array: [1 2 1 2 1 2 3 4 3 4 3 4].
Access functions @at can help access individual item if necessary.
The values of the different batch items are stored consecutively and in each batch item, the multi-vectors are stored in a row-major fashion.
ValueType | precision of multi-vector elements |
void gko::batch::MultiVector< ValueType >::add_scaled | ( | ptr_param< const MultiVector< ValueType > > | alpha, |
ptr_param< const MultiVector< ValueType > > | b ) |
Adds b
scaled by alpha
to the vector (aka: BLAS axpy).
alpha | the scalar |
b | a multi-vector of the same dimension as this |
|
inlinenoexcept |
Returns a single element for a particular batch item.
batch_id | the batch item index to be queried |
row | the row of the requested element |
col | the column of the requested element |
References gko::array< ValueType >::get_const_data(), and gko::one().
|
inlinenoexcept |
Returns a single element for a particular batch item.
Useful for iterating across all elements of the vector. However, it is less efficient than the two-parameter variant of this method.
batch_id | the batch item index to be queried |
idx | a linear index of the requested element |
References gko::array< ValueType >::get_data(), and gko::one().
|
inline |
Returns a single element for a particular batch item.
batch_id | the batch item index to be queried |
row | the row of the requested element |
col | the column of the requested element |
References gko::array< ValueType >::get_data(), gko::batch::MultiVector< ValueType >::get_num_batch_items(), and gko::one().
|
inline |
Returns a single element for a particular batch item.
batch_id | the batch item index to be queried |
row | the row of the requested element |
col | the column of the requested element |
References gko::array< ValueType >::get_const_data(), gko::batch::MultiVector< ValueType >::get_num_batch_items(), and gko::one().
void gko::batch::MultiVector< ValueType >::compute_conj_dot | ( | ptr_param< const MultiVector< ValueType > > | b, |
ptr_param< MultiVector< ValueType > > | result ) const |
Computes the column-wise conjugate dot product of each multi-vector in this batch and its corresponding entry in b
.
If the vector has complex value_type, then the conjugate of this is taken.
b | a MultiVector of same dimension as this |
result | a MultiVector row vector, used to store the dot product (the number of column in the vector must match the number of columns of this) |
void gko::batch::MultiVector< ValueType >::compute_dot | ( | ptr_param< const MultiVector< ValueType > > | b, |
ptr_param< MultiVector< ValueType > > | result ) const |
Computes the column-wise dot product of each multi-vector in this batch and its corresponding entry in b
.
b | a MultiVector of same dimension as this |
result | a MultiVector row vector, used to store the dot product |
void gko::batch::MultiVector< ValueType >::compute_norm2 | ( | ptr_param< MultiVector< remove_complex< ValueType > > > | result | ) | const |
Computes the Euclidean (L^2) norm of each multi-vector in this batch.
result | a MultiVector, used to store the norm (the number of columns in the vector must match the number of columns of this) |
|
static |
Creates a constant (immutable) batch multi-vector from a constant array.
exec | the executor to create the vector on |
size | the dimensions of the vector |
values | the value array of the vector |
stride | the row-stride of the vector |
std::unique_ptr< const unbatch_type > gko::batch::MultiVector< ValueType >::create_const_view_for_item | ( | size_type | item_id | ) | const |
Creates a mutable view (of matrix::Dense type) of one item of the Batch MultiVector 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::MultiVector< ValueType >::create_view_for_item | ( | size_type | item_id | ) |
Creates a mutable view (of matrix::Dense type) of one item of the Batch MultiVector object.
Does not perform any deep copies, but only returns a view of the data.
item_id | The index of the batch item |
|
static |
Creates a MultiVector with the configuration of another MultiVector.
other | The other multi-vector whose configuration needs to copied. |
void gko::batch::MultiVector< ValueType >::fill | ( | ValueType | value | ) |
Fills the input MultiVector with a given value.
value | the value to be filled |
|
inline |
Returns the common size of the batch items.
References gko::batch_dim< Dimensionality, DimensionType >::get_common_size().
Referenced by gko::batch::MultiVector< ValueType >::get_cumulative_offset(), gko::batch::BatchLinOp::validate_application_parameters(), and gko::batch::BatchLinOp::validate_application_parameters().
|
inlinenoexcept |
Returns a pointer to the array of values of the multi-vector.
References gko::array< ValueType >::get_const_data().
|
inlinenoexcept |
Returns a pointer to the array of values of the multi-vector for a specific batch item.
batch_id | the id of the batch item. |
References gko::array< ValueType >::get_const_data(), gko::batch::MultiVector< ValueType >::get_cumulative_offset(), gko::batch::MultiVector< ValueType >::get_num_batch_items(), and gko::one().
|
inline |
Get the cumulative storage size offset.
batch_id | the batch id |
References gko::batch::MultiVector< ValueType >::get_common_size(), and gko::one().
Referenced by gko::batch::MultiVector< ValueType >::get_const_values_for_item(), and gko::batch::MultiVector< ValueType >::get_values_for_item().
|
inline |
Returns the number of batch items.
References gko::batch_dim< Dimensionality, DimensionType >::get_num_batch_items().
Referenced by gko::batch::MultiVector< ValueType >::at(), gko::batch::MultiVector< ValueType >::at(), gko::batch::MultiVector< ValueType >::get_const_values_for_item(), gko::batch::MultiVector< ValueType >::get_values_for_item(), gko::batch::BatchLinOp::validate_application_parameters(), and gko::batch::BatchLinOp::validate_application_parameters().
|
inlinenoexcept |
Returns the number of elements explicitly stored in the batch matrix, cumulative across all the batch items.
References gko::array< ValueType >::get_num_elems().
|
inline |
Returns the batch size.
|
inlinenoexcept |
Returns a pointer to the array of values of the multi-vector.
References gko::array< ValueType >::get_data().
|
inlinenoexcept |
Returns a pointer to the array of values of the multi-vector for a specific batch item.
batch_id | the id of the batch item. |
References gko::batch::MultiVector< ValueType >::get_cumulative_offset(), gko::array< ValueType >::get_data(), gko::batch::MultiVector< ValueType >::get_num_batch_items(), and gko::one().
void gko::batch::MultiVector< ValueType >::scale | ( | ptr_param< const MultiVector< ValueType > > | alpha | ) |
Scales the vector with a scalar (aka: BLAS scal).
alpha | the scalar |