ArmNN
 23.05
TosaRefMemoryManager.hpp
Go to the documentation of this file.
1 //
2 // Copyright © 2022 Arm Ltd and Contributors. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 #pragma once
6 
8 
9 #include <forward_list>
10 #include <vector>
11 
12 namespace armnn
13 {
14 
15 // An implementation of IMemoryManager to be used with RefTensorHandle
17 {
18 public:
20  virtual ~TosaRefMemoryManager();
21 
22  class Pool;
23 
24  Pool* Manage(unsigned int numBytes);
25 
26  void Allocate(Pool *pool);
27 
28  void* GetPointer(Pool *pool);
29 
30  void Acquire() override;
31  void Release() override;
32 
33  class Pool
34  {
35  public:
36  Pool(unsigned int numBytes);
37  ~Pool();
38 
39  void Acquire();
40  void Release();
41 
42  void* GetPointer();
43 
44  void Reserve(unsigned int numBytes);
45 
46  private:
47  unsigned int m_Size;
48  void* m_Pointer;
49  };
50 
51 private:
52  TosaRefMemoryManager(const TosaRefMemoryManager&) = delete; // Noncopyable
53  TosaRefMemoryManager& operator=(const TosaRefMemoryManager&) = delete; // Noncopyable
54 
55  std::forward_list<Pool> m_Pools;
56  std::vector<Pool*> m_FreePools;
57 };
58 
59 }
IMemoryManager.hpp
armnn::TosaRefMemoryManager::TosaRefMemoryManager
TosaRefMemoryManager()
Definition: TosaRefMemoryManager.cpp:14
armnn::TosaRefMemoryManager::Pool
Definition: TosaRefMemoryManager.hpp:33
armnn::TosaRefMemoryManager::Pool::~Pool
~Pool()
Definition: TosaRefMemoryManager.cpp:68
armnn::TosaRefMemoryManager
Definition: TosaRefMemoryManager.hpp:16
armnn::TosaRefMemoryManager::Pool::GetPointer
void * GetPointer()
Definition: TosaRefMemoryManager.cpp:76
armnn::TosaRefMemoryManager::Pool::Acquire
void Acquire()
Definition: TosaRefMemoryManager.cpp:88
armnn::TosaRefMemoryManager::Manage
Pool * Manage(unsigned int numBytes)
Definition: TosaRefMemoryManager.cpp:20
armnn::TosaRefMemoryManager::Allocate
void Allocate(Pool *pool)
Definition: TosaRefMemoryManager.cpp:36
armnn::TosaRefMemoryManager::Acquire
void Acquire() override
Definition: TosaRefMemoryManager.cpp:47
armnn
Copyright (c) 2021 ARM Limited and Contributors.
Definition: 01_00_quick_start.dox:6
armnn::TosaRefMemoryManager::Pool::Pool
Pool(unsigned int numBytes)
Definition: TosaRefMemoryManager.cpp:63
armnn::TosaRefMemoryManager::Release
void Release() override
Definition: TosaRefMemoryManager.cpp:55
armnn::TosaRefMemoryManager::Pool::Reserve
void Reserve(unsigned int numBytes)
Definition: TosaRefMemoryManager.cpp:82
armnn::TosaRefMemoryManager::GetPointer
void * GetPointer(Pool *pool)
Definition: TosaRefMemoryManager.cpp:42
armnn::IMemoryManager
Definition: IMemoryManager.hpp:12
armnn::TosaRefMemoryManager::~TosaRefMemoryManager
virtual ~TosaRefMemoryManager()
Definition: TosaRefMemoryManager.cpp:17
armnn::TosaRefMemoryManager::Pool::Release
void Release()
Definition: TosaRefMemoryManager.cpp:94