ArmNN
 22.05.01
ConstTensor Class Reference

A tensor defined by a TensorInfo (shape and data type) and an immutable backing store. More...

#include <Tensor.hpp>

Inheritance diagram for ConstTensor:
BaseTensor< const void *>

Public Member Functions

 ConstTensor ()
 
 ConstTensor (const Tensor &other)
 ConstTensor implicitly constructed from non-const Tensor. More...
 
template<template< typename, typename... > class ContainerType, typename T , typename... ContainerArgs>
 ConstTensor (const TensorInfo &info, const ContainerType< T, ContainerArgs... > &container)
 Constructor from a backing container. More...
 
template<typename MemoryType >
 ConstTensor (const TensorInfo &info, MemoryType memoryArea)
 ConstTensor constructed from TensorInfo and MemoryType template (a raw memory pointer). More...
 
- Public Member Functions inherited from BaseTensor< const void *>
 BaseTensor ()
 Empty (invalid) constructor. More...
 
 BaseTensor (const TensorInfo &info, const void * memoryArea)
 Constructor from a raw memory pointer. More...
 
 BaseTensor (const BaseTensor &other)
 Tensors are copyable. More...
 
BaseTensoroperator= (const BaseTensor &)
 Tensors are copyable. More...
 
const TensorInfoGetInfo () const
 
TensorInfoGetInfo ()
 
const TensorShapeGetShape () const
 
TensorShapeGetShape ()
 
DataType GetDataType () const
 
unsigned int GetNumDimensions () const
 
unsigned int GetNumBytes () const
 
unsigned int GetNumElements () const
 
const void * GetMemoryArea () const
 

Additional Inherited Members

- Protected Member Functions inherited from BaseTensor< const void *>
 ~BaseTensor ()
 Protected destructor to stop users from making these (could still new one on the heap and then leak it...) More...
 
- Protected Attributes inherited from BaseTensor< const void *>
const void * m_MemoryArea
 

Detailed Description

A tensor defined by a TensorInfo (shape and data type) and an immutable backing store.

Examples:
AsyncExecutionSample.cpp, CustomMemoryAllocatorSample.cpp, DynamicSample.cpp, and SimpleSample.cpp.

Definition at line 327 of file Tensor.hpp.

Constructor & Destructor Documentation

◆ ConstTensor() [1/4]

ConstTensor ( )
inline

Definition at line 332 of file Tensor.hpp.

332  : BaseTensor<const void*>()
333  {
334  this->GetInfo().SetConstant();
335  }
const TensorInfo & GetInfo() const
Definition: Tensor.hpp:295
void SetConstant(const bool IsConstant=true)
Marks the data corresponding to this tensor info as constant.
Definition: Tensor.cpp:514

◆ ConstTensor() [2/4]

ConstTensor ( const Tensor other)
inline

ConstTensor implicitly constructed from non-const Tensor.

Parameters
other- reference to a constant Tensor.
Exceptions
InvalidArgumentExceptionwhen Tensor parameter TensorInfo is non-constant.

Definition at line 342 of file Tensor.hpp.

342  : BaseTensor<const void*>(other.GetInfo(), other.GetMemoryArea())
343  {
344  if (!this->GetInfo().IsConstant())
345  {
346  throw InvalidArgumentException("Invalid attempt to construct ConstTensor "
347  "from Tensor due to non-constant TensorInfo");
348  }
349  }
bool IsConstant() const
Definition: Tensor.cpp:509
const TensorInfo & GetInfo() const
Definition: Tensor.hpp:295

◆ ConstTensor() [3/4]

ConstTensor ( const TensorInfo info,
const ContainerType< T, ContainerArgs... > &  container 
)
inline

Constructor from a backing container.

Parameters
container- An stl-like container type which implements data() and size() methods. Presence of data() and size() is a strong indicator of the continuous memory layout of the container, which is a requirement for Tensor data. Tensor instances do not claim ownership of referenced memory regions, that is, no attempt will be made by ArmNN to free these memory regions automatically.
Exceptions
InvalidArgumentExceptionwhen isConstant parameter of input TensorInfo is false.

Definition at line 360 of file Tensor.hpp.

References TensorInfo::GetNumBytes().

361  : BaseTensor<const void*>(info, container.data())
362  {
363  if (!this->GetInfo().IsConstant())
364  {
365  throw InvalidArgumentException("Invalid attempt to construct ConstTensor from non-constant TensorInfo.");
366  }
367  if (container.size() * sizeof(T) != info.GetNumBytes())
368  {
369  throw InvalidArgumentException("Container size is not correct");
370  }
371  }
bool IsConstant() const
Definition: Tensor.cpp:509
const TensorInfo & GetInfo() const
Definition: Tensor.hpp:295

◆ ConstTensor() [4/4]

ConstTensor ( const TensorInfo info,
MemoryType  memoryArea 
)
inline

ConstTensor constructed from TensorInfo and MemoryType template (a raw memory pointer).

Parameters
info- reference to a constant TensorInfo.
memoryArea- Region of CPU-addressable memory where tensor data will be stored. Must be valid while workloads are on the fly. Tensor instances do not claim ownership of referenced memory regions, that is, no attempt will be made by ArmNN to free these memory regions automatically.
Exceptions
InvalidArgumentExceptionwhen TensorInfo isConstant parameter is false.

Definition at line 382 of file Tensor.hpp.

383  : BaseTensor<const void*>(info, memoryArea)
384  {
385  if (!this->GetInfo().IsConstant())
386  {
387  throw InvalidArgumentException("Invalid attempt to construct ConstTensor from non-constant TensorInfo.");
388  }
389  }
bool IsConstant() const
Definition: Tensor.cpp:509
const TensorInfo & GetInfo() const
Definition: Tensor.hpp:295

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