ONE - On-device Neural Engine
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
onert::backend::acl_common::AclLinearMemoryManager< T_ITensor, T_Tensor, T_SubTensor, T_MemoryManager, T_PoolManager, T_LifetimeManager, T_Allocator, T_MemoryGroup > Class Template Reference

#include <AclLinearMemoryManager.h>

Collaboration diagram for onert::backend::acl_common::AclLinearMemoryManager< T_ITensor, T_Tensor, T_SubTensor, T_MemoryManager, T_PoolManager, T_LifetimeManager, T_Allocator, T_MemoryGroup >:

Public Member Functions

 AclLinearMemoryManager ()
 
virtual ~AclLinearMemoryManager ()=default
 
void allocate (void) override
 
void deallocate (void) override
 
void startLifetime (const ir::OperandIndex &ind) override
 
void finishLifetime (const ir::OperandIndex &ind) override
 
- Public Member Functions inherited from onert::backend::acl_common::AclMemoryManager< T_ITensor, T_Tensor, T_SubTensor >
 AclMemoryManager ()
 
virtual ~AclMemoryManager ()=default
 
void buildTensor (const ir::OperandIndex &ind, const ::arm_compute::TensorInfo &info, size_t rank, size_t num_uses)
 
void buildSubtensor (std::shared_ptr< T_ITensor > parent_tensor, const ir::OperandIndex &child_ind, const ::arm_compute::TensorShape &shape, const ::arm_compute::Coordinates &coordinates, size_t rank, bool extent_parent)
 
ir::OperandIndexMap< std::shared_ptr< T_Tensor > > & tensors (void)
 
ir::OperandIndexMap< std::shared_ptr< T_SubTensor > > & subtensors (void)
 

Detailed Description

template<typename T_ITensor, typename T_Tensor, typename T_SubTensor, typename T_MemoryManager, typename T_PoolManager, typename T_LifetimeManager, typename T_Allocator, typename T_MemoryGroup>
class onert::backend::acl_common::AclLinearMemoryManager< T_ITensor, T_Tensor, T_SubTensor, T_MemoryManager, T_PoolManager, T_LifetimeManager, T_Allocator, T_MemoryGroup >

Definition at line 43 of file AclLinearMemoryManager.h.

Constructor & Destructor Documentation

◆ AclLinearMemoryManager()

template<typename T_ITensor , typename T_Tensor , typename T_SubTensor , typename T_MemoryManager , typename T_PoolManager , typename T_LifetimeManager , typename T_Allocator , typename T_MemoryGroup >
onert::backend::acl_common::AclLinearMemoryManager< T_ITensor, T_Tensor, T_SubTensor, T_MemoryManager, T_PoolManager, T_LifetimeManager, T_Allocator, T_MemoryGroup >::AclLinearMemoryManager ( )
inline

Definition at line 46 of file AclLinearMemoryManager.h.

47 : _allocator{nullptr},
48 _io_manager{createMemoryManager<T_MemoryManager, T_PoolManager, T_LifetimeManager>()},
49 _io_group{std::make_shared<T_MemoryGroup>(_io_manager)}
50 {
51 // DO NOTHING
52 }

◆ ~AclLinearMemoryManager()

template<typename T_ITensor , typename T_Tensor , typename T_SubTensor , typename T_MemoryManager , typename T_PoolManager , typename T_LifetimeManager , typename T_Allocator , typename T_MemoryGroup >
virtual onert::backend::acl_common::AclLinearMemoryManager< T_ITensor, T_Tensor, T_SubTensor, T_MemoryManager, T_PoolManager, T_LifetimeManager, T_Allocator, T_MemoryGroup >::~AclLinearMemoryManager ( )
virtualdefault

Member Function Documentation

◆ allocate()

template<typename T_ITensor , typename T_Tensor , typename T_SubTensor , typename T_MemoryManager , typename T_PoolManager , typename T_LifetimeManager , typename T_Allocator , typename T_MemoryGroup >
void onert::backend::acl_common::AclLinearMemoryManager< T_ITensor, T_Tensor, T_SubTensor, T_MemoryManager, T_PoolManager, T_LifetimeManager, T_Allocator, T_MemoryGroup >::allocate ( void  )
inlineoverridevirtual

Reimplemented from onert::backend::acl_common::AclMemoryManager< T_ITensor, T_Tensor, T_SubTensor >.

Definition at line 56 of file AclLinearMemoryManager.h.

57 {
58 _allocator = std::make_shared<T_Allocator>();
59 _io_manager->populate(*_allocator, 1);
60 _io_group->acquire();
61 }

◆ deallocate()

template<typename T_ITensor , typename T_Tensor , typename T_SubTensor , typename T_MemoryManager , typename T_PoolManager , typename T_LifetimeManager , typename T_Allocator , typename T_MemoryGroup >
void onert::backend::acl_common::AclLinearMemoryManager< T_ITensor, T_Tensor, T_SubTensor, T_MemoryManager, T_PoolManager, T_LifetimeManager, T_Allocator, T_MemoryGroup >::deallocate ( void  )
inlineoverridevirtual

Reimplemented from onert::backend::acl_common::AclMemoryManager< T_ITensor, T_Tensor, T_SubTensor >.

Definition at line 63 of file AclLinearMemoryManager.h.

64 {
65 _io_group->release();
66 _io_manager->clear();
67 }

◆ finishLifetime()

template<typename T_ITensor , typename T_Tensor , typename T_SubTensor , typename T_MemoryManager , typename T_PoolManager , typename T_LifetimeManager , typename T_Allocator , typename T_MemoryGroup >
void onert::backend::acl_common::AclLinearMemoryManager< T_ITensor, T_Tensor, T_SubTensor, T_MemoryManager, T_PoolManager, T_LifetimeManager, T_Allocator, T_MemoryGroup >::finishLifetime ( const ir::OperandIndex ind)
inlineoverridevirtual

Reimplemented from onert::backend::acl_common::AclMemoryManager< T_ITensor, T_Tensor, T_SubTensor >.

Definition at line 80 of file AclLinearMemoryManager.h.

81 {
82 auto &tensors = this->tensors();
83 assert(tensors.find(ind) != tensors.end());
84
85 auto tensor = tensors[ind];
86 assert(tensor->allocator());
87
88 tensor->allocator()->allocate();
89 }
ir::OperandIndexMap< std::shared_ptr< T_Tensor > > & tensors(void)

References onert::backend::acl_common::AclMemoryManager< T_ITensor, T_Tensor, T_SubTensor >::tensors().

◆ startLifetime()

template<typename T_ITensor , typename T_Tensor , typename T_SubTensor , typename T_MemoryManager , typename T_PoolManager , typename T_LifetimeManager , typename T_Allocator , typename T_MemoryGroup >
void onert::backend::acl_common::AclLinearMemoryManager< T_ITensor, T_Tensor, T_SubTensor, T_MemoryManager, T_PoolManager, T_LifetimeManager, T_Allocator, T_MemoryGroup >::startLifetime ( const ir::OperandIndex ind)
inlineoverridevirtual

Reimplemented from onert::backend::acl_common::AclMemoryManager< T_ITensor, T_Tensor, T_SubTensor >.

Definition at line 69 of file AclLinearMemoryManager.h.

70 {
71 auto &tensors = this->tensors();
72 assert(tensors.find(ind) != tensors.end());
73
74 auto tensor = tensors[ind];
75 assert(tensor->handle());
76
77 _io_group->manage(tensor->handle());
78 }

References onert::backend::acl_common::AclMemoryManager< T_ITensor, T_Tensor, T_SubTensor >::tensors().


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