ONE - On-device Neural Engine
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
onert::backend::builtin::TensorRegistry Class Reference

Tensor registry class for builtin backend. More...

#include <TensorRegistry.h>

Collaboration diagram for onert::backend::builtin::TensorRegistry:

Public Member Functions

 TensorRegistry ()
 
ITensorgetITensor (const ir::OperandIndex &ind) override
 Returns pointer of ITensor among native and migrant tensors.
 
ITensorgetNativeITensor (const ir::OperandIndex &ind) override
 Returns pointer of ITensor among native tensors.
 
IPortableTensorgetPortableTensor (const ir::OperandIndex &ind)
 
IPortableTensorgetNativeTensor (const ir::OperandIndex &ind)
 
TensorgetNativeOwnTensor (const ir::OperandIndex &ind)
 
IOTensorgetNativeIOTensor (const ir::OperandIndex &ind)
 
bool setMigrantTensor (const ir::OperandIndex &ind, IPortableTensor *tensor) override
 Set the Migrant Tensor which are from other backends.
 
void setNativeOwnTensor (ir::OperandIndex ind, std::unique_ptr< Tensor > &&tensor)
 
void setNativeIOTensor (ir::OperandIndex ind, std::unique_ptr< IOTensor > &&tensor)
 
const ir::OperandIndexMap< std::unique_ptr< IOTensor > > & native_io_tensors ()
 
std::shared_ptr< basic::TensorRegistrybase_reg ()
 
- Public Member Functions inherited from onert::backend::ITensorRegistry
virtual ~ITensorRegistry ()=default
 Deconstruct itself.
 

Detailed Description

Tensor registry class for builtin backend.

This class contains three types of tensors. Two native tensors(tensors that are managed by this backend) and the other is migrant tensor.

  • NativeIOTensor - IOTensor managed by this backend ( in _base_reg )
    • NOTE The tensor it actually points to can be from another backend
  • NativeOwnTensor - basic::Tensor managed by this backend ( in _base_reg )
  • MigrantTensor - IPortableTensor managed by other backends
Note
_base_reg is used in implementation to reuse basic::StaticTensorManager

Definition at line 43 of file TensorRegistry.h.

Constructor & Destructor Documentation

◆ TensorRegistry()

onert::backend::builtin::TensorRegistry::TensorRegistry ( )
inline

Definition at line 46 of file TensorRegistry.h.

46: _base_reg{new basic::TensorRegistry} {}
PortableTensorRegistryTemplate< basic::Tensor > TensorRegistry

Member Function Documentation

◆ base_reg()

std::shared_ptr< basic::TensorRegistry > onert::backend::builtin::TensorRegistry::base_reg ( )
inline

Definition at line 119 of file TensorRegistry.h.

119{ return _base_reg; }

◆ getITensor()

ITensor * onert::backend::builtin::TensorRegistry::getITensor ( const ir::OperandIndex )
inlineoverridevirtual

Returns pointer of ITensor among native and migrant tensors.

Native Tensor is a tensor that is managed by this backend Migrant Tensor is a tensor that is imported from another backend

Note
Return tensor cannot be used longer than dynamic tensor manager

Implements onert::backend::ITensorRegistry.

Definition at line 48 of file TensorRegistry.h.

49 {
50 auto base_tensor = _base_reg->getITensor(ind);
51 if (base_tensor)
52 return base_tensor;
53 return getNativeIOTensor(ind);
54 }
IOTensor * getNativeIOTensor(const ir::OperandIndex &ind)

References getNativeIOTensor().

Referenced by setMigrantTensor(), setNativeIOTensor(), and setNativeOwnTensor().

◆ getNativeIOTensor()

IOTensor * onert::backend::builtin::TensorRegistry::getNativeIOTensor ( const ir::OperandIndex ind)
inline

Definition at line 85 of file TensorRegistry.h.

86 {
87 auto tensor = _native_io_tensors.find(ind);
88 if (tensor != _native_io_tensors.end())
89 return tensor->second.get();
90 return nullptr;
91 }

Referenced by getITensor(), getNativeITensor(), getNativeTensor(), and getPortableTensor().

◆ getNativeITensor()

ITensor * onert::backend::builtin::TensorRegistry::getNativeITensor ( const ir::OperandIndex )
inlineoverridevirtual

Returns pointer of ITensor among native tensors.

Unlike getITensor , this function only searches from native tensors

Note
Returned tensor cannot be used longer than dynamic tensor manager

Implements onert::backend::ITensorRegistry.

Definition at line 56 of file TensorRegistry.h.

57 {
58 auto base_tensor = _base_reg->getNativeITensor(ind);
59 if (base_tensor)
60 return base_tensor;
61 return getNativeIOTensor(ind);
62 }

References getNativeIOTensor().

◆ getNativeOwnTensor()

Tensor * onert::backend::builtin::TensorRegistry::getNativeOwnTensor ( const ir::OperandIndex ind)
inline

Definition at line 80 of file TensorRegistry.h.

81 {
82 return _base_reg->getNativeTensor(ind);
83 }

◆ getNativeTensor()

IPortableTensor * onert::backend::builtin::TensorRegistry::getNativeTensor ( const ir::OperandIndex ind)
inline

Definition at line 72 of file TensorRegistry.h.

73 {
74 auto base_tensor = _base_reg->getNativeTensor(ind);
75 if (base_tensor)
76 return base_tensor;
77 return getNativeIOTensor(ind);
78 }

References getNativeIOTensor().

◆ getPortableTensor()

IPortableTensor * onert::backend::builtin::TensorRegistry::getPortableTensor ( const ir::OperandIndex ind)
inline

Definition at line 64 of file TensorRegistry.h.

65 {
66 auto base_tensor = _base_reg->getPortableTensor(ind);
67 if (base_tensor)
68 return base_tensor;
69 return getNativeIOTensor(ind);
70 }

References getNativeIOTensor().

◆ native_io_tensors()

const ir::OperandIndexMap< std::unique_ptr< IOTensor > > & onert::backend::builtin::TensorRegistry::native_io_tensors ( )
inline

Definition at line 115 of file TensorRegistry.h.

116 {
117 return _native_io_tensors;
118 }

◆ setMigrantTensor()

bool onert::backend::builtin::TensorRegistry::setMigrantTensor ( const ir::OperandIndex ,
IPortableTensor  
)
inlineoverridevirtual

Set the Migrant Tensor which are from other backends.

Returns
true if supported
false if not supported

Reimplemented from onert::backend::ITensorRegistry.

Definition at line 93 of file TensorRegistry.h.

94 {
95 assert(tensor);
96 assert(!getITensor(ind)); // For the ind, tensor is not registered yet
97 _base_reg->setMigrantTensor(ind, tensor);
98 return true;
99 }
ITensor * getITensor(const ir::OperandIndex &ind) override
Returns pointer of ITensor among native and migrant tensors.

References getITensor().

◆ setNativeIOTensor()

void onert::backend::builtin::TensorRegistry::setNativeIOTensor ( ir::OperandIndex  ind,
std::unique_ptr< IOTensor > &&  tensor 
)
inline

Definition at line 108 of file TensorRegistry.h.

109 {
110 assert(tensor);
111 assert(!getITensor(ind)); // For the ind, tensor is not registered yet
112 _native_io_tensors[ind] = std::move(tensor);
113 }

References getITensor().

◆ setNativeOwnTensor()

void onert::backend::builtin::TensorRegistry::setNativeOwnTensor ( ir::OperandIndex  ind,
std::unique_ptr< Tensor > &&  tensor 
)
inline

Definition at line 101 of file TensorRegistry.h.

102 {
103 assert(tensor);
104 assert(!getITensor(ind)); // For the ind, tensor is not registered yet
105 _base_reg->setNativeTensor(ind, std::move(tensor));
106 }

References getITensor().


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