ArmNN
 22.05
PerAxisIterator< T, Base > Class Template Reference

PerAxisIterator for per-axis quantization. More...

#include <BaseIterator.hpp>

Inheritance diagram for PerAxisIterator< T, Base >:

Public Member Functions

 PerAxisIterator (T *data=nullptr, unsigned int axisFactor=0, unsigned int axisDimensionality=0)
 
 PerAxisIterator (T *data=nullptr, const armnn::TensorShape &tensorShape=TensorShape(), const unsigned int axis=0)
 
void Reset (void *data) override
 
PerAxisIteratoroperator++ () override
 
PerAxisIteratoroperator+= (const unsigned int increment) override
 
PerAxisIteratoroperator-= (const unsigned int decrement) override
 
PerAxisIteratorSetIndexOnMem (const unsigned int index)
 
PerAxisIteratoroperator[] (const unsigned int index) override
 

Protected Attributes

T * m_Iterator
 
T * m_Start
 
unsigned int m_AxisIndex
 
unsigned int m_AxisDimensionality
 
unsigned int m_AxisFactor
 
unsigned int m_Index
 

Detailed Description

template<typename T, typename Base>
class armnn::PerAxisIterator< T, Base >

PerAxisIterator for per-axis quantization.

Iterates over a tensor as layed out in memory and keeps track of the axis index.

Definition at line 754 of file BaseIterator.hpp.

Constructor & Destructor Documentation

◆ PerAxisIterator() [1/2]

PerAxisIterator ( T *  data = nullptr,
unsigned int  axisFactor = 0,
unsigned int  axisDimensionality = 0 
)
inline

Definition at line 757 of file BaseIterator.hpp.

760  : m_Iterator(data),
761  m_Start(data),
762  m_AxisIndex(0), // iterates over the dimension of axis
763  m_AxisDimensionality(axisDimensionality), // tensorShape[quantization_dim]
764  m_AxisFactor(axisFactor),
765  m_Index(0)
766  {}
unsigned int m_AxisDimensionality

◆ PerAxisIterator() [2/2]

PerAxisIterator ( T *  data = nullptr,
const armnn::TensorShape tensorShape = TensorShape(),
const unsigned int  axis = 0 
)
inline

Definition at line 768 of file BaseIterator.hpp.

771  : m_Iterator(data),
772  m_Start(data),
773  m_AxisIndex(0),
774  m_Index(0)
775  {
776  m_AxisDimensionality = tensorShape[axis];
777  m_AxisFactor = armnnUtils::GetNumElementsAfter(tensorShape, axis);
778  }
unsigned int m_AxisDimensionality
unsigned int GetNumElementsAfter(const armnn::TensorShape &shape, unsigned int axis)

Member Function Documentation

◆ operator++()

PerAxisIterator& operator++ ( )
inlineoverride

Definition at line 788 of file BaseIterator.hpp.

789  {
790  ++m_Index;
791  this -> operator[](m_Index);
792  return *this;
793  }
PerAxisIterator & operator[](const unsigned int index) override

◆ operator+=()

PerAxisIterator& operator+= ( const unsigned int  increment)
inlineoverride

Definition at line 795 of file BaseIterator.hpp.

796  {
797  m_Index += increment;
798  this -> operator[](m_Index);
799  return *this;
800  }
PerAxisIterator & operator[](const unsigned int index) override

◆ operator-=()

PerAxisIterator& operator-= ( const unsigned int  decrement)
inlineoverride

Definition at line 802 of file BaseIterator.hpp.

803  {
804  m_Index -= decrement;
805  this -> operator[](m_Index);
806  return *this;
807  }
PerAxisIterator & operator[](const unsigned int index) override

◆ operator[]()

PerAxisIterator& operator[] ( const unsigned int  index)
inlineoverride

Definition at line 826 of file BaseIterator.hpp.

827  {
828  SetIndexOnMem(index);
829  return *this;
830  }
PerAxisIterator & SetIndexOnMem(const unsigned int index)

◆ Reset()

void Reset ( void *  data)
inlineoverride

Definition at line 780 of file BaseIterator.hpp.

781  {
782  m_Iterator = reinterpret_cast<T*>(data);
784  m_AxisIndex = 0;
785  m_Index = 0;
786  }

◆ SetIndexOnMem()

PerAxisIterator& SetIndexOnMem ( const unsigned int  index)
inline

Definition at line 810 of file BaseIterator.hpp.

811  {
813  m_Iterator = m_Start + index;
814  if (index < m_AxisFactor)
815  {
816  m_AxisIndex = 0;
817  }
818  else
819  {
821  }
822  m_Index = index;
823  return *this;
824  }
unsigned int m_AxisDimensionality
#define ARMNN_ASSERT(COND)
Definition: Assert.hpp:14

Member Data Documentation

◆ m_AxisDimensionality

unsigned int m_AxisDimensionality
protected

Definition at line 836 of file BaseIterator.hpp.

◆ m_AxisFactor

unsigned int m_AxisFactor
protected

Definition at line 837 of file BaseIterator.hpp.

◆ m_AxisIndex

unsigned int m_AxisIndex
protected

Definition at line 835 of file BaseIterator.hpp.

◆ m_Index

unsigned int m_Index
protected

Definition at line 838 of file BaseIterator.hpp.

◆ m_Iterator

T* m_Iterator
protected

Definition at line 833 of file BaseIterator.hpp.

◆ m_Start

T* m_Start
protected

Definition at line 834 of file BaseIterator.hpp.


The documentation for this class was generated from the following file: