Ginkgo  Generated from pipelines/1556235455 branch based on develop. Ginkgo version 1.9.0
A numerical linear algebra library targeting many-core architectures
batch_identity.hpp
1 // SPDX-FileCopyrightText: 2017 - 2024 The Ginkgo authors
2 //
3 // SPDX-License-Identifier: BSD-3-Clause
4 
5 #ifndef GKO_PUBLIC_CORE_MATRIX_BATCH_IDENTITY_HPP_
6 #define GKO_PUBLIC_CORE_MATRIX_BATCH_IDENTITY_HPP_
7 
8 
9 #include <ginkgo/core/base/batch_lin_op.hpp>
10 #include <ginkgo/core/base/batch_multi_vector.hpp>
11 #include <ginkgo/core/base/executor.hpp>
12 #include <ginkgo/core/base/types.hpp>
13 #include <ginkgo/core/base/utils.hpp>
14 #include <ginkgo/core/matrix/identity.hpp>
15 
16 
17 namespace gko {
18 namespace batch {
19 namespace matrix {
20 
21 
31 template <typename ValueType = default_precision>
32 class Identity final : public EnableBatchLinOp<Identity<ValueType>> {
34 
35 public:
36  using value_type = ValueType;
37  using index_type = int32;
39  using absolute_type = remove_complex<Identity>;
40  using complex_type = to_complex<Identity>;
41 
51 
66 
72 
78  const Identity* apply(ptr_param<const MultiVector<value_type>> alpha,
90  static std::unique_ptr<Identity> create(
91  std::shared_ptr<const Executor> exec,
92  const batch_dim<2>& size = batch_dim<2>{});
93 
94 private:
95  Identity(std::shared_ptr<const Executor> exec,
96  const batch_dim<2>& size = batch_dim<2>{});
97 
98  void apply_impl(const MultiVector<value_type>* b,
99  MultiVector<value_type>* x) const;
100 
101  void apply_impl(const MultiVector<value_type>* alpha,
102  const MultiVector<value_type>* b,
103  const MultiVector<value_type>* beta,
104  MultiVector<value_type>* x) const;
105 };
106 
107 
108 } // namespace matrix
109 } // namespace batch
110 } // namespace gko
111 
112 
113 #endif // GKO_PUBLIC_CORE_MATRIX_BATCH_IDENTITY_HPP_
gko::batch::EnableBatchLinOp
The EnableBatchLinOp mixin can be used to provide sensible default implementations of the majority of...
Definition: batch_lin_op.hpp:250
gko::batch::matrix::Identity::create
static std::unique_ptr< Identity > create(std::shared_ptr< const Executor > exec, const batch_dim< 2 > &size=batch_dim< 2 >{})
Creates an Identity matrix of the specified size.
gko::batch::BatchLinOp
Definition: batch_lin_op.hpp:59
gko::batch::MultiVector
MultiVector stores multiple vectors in a batched fashion and is useful for batched operations.
Definition: batch_multi_vector.hpp:52
gko::batch::matrix::Identity::apply
Identity * apply(ptr_param< const MultiVector< value_type >> b, ptr_param< MultiVector< value_type >> x)
Apply the matrix to a multi-vector.
gko
The Ginkgo namespace.
Definition: abstract_factory.hpp:20
gko::batch_dim< 2 >
gko::batch::matrix::Identity
The batch Identity matrix, which represents a batch of Identity matrices.
Definition: batch_identity.hpp:32
gko::ptr_param
This class is used for function parameters in the place of raw pointers.
Definition: utils_helper.hpp:41
gko::matrix::Identity
This class is a utility which efficiently implements the identity matrix (a linear operator which map...
Definition: identity.hpp:35
gko::int32
std::int32_t int32
32-bit signed integral type.
Definition: types.hpp:103
gko::remove_complex
typename detail::remove_complex_s< T >::type remove_complex
Obtain the type which removed the complex of complex/scalar type or the template parameter of class b...
Definition: math.hpp:325
gko::to_complex
typename detail::to_complex_s< T >::type to_complex
Obtain the type which adds the complex of complex/scalar type or the template parameter of class by a...
Definition: math.hpp:344
gko::EnablePolymorphicObject
This mixin inherits from (a subclass of) PolymorphicObject and provides a base implementation of a ne...
Definition: polymorphic_object.hpp:661