ONE - On-device Neural Engine
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
luci::Array4DIndex Class Referencefinal

Index class for 4D tensor to calculate linear index from multi-dimensional indices. More...

#include <ArrayIndex.h>

Public Member Functions

 Array4DIndex (uint32_t d0, uint32_t d1, uint32_t d2, uint32_t d3)
 
uint32_t operator() (uint32_t i0, uint32_t i1, uint32_t i2, uint32_t i3) const
 Calculate linear index from multi-dimensional indices.
 
uint32_t size (void) const
 Get total number of elements in the tensor.
 
uint32_t stride (uint32_t axis) const
 Get stride of the given axis.
 

Detailed Description

Index class for 4D tensor to calculate linear index from multi-dimensional indices.

Definition at line 26 of file ArrayIndex.h.

Constructor & Destructor Documentation

◆ Array4DIndex()

luci::Array4DIndex::Array4DIndex ( uint32_t  d0,
uint32_t  d1,
uint32_t  d2,
uint32_t  d3 
)

Definition at line 29 of file ArrayIndex.cpp.

30 : _dim{D0, D1, D2, D3}
31{
32 _strides[3] = 1;
33 _strides[2] = D3;
34 _strides[1] = D3 * D2;
35 _strides[0] = D3 * D2 * D1;
36
37 for (int i = 0; i < 4; ++i)
38 {
39 THROW_UNLESS(_strides[i] > 0);
40 }
41}
#define THROW_UNLESS(COND, MSG)

References THROW_UNLESS.

Member Function Documentation

◆ operator()()

uint32_t luci::Array4DIndex::operator() ( uint32_t  i0,
uint32_t  i1,
uint32_t  i2,
uint32_t  i3 
) const

Calculate linear index from multi-dimensional indices.

Definition at line 43 of file ArrayIndex.cpp.

44{
45 THROW_UNLESS(i0 < _dim[0] && i1 < _dim[1] && i2 < _dim[2] && i3 < _dim[3]);
46
47 return i0 * _strides[0] + i1 * _strides[1] + i2 * _strides[2] + i3 * _strides[3];
48}

References THROW_UNLESS.

◆ size()

uint32_t luci::Array4DIndex::size ( void  ) const

Get total number of elements in the tensor.

Definition at line 50 of file ArrayIndex.cpp.

51{
52
53 for (int i = 0; i < 4; ++i)
54 {
55 THROW_UNLESS(_dim[i] > 0);
56 }
57
58 return _dim[0] * _dim[1] * _dim[2] * _dim[3];
59}

References THROW_UNLESS.

◆ stride()

uint32_t luci::Array4DIndex::stride ( uint32_t  axis) const

Get stride of the given axis.

Definition at line 61 of file ArrayIndex.cpp.

61{ return _strides[axis]; }

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