24.02
TosaRefMemoryManager.cpp
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
#include "
TosaRefMemoryManager.hpp
"
6
7
#include <
armnn/utility/Assert.hpp
>
8
9
#include <algorithm>
10
11
namespace
armnn
12
{
13
14
TosaRefMemoryManager::TosaRefMemoryManager
()
15
{}
16
17
TosaRefMemoryManager::~TosaRefMemoryManager
()
18
{}
19
20
TosaRefMemoryManager::Pool
*
TosaRefMemoryManager::Manage
(
unsigned
int
numBytes)
21
{
22
if
(!m_FreePools.empty())
23
{
24
Pool
* res = m_FreePools.back();
25
m_FreePools.pop_back();
26
res->
Reserve
(numBytes);
27
return
res;
28
}
29
else
30
{
31
m_Pools.push_front(
Pool
(numBytes));
32
return
&m_Pools.front();
33
}
34
}
35
36
void
TosaRefMemoryManager::Allocate
(
TosaRefMemoryManager::Pool
* pool)
37
{
38
ARMNN_ASSERT
(pool);
39
m_FreePools.push_back(pool);
40
}
41
42
void
*
TosaRefMemoryManager::GetPointer
(
TosaRefMemoryManager::Pool
* pool)
43
{
44
return
pool->
GetPointer
();
45
}
46
47
void
TosaRefMemoryManager::Acquire
()
48
{
49
for
(
Pool
&pool: m_Pools)
50
{
51
pool.Acquire();
52
}
53
}
54
55
void
TosaRefMemoryManager::Release
()
56
{
57
for
(
Pool
&pool: m_Pools)
58
{
59
pool.Release();
60
}
61
}
62
63
TosaRefMemoryManager::Pool::Pool
(
unsigned
int
numBytes)
64
: m_Size(numBytes),
65
m_Pointer(nullptr)
66
{}
67
68
TosaRefMemoryManager::Pool::~Pool
()
69
{
70
if
(m_Pointer)
71
{
72
Release
();
73
}
74
}
75
76
void
*
TosaRefMemoryManager::Pool::GetPointer
()
77
{
78
ARMNN_ASSERT_MSG
(m_Pointer,
"TosaRefMemoryManager::Pool::GetPointer() called when memory not acquired"
);
79
return
m_Pointer;
80
}
81
82
void
TosaRefMemoryManager::Pool::Reserve
(
unsigned
int
numBytes)
83
{
84
ARMNN_ASSERT_MSG
(!m_Pointer,
"TosaRefMemoryManager::Pool::Reserve() cannot be called after memory acquired"
);
85
m_Size = std::max(m_Size, numBytes);
86
}
87
88
void
TosaRefMemoryManager::Pool::Acquire
()
89
{
90
ARMNN_ASSERT_MSG
(!m_Pointer,
"TosaRefMemoryManager::Pool::Acquire() called when memory already acquired"
);
91
m_Pointer = ::operator
new
(size_t(m_Size));
92
}
93
94
void
TosaRefMemoryManager::Pool::Release
()
95
{
96
ARMNN_ASSERT_MSG
(m_Pointer,
"TosaRefMemoryManager::Pool::Release() called when memory not acquired"
);
97
::operator
delete
(m_Pointer);
98
m_Pointer =
nullptr
;
99
}
100
101
}
ARMNN_ASSERT
#define ARMNN_ASSERT(COND)
Definition:
Assert.hpp:14
armnn::TosaRefMemoryManager::TosaRefMemoryManager
TosaRefMemoryManager()
Definition:
TosaRefMemoryManager.cpp:14
armnn::TosaRefMemoryManager::~TosaRefMemoryManager
virtual ~TosaRefMemoryManager()
Definition:
TosaRefMemoryManager.cpp:17
armnn::TosaRefMemoryManager::Pool::Acquire
void Acquire()
Definition:
TosaRefMemoryManager.cpp:88
TosaRefMemoryManager.hpp
armnn::TosaRefMemoryManager::Pool
Definition:
TosaRefMemoryManager.hpp:33
ARMNN_ASSERT_MSG
#define ARMNN_ASSERT_MSG(COND, MSG)
Definition:
Assert.hpp:15
armnn::TosaRefMemoryManager::Pool::GetPointer
void * GetPointer()
Definition:
TosaRefMemoryManager.cpp:76
armnn::TosaRefMemoryManager::Pool::Release
void Release()
Definition:
TosaRefMemoryManager.cpp:94
Assert.hpp
armnn::TosaRefMemoryManager::Allocate
void Allocate(Pool *pool)
Definition:
TosaRefMemoryManager.cpp:36
armnn::TosaRefMemoryManager::Pool::~Pool
~Pool()
Definition:
TosaRefMemoryManager.cpp:68
armnn::TosaRefMemoryManager::Acquire
void Acquire() override
Definition:
TosaRefMemoryManager.cpp:47
armnn::TosaRefMemoryManager::Pool::Pool
Pool(unsigned int numBytes)
Definition:
TosaRefMemoryManager.cpp:63
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::TosaRefMemoryManager::Manage
Pool * Manage(unsigned int numBytes)
Definition:
TosaRefMemoryManager.cpp:20
armnn
Copyright (c) 2021 ARM Limited and Contributors.
Definition:
01_00_quick_start.dox:6
armnn::TosaRefMemoryManager::Release
void Release() override
Definition:
TosaRefMemoryManager.cpp:55
src
backends
tosaReference
TosaRefMemoryManager.cpp
Generated on Wed Feb 14 2024 16:36:17 for Arm NN by
1.8.17