ONE - On-device Neural Engine
Loading...
Searching...
No Matches
SimpleMemoryManager.cpp
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2021 Samsung Electronics Co., Ltd. All Rights Reserved
3
*
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
* you may not use this file except in compliance with the License.
6
* You may obtain a copy of the License at
7
*
8
* http://www.apache.org/licenses/LICENSE-2.0
9
*
10
* Unless required by applicable law or agreed to in writing, software
11
* distributed under the License is distributed on an "AS IS" BASIS,
12
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
* See the License for the specific language governing permissions and
14
* limitations under the License.
15
*/
16
17
#include "
luci_interpreter/SimpleMemoryManager.h
"
18
19
namespace
luci_interpreter
20
{
21
22
void
SimpleMemoryManager::allocate_memory
(
luci_interpreter::Tensor
&tensor)
23
{
24
if
(!tensor.is_allocatable())
25
{
26
return
;
27
}
28
if
(tensor.is_data_allocated())
29
{
30
release_memory
(tensor);
31
}
32
const
auto
element_size =
getDataTypeSize
(tensor.element_type());
33
34
// Use large_num_elements to avoid overflow
35
const
auto
num_elements = tensor.shape().large_num_elements();
36
37
auto
*
data
=
new
uint8_t[num_elements * element_size];
38
tensor.set_data_buffer(
data
);
39
}
40
41
void
SimpleMemoryManager::release_memory
(
luci_interpreter::Tensor
&tensor)
42
{
43
if
(!tensor.is_data_allocated())
44
{
45
tensor.set_data_buffer(
nullptr
);
46
return
;
47
}
48
auto
data
= tensor.data<uint8_t>();
49
delete
[]
data
;
50
tensor.set_data_buffer(
nullptr
);
51
}
52
53
}
// namespace luci_interpreter
luci_interpreter::SimpleMemoryManager::release_memory
void release_memory(luci_interpreter::Tensor &tensor) final
Definition
SimpleMemoryManager.cpp:41
luci_interpreter::SimpleMemoryManager::allocate_memory
void allocate_memory(luci_interpreter::Tensor &tensor) final
Definition
SimpleMemoryManager.cpp:22
luci_interpreter::Tensor
Definition
Tensor.h:101
SimpleMemoryManager.h
flatbuffers::data
const T * data(const std::vector< T, Alloc > &v)
Definition
flatbuffers.h:1145
luci_interpreter
Definition
BuddyMemoryManager.h:22
luci_interpreter::getDataTypeSize
size_t getDataTypeSize(DataType data_type)
Definition
DataType.h:33
compiler
luci-interpreter
src
SimpleMemoryManager.cpp
Generated by
1.9.8