Ginkgo  Generated from pipelines/1330831941 branch based on master. Ginkgo version 1.8.0
A numerical linear algebra library targeting many-core architectures
batch_dim.hpp
1 // SPDX-FileCopyrightText: 2017 - 2024 The Ginkgo authors
2 //
3 // SPDX-License-Identifier: BSD-3-Clause
4 
5 #ifndef GKO_PUBLIC_CORE_BASE_BATCH_DIM_HPP_
6 #define GKO_PUBLIC_CORE_BASE_BATCH_DIM_HPP_
7 
8 
9 #include <iostream>
10 
11 
12 #include <ginkgo/core/base/dim.hpp>
13 #include <ginkgo/core/base/types.hpp>
14 
15 
16 namespace gko {
17 
18 
27 template <size_type Dimensionality = 2, typename DimensionType = size_type>
28 struct batch_dim {
29  static constexpr size_type dimensionality = Dimensionality;
30  using dimension_type = DimensionType;
31 
37  size_type get_num_batch_items() const { return num_batch_items_; }
38 
45  {
46  return common_size_;
47  }
48 
57  friend bool operator==(const batch_dim& x, const batch_dim& y)
58  {
59  return x.num_batch_items_ == y.num_batch_items_ &&
60  x.common_size_ == y.common_size_;
61  }
62 
63 
77  {
78  return !(x == y);
79  }
80 
81 
86  : common_size_(dim<dimensionality, dimension_type>{}),
87  num_batch_items_(0)
88  {}
89 
99  explicit batch_dim(const size_type num_batch_items,
100  const dim<dimensionality, dimension_type>& common_size)
101  : common_size_(common_size), num_batch_items_(num_batch_items)
102  {}
103 
104 private:
105  size_type num_batch_items_{};
106  dim<dimensionality, dimension_type> common_size_{};
107 };
108 
109 
119 template <typename DimensionType>
121  const batch_dim<2, DimensionType>& input)
122 {
124  transpose(input.get_common_size()));
125 }
126 
127 
128 } // namespace gko
129 
130 
131 #endif // GKO_PUBLIC_CORE_BASE_BATCH_DIM_HPP_
gko::batch_dim::get_num_batch_items
size_type get_num_batch_items() const
Get the number of batch items stored.
Definition: batch_dim.hpp:37
gko::batch_dim::get_common_size
dim< dimensionality, dimension_type > get_common_size() const
Get the common size of the batch items.
Definition: batch_dim.hpp:44
gko::size_type
std::size_t size_type
Integral type used for allocation quantities.
Definition: types.hpp:108
gko::batch_dim::operator==
friend bool operator==(const batch_dim &x, const batch_dim &y)
Checks if two batch_dim objects are equal.
Definition: batch_dim.hpp:57
gko::batch_dim::batch_dim
batch_dim(const size_type num_batch_items, const dim< dimensionality, dimension_type > &common_size)
Creates a batch_dim object which stores a uniform size for all batch entries.
Definition: batch_dim.hpp:99
gko
The Ginkgo namespace.
Definition: abstract_factory.hpp:20
gko::dim< dimensionality, dimension_type >
gko::batch_dim
A type representing the dimensions of a multidimensional batch object.
Definition: batch_dim.hpp:28
gko::transpose
batch_dim< 2, DimensionType > transpose(const batch_dim< 2, DimensionType > &input)
Returns a batch_dim object with its dimensions swapped for batched operators.
Definition: batch_dim.hpp:120
gko::batch_dim::batch_dim
batch_dim()
The default constructor.
Definition: batch_dim.hpp:85
gko::batch_dim::operator!=
friend bool operator!=(const batch_dim< Dimensionality, DimensionType > &x, const batch_dim< Dimensionality, DimensionType > &y)
Checks if two batch_dim objects are different.
Definition: batch_dim.hpp:75