ArmNN
 25.11
Loading...
Searching...
No Matches
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:
[legend]
Collaboration diagram for ConstTensor:
[legend]

Public Member Functions

 ConstTensor ()
 ConstTensor (const Tensor &other)
 ConstTensor implicitly constructed from non-const Tensor.
template<template< typename, typename... > class ContainerType, typename T, typename... ContainerArgs>
 ConstTensor (const TensorInfo &info, const ContainerType< T, ContainerArgs... > &container)
 Constructor from a backing container.
template<typename MemoryType>
 ConstTensor (const TensorInfo &info, MemoryType memoryArea)
 ConstTensor constructed from TensorInfo and MemoryType template (a raw memory pointer).
Public Member Functions inherited from BaseTensor< const void * >
 BaseTensor ()
 Empty (invalid) constructor.
BaseTensoroperator= (const BaseTensor &)
 Tensors are copyable.
const TensorInfoGetInfo () const
const TensorShapeGetShape () const
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...)
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
CustomMemoryAllocatorSample.cpp, DynamicSample.cpp, and SimpleSample.cpp.

Definition at line 329 of file Tensor.hpp.

Constructor & Destructor Documentation

◆ ConstTensor() [1/4]

ConstTensor ( )
inline

Definition at line 334 of file Tensor.hpp.

334 : BaseTensor<const void*>()
335 {
336 this->GetInfo().SetConstant();
337 }

References BaseTensor< const void * >::BaseTensor(), BaseTensor< const void * >::GetInfo(), and TensorInfo::SetConstant().

◆ 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 344 of file Tensor.hpp.

344 : BaseTensor<const void*>(other.GetInfo(), other.GetMemoryArea())
345 {
346 if (!this->GetInfo().IsConstant())
347 {
348 throw InvalidArgumentException("Invalid attempt to construct ConstTensor "
349 "from Tensor due to non-constant TensorInfo");
350 }
351 }

References BaseTensor< const void * >::BaseTensor(), BaseTensor< const void * >::GetInfo(), and BaseTensor< const void * >::GetMemoryArea().

◆ ConstTensor() [3/4]

template<template< typename, typename... > class ContainerType, typename T, typename... ContainerArgs>
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 362 of file Tensor.hpp.

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

References BaseTensor< const void * >::BaseTensor(), BaseTensor< const void * >::GetInfo(), and armnn::info.

◆ ConstTensor() [4/4]

template<typename MemoryType>
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 384 of file Tensor.hpp.

385 : BaseTensor<const void*>(info, memoryArea)
386 {
387 if (!this->GetInfo().IsConstant())
388 {
389 throw InvalidArgumentException("Invalid attempt to construct ConstTensor from non-constant TensorInfo.");
390 }
391 }

References BaseTensor< const void * >::BaseTensor(), BaseTensor< const void * >::GetInfo(), and armnn::info.


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