ArmNN
 20.05
OriginsDescriptor Struct Reference

An OriginsDescriptor for the ConcatLayer. More...

#include <Descriptors.hpp>

Public Member Functions

 OriginsDescriptor ()
 
 OriginsDescriptor (uint32_t numViews, uint32_t numDimensions=4)
 
 OriginsDescriptor (const OriginsDescriptor &other)
 
 OriginsDescriptor (OriginsDescriptor &&other)
 
 ~OriginsDescriptor ()
 
OriginsDescriptoroperator= (OriginsDescriptor rhs)
 
bool operator== (const OriginsDescriptor &rhs) const
 
Status SetViewOriginCoord (uint32_t view, uint32_t coord, uint32_t value)
 Set the view origin coordinates. More...
 
uint32_t GetNumViews () const
 Get the number of views. More...
 
uint32_t GetNumDimensions () const
 Get the number of dimensions. More...
 
const uint32_t * GetViewOrigin (uint32_t idx) const
 Return the view origin at the int value idx. More...
 
void ReorderOrigins (unsigned int *newOrdering, unsigned int numNewOrdering)
 Reorders the viewOrigins in accordance with the indices presented in newOrdering array. More...
 
void SetConcatAxis (unsigned int concatAxis)
 Set the concatenation axis value. More...
 
unsigned int GetConcatAxis () const
 Get the concatenation axis value. More...
 

Friends

void swap (OriginsDescriptor &first, OriginsDescriptor &second)
 Swap the ViewsDescriptor values first and second. More...
 

Detailed Description

An OriginsDescriptor for the ConcatLayer.

Descriptor to configure the concatenation process. Number of views must be equal to the number of inputs, and their order must match - e.g. first view corresponds to the first input, second view to the second input, etc.

Definition at line 155 of file Descriptors.hpp.

Constructor & Destructor Documentation

◆ OriginsDescriptor() [1/4]

Definition at line 76 of file Descriptors.cpp.

77 : m_ConcatAxis(1)
78 , m_NumViews(0)
79 , m_NumDimensions(0)
80 , m_ViewOrigins(nullptr)
81 {}

◆ OriginsDescriptor() [2/4]

OriginsDescriptor ( uint32_t  numViews,
uint32_t  numDimensions = 4 
)

Definition at line 83 of file Descriptors.cpp.

84 : m_ConcatAxis(1)
85 , m_NumViews(numViews)
86 , m_NumDimensions(numDimensions)
87 , m_ViewOrigins(numViews && numDimensions > 0 ? new uint32_t *[numViews]() : nullptr)
88 {
89  for (uint32_t i = 0; m_NumDimensions > 0 && i < m_NumViews; ++i)
90  {
91  m_ViewOrigins[i] = new uint32_t[m_NumDimensions]();
92  }
93 }

◆ OriginsDescriptor() [3/4]

Definition at line 95 of file Descriptors.cpp.

96 : m_ConcatAxis(other.m_ConcatAxis)
97 , m_NumViews(other.m_NumViews)
98 , m_NumDimensions(other.m_NumDimensions)
99 , m_ViewOrigins(other.m_NumViews && other.m_NumDimensions > 0 ? new uint32_t *[other.m_NumViews]() : nullptr)
100 {
101  for (uint32_t i = 0; m_NumDimensions > 0 && i < m_NumViews; ++i)
102  {
103  m_ViewOrigins[i] = new uint32_t[m_NumDimensions]();
104  memcpy(m_ViewOrigins[i], other.m_ViewOrigins[i], m_NumDimensions * sizeof(uint32_t));
105  }
106 }

◆ OriginsDescriptor() [4/4]

Definition at line 108 of file Descriptors.cpp.

References OriginsDescriptor::swap.

110 {
111  swap(*this, other);
112 }
friend void swap(OriginsDescriptor &first, OriginsDescriptor &second)
Swap the ViewsDescriptor values first and second.

◆ ~OriginsDescriptor()

Definition at line 114 of file Descriptors.cpp.

115 {
116  for (uint32_t i = 0; m_NumDimensions > 0 && i < m_NumViews; ++i)
117  {
118  delete[] m_ViewOrigins[i];
119  }
120  delete[] m_ViewOrigins;
121 }

Member Function Documentation

◆ GetConcatAxis()

unsigned int GetConcatAxis ( ) const

◆ GetNumDimensions()

◆ GetNumViews()

◆ GetViewOrigin()

const uint32_t * GetViewOrigin ( uint32_t  idx) const

◆ operator=()

OriginsDescriptor & operator= ( OriginsDescriptor  rhs)

Definition at line 123 of file Descriptors.cpp.

References OriginsDescriptor::swap.

124 {
125  swap(*this, rhs);
126  return *this;
127 }
friend void swap(OriginsDescriptor &first, OriginsDescriptor &second)
Swap the ViewsDescriptor values first and second.

◆ operator==()

bool operator== ( const OriginsDescriptor rhs) const

Definition at line 129 of file Descriptors.cpp.

References OriginsDescriptor::GetConcatAxis(), OriginsDescriptor::GetNumDimensions(), OriginsDescriptor::GetNumViews(), and OriginsDescriptor::GetViewOrigin().

130 {
131  if (GetNumViews() != rhs.GetNumViews() ||
132  GetNumDimensions() != rhs.GetNumDimensions() ||
133  GetConcatAxis() != rhs.GetConcatAxis())
134  {
135  return false;
136  }
137 
138  for (unsigned int i = 0u; i < GetNumViews(); ++i)
139  {
140  for (unsigned int j = 0u; j < GetNumDimensions(); ++j)
141  {
142  if (GetViewOrigin(i)[j] != rhs.GetViewOrigin(i)[j])
143  {
144  return false;
145  }
146  }
147  }
148 
149  return true;
150 }
const uint32_t * GetViewOrigin(uint32_t idx) const
Return the view origin at the int value idx.
uint32_t GetNumDimensions() const
Get the number of dimensions.
uint32_t GetNumViews() const
Get the number of views.
unsigned int GetConcatAxis() const
Get the concatenation axis value.

◆ ReorderOrigins()

void ReorderOrigins ( unsigned int *  newOrdering,
unsigned int  numNewOrdering 
)

Reorders the viewOrigins in accordance with the indices presented in newOrdering array.

The number of views must match number of elements in the new ordering array.

Definition at line 198 of file Descriptors.cpp.

References ARMNN_ASSERT_MSG.

199 {
200  ARMNN_ASSERT_MSG(m_NumViews == numNewOrdering, "number of views must match number of "
201  "elements in the new ordering array");
202  std::vector<uint32_t*> viewOrigins(&m_ViewOrigins[0], &m_ViewOrigins[m_NumViews]);
203 
204  for (unsigned int i = 0; i < numNewOrdering; ++i)
205  {
206  m_ViewOrigins[i] = viewOrigins[newOrdering[i]];
207  }
208 }
#define ARMNN_ASSERT_MSG(COND, MSG)
Definition: Assert.hpp:15

◆ SetConcatAxis()

void SetConcatAxis ( unsigned int  concatAxis)

Set the concatenation axis value.

Definition at line 152 of file Descriptors.cpp.

Referenced by armnnTfParser::CalculatePaddedOutputTensorInfo(), armnn::CreateDescriptorForConcatenation(), and TfLiteParser::OutputShapeOfReshape().

153 {
154  m_ConcatAxis = concatAxis;
155 }

◆ SetViewOriginCoord()

Status SetViewOriginCoord ( uint32_t  view,
uint32_t  coord,
uint32_t  value 
)

Set the view origin coordinates.

The arguments are: view, dimension, value. If the view is greater than or equal to GetNumViews(), then the view argument is out of range. If the coord is greater than or equal to GetNumDimensions(), then the coord argument is out of range.

Definition at line 161 of file Descriptors.cpp.

References ARMNN_LOG, armnn::error, armnn::Failure, and armnn::Success.

Referenced by CaffeParserBase::AddConvLayerWithSplits(), armnnTfParser::CalculatePaddedOutputTensorInfo(), armnn::CreateDescriptorForConcatenation(), CaffeParserBase::ParseConcatLayer(), armnnUtils::ProcessConcatInputTensorInfo(), and ViewsDescriptor::SetViewOriginCoord().

162 {
163  if (view >= m_NumViews)
164  {
165  ARMNN_LOG(error) << "OriginsDescriptor::SetViewOriginCoord: view argument:" << view <<
166  " is out of range";
167  return Status::Failure;
168  }
169  if (coord >= m_NumDimensions)
170  {
171  ARMNN_LOG(error) << "OriginsDescriptor::SetViewOriginCoord: coord argument:" << coord <<
172  " is out of range";
173  return Status::Failure;
174  }
175 
176  m_ViewOrigins[view][coord] = value;
177  return Status::Success;
178 }
#define ARMNN_LOG(severity)
Definition: Logging.hpp:163

Friends And Related Function Documentation

◆ swap

void swap ( OriginsDescriptor first,
OriginsDescriptor second 
)
friend

Swap the ViewsDescriptor values first and second.

Definition at line 344 of file Descriptors.cpp.

Referenced by OriginsDescriptor::operator=(), and OriginsDescriptor::OriginsDescriptor().

345 {
346  using std::swap;
347  swap(first.m_NumViews, second.m_NumViews);
348  swap(first.m_NumDimensions, second.m_NumDimensions);
349  swap(first.m_ViewOrigins, second.m_ViewOrigins);
350  swap(first.m_ConcatAxis, second.m_ConcatAxis);
351 }
friend void swap(OriginsDescriptor &first, OriginsDescriptor &second)
Swap the ViewsDescriptor values first and second.
void swap(ViewsDescriptor &first, ViewsDescriptor &second)

The documentation for this struct was generated from the following files: