ArmNN
 25.11
Loading...
Searching...
No Matches
PerAxisIterator< T, Base > Class Template Reference

PerAxisIterator for per-axis quantization. More...

#include <BaseIterator.hpp>

Inheritance diagram for PerAxisIterator< T, Base >:
[legend]
Collaboration diagram for PerAxisIterator< T, Base >:
[legend]

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 707 of file BaseIterator.hpp.

Constructor & Destructor Documentation

◆ PerAxisIterator() [1/2]

template<typename T, typename Base>
PerAxisIterator ( T * data = nullptr,
unsigned int axisFactor = 0,
unsigned int axisDimensionality = 0 )
inline

Definition at line 710 of file BaseIterator.hpp.

713 : m_Iterator(data),
714 m_Start(data),
715 m_AxisIndex(0), // iterates over the dimension of axis
716 m_AxisDimensionality(axisDimensionality), // tensorShape[quantization_dim]
717 m_AxisFactor(axisFactor),
718 m_Index(0)
719 {}

References m_AxisDimensionality, m_AxisFactor, m_AxisIndex, m_Index, m_Iterator, and m_Start.

Referenced by operator++(), operator+=(), operator-=(), operator[](), and SetIndexOnMem().

◆ PerAxisIterator() [2/2]

template<typename T, typename Base>
PerAxisIterator ( T * data = nullptr,
const armnn::TensorShape & tensorShape = TensorShape(),
const unsigned int axis = 0 )
inline

Definition at line 721 of file BaseIterator.hpp.

724 : m_Iterator(data),
725 m_Start(data),
726 m_AxisIndex(0),
727 m_Index(0)
728 {
729 m_AxisDimensionality = tensorShape[axis];
730 m_AxisFactor = armnnUtils::GetNumElementsAfter(tensorShape, axis);
731 }
unsigned int GetNumElementsAfter(const armnn::TensorShape &shape, unsigned int axis)

References armnnUtils::GetNumElementsAfter(), m_AxisDimensionality, m_AxisFactor, m_AxisIndex, m_Index, m_Iterator, and m_Start.

Member Function Documentation

◆ operator++()

template<typename T, typename Base>
PerAxisIterator & operator++ ( )
inlineoverride

Definition at line 741 of file BaseIterator.hpp.

742 {
743 ++m_Index;
744 this -> operator[](m_Index);
745 return *this;
746 }

References m_Index, operator[](), and PerAxisIterator().

◆ operator+=()

template<typename T, typename Base>
PerAxisIterator & operator+= ( const unsigned int increment)
inlineoverride

Definition at line 748 of file BaseIterator.hpp.

749 {
750 m_Index += increment;
751 this -> operator[](m_Index);
752 return *this;
753 }

References m_Index, operator[](), and PerAxisIterator().

◆ operator-=()

template<typename T, typename Base>
PerAxisIterator & operator-= ( const unsigned int decrement)
inlineoverride

Definition at line 755 of file BaseIterator.hpp.

756 {
757 m_Index -= decrement;
758 this -> operator[](m_Index);
759 return *this;
760 }

References m_Index, operator[](), and PerAxisIterator().

◆ operator[]()

template<typename T, typename Base>
PerAxisIterator & operator[] ( const unsigned int index)
inlineoverride

Definition at line 779 of file BaseIterator.hpp.

780 {
781 SetIndexOnMem(index);
782 return *this;
783 }

References PerAxisIterator(), and SetIndexOnMem().

Referenced by operator++(), operator+=(), and operator-=().

◆ Reset()

template<typename T, typename Base>
void Reset ( void * data)
inlineoverride

Definition at line 733 of file BaseIterator.hpp.

734 {
735 m_Iterator = reinterpret_cast<T*>(data);
736 m_Start = m_Iterator;
737 m_AxisIndex = 0;
738 m_Index = 0;
739 }

References m_AxisIndex, m_Index, m_Iterator, and m_Start.

◆ SetIndexOnMem()

template<typename T, typename Base>
PerAxisIterator & SetIndexOnMem ( const unsigned int index)
inline

Definition at line 763 of file BaseIterator.hpp.

764 {
765 ARMNN_THROW_INVALIDARG_MSG_IF_FALSE(m_Iterator, "PerAxisIterator: m_Iterator is null!");
766 m_Iterator = m_Start + index;
767 if (index < m_AxisFactor || m_AxisDimensionality < 1)
768 {
769 m_AxisIndex = 0;
770 }
771 else
772 {
773 m_AxisIndex = (index / m_AxisFactor) % m_AxisDimensionality;
774 }
775 m_Index = index;
776 return *this;
777 }
#define ARMNN_THROW_INVALIDARG_MSG_IF_FALSE(_cond, _str)

References ARMNN_THROW_INVALIDARG_MSG_IF_FALSE, m_AxisDimensionality, m_AxisFactor, m_AxisIndex, m_Index, m_Iterator, m_Start, and PerAxisIterator().

Referenced by operator[]().

Member Data Documentation

◆ m_AxisDimensionality

template<typename T, typename Base>
unsigned int m_AxisDimensionality
protected

Definition at line 789 of file BaseIterator.hpp.

Referenced by PerAxisIterator(), PerAxisIterator(), and SetIndexOnMem().

◆ m_AxisFactor

template<typename T, typename Base>
unsigned int m_AxisFactor
protected

Definition at line 790 of file BaseIterator.hpp.

Referenced by PerAxisIterator(), PerAxisIterator(), and SetIndexOnMem().

◆ m_AxisIndex

template<typename T, typename Base>
unsigned int m_AxisIndex
protected

Definition at line 788 of file BaseIterator.hpp.

Referenced by PerAxisIterator(), PerAxisIterator(), Reset(), and SetIndexOnMem().

◆ m_Index

template<typename T, typename Base>
unsigned int m_Index
protected

◆ m_Iterator

template<typename T, typename Base>
T* m_Iterator
protected

Definition at line 786 of file BaseIterator.hpp.

Referenced by PerAxisIterator(), PerAxisIterator(), Reset(), and SetIndexOnMem().

◆ m_Start

template<typename T, typename Base>
T* m_Start
protected

Definition at line 787 of file BaseIterator.hpp.

Referenced by PerAxisIterator(), PerAxisIterator(), Reset(), and SetIndexOnMem().


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