Ginkgo: ginkgo/core/base/batch_dim.hpp Source File

| Ginkgo Generated from branch based on main. Ginkgo version 1.11.0 A numerical linear algebra library targeting many-core architectures

Loading...
Searching...
No Matches
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#include <ginkgo/core/base/dim.hpp>
12#include <ginkgo/core/base/types.hpp>
13
14
15namespace gko {
16
17
26template <size_type Dimensionality = 2, typename DimensionType = size_type>
27 struct batch_dim {
28 static constexpr size_type dimensionality = Dimensionality;
29 using dimension_type = DimensionType;
30
36 size_type get_num_batch_items() const { return num_batch_items_; }
37
43 dim<dimensionality, dimension_type> get_common_size() const
44 {
45 return common_size_;
46 }
47
56 friend bool operator==(const batch_dim& x, const batch_dim& y)
57 {
58 return x.num_batch_items_ == y.num_batch_items_ &&
59 x.common_size_ == y.common_size_;
60 }
61
62
74 friend bool operator!=(const batch_dim<Dimensionality, DimensionType>& x,
75 const batch_dim<Dimensionality, DimensionType>& y)
76 {
77 return !(x == y);
78 }
79
80
84 batch_dim()
85 : num_batch_items_(0),
86 common_size_(dim<dimensionality, dimension_type>{})
87 {}
88
98 explicit batch_dim(const size_type num_batch_items,
99 const dim<dimensionality, dimension_type>& common_size)
100 : num_batch_items_(num_batch_items), common_size_(common_size)
101 {}
102
103private:
104 size_type num_batch_items_{};
105 dim<dimensionality, dimension_type> common_size_{};
106};
107
108
118template <typename DimensionType>
119 inline batch_dim<2, DimensionType> transpose(
120 const batch_dim<2, DimensionType>& input)
121{
122 return batch_dim<2, DimensionType>(input.get_num_batch_items(),
123 transpose(input.get_common_size()));
124}
125
126
127} // namespace gko
128
129
130#endif // GKO_PUBLIC_CORE_BASE_BATCH_DIM_HPP_
gko
The Ginkgo namespace.
Definition abstract_factory.hpp:20
gko::size_type
std::size_t size_type
Integral type used for allocation quantities.
Definition types.hpp:90
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:119
gko::batch_dim
A type representing the dimensions of a multidimensional batch object.
Definition batch_dim.hpp:27
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:98
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:74
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:43
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:36
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:56
gko::batch_dim::batch_dim
batch_dim()
The default constructor.
Definition batch_dim.hpp:84
gko::dim
A type representing the dimensions of a multidimensional object.
Definition dim.hpp:26