26 #ifndef LIBRARIES_DATA_DIMENSIONS_H_ 27 #define LIBRARIES_DATA_DIMENSIONS_H_ 37 explicit constexpr
Dimensions(
size_t x,
size_t y = 1,
size_t z = 1,
size_t n = 1,
38 size_t pad_x = 0,
size_t pad_y = 0,
size_t pad_z = 0) :
39 m_x(x), m_y(
y), m_z(
z), m_n(
n),
40 m_pad_x(pad_x), m_pad_y(pad_y), m_pad_z(pad_z) {}
43 return Dimensions(m_x, m_y, m_z, 1, m_pad_x, m_pad_y, m_pad_z);
47 return Dimensions(m_x, m_y, m_z, n, m_pad_x, m_pad_y, m_pad_z);
51 constexpr
size_t x()
const {
60 constexpr
size_t y()
const {
69 constexpr
size_t z()
const {
78 constexpr
size_t n()
const {
82 inline constexpr
size_t xy()
const {
87 return (m_x + m_pad_x) * (m_y + m_pad_y);
91 constexpr
size_t xyz()
const {
92 return m_x * m_y * m_z;
96 return (m_x + m_pad_x) * (m_y + m_pad_y) * (m_z + m_pad_z);
104 inline constexpr
size_t size()
const {
113 os << d.
x() <<
" * " << d.
y() <<
" * " << d.
z() <<
" * " << d.
n();
118 return (m_x == b.m_x)
125 return (m_x == b.m_x)
133 return (m_pad_x == b.m_pad_x)
134 && (m_pad_y == b.m_pad_y)
135 && (m_pad_z == b.m_pad_z);
150 return !(*
this ==
b);
154 return (0 != m_pad_x) || (0 != m_pad_y) || (0 != m_pad_z);
158 return (m_z == 1) && (m_y == 1);
163 return (m_z == 1) && (m_y != 1);
168 return (m_z != 1) && (m_y != 1);
173 if (
is3D())
return 3;
174 if (
is2D())
return 2;
CUDA_HD constexpr bool is2D() const
constexpr size_t xyzPadded() const
constexpr Dimensions copyForN(size_t n) const
constexpr size_t xyPadded() const
CUDA_HD int getDimAsNumber() const
constexpr bool isPadded() const
constexpr bool operator==(const Dimensions &b) const
constexpr bool operator!=(const Dimensions &b) const
CUDA_HD constexpr size_t z() const
constexpr Dimensions createSingle() const
CUDA_HD constexpr bool is3D() const
friend std::ostream & operator<<(std::ostream &os, const Dimensions &d)
CUDA_HD constexpr size_t x() const
constexpr Dimensions(size_t x, size_t y=1, size_t z=1, size_t n=1, size_t pad_x=0, size_t pad_y=0, size_t pad_z=0)
constexpr bool is1D() const
constexpr size_t zPadded() const
constexpr bool equalExceptNPadded(const Dimensions &b) const
CUDA_HD constexpr size_t sizeSingle() const
constexpr bool equalPadding(const Dimensions &b) const
constexpr bool equalSizesIgnorePadding(const Dimensions &b) const
CUDA_HD constexpr size_t y() const
constexpr size_t xPadded() const
constexpr size_t sizePadded() const
CUDA_HD constexpr size_t n() const
constexpr size_t size() const
constexpr bool isValid() const
constexpr size_t xy() const
constexpr size_t yPadded() const
CUDA_HD constexpr size_t xyz() const