blob: 77cab27789790d7668e0fc03071536406bad47b4 [file] [log] [blame]
Teresa Charlinca588392021-10-01 11:29:08 +01001//
2// Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
6#include "MemoryManager.hpp"
7
8#include <armnn/utility/IgnoreUnused.hpp>
9
10namespace armnn
11{
12
13void MemoryManager::StoreMemToAllocate(std::vector<BufferStorage> bufferStorageVector,
Finn Williamsb1aad422021-10-28 19:07:32 +010014 std::shared_ptr<ICustomAllocator> customAllocator,
Teresa Charlinca588392021-10-01 11:29:08 +010015 const size_t typeAlignment)
16{
17 IgnoreUnused(typeAlignment);
18 m_AllocatorBufferStoragePairVector.emplace_back(std::make_pair<Allocator, std::vector<BufferStorage>>(
19 Allocator{customAllocator},
20 std::move(bufferStorageVector)));
21}
22
23void MemoryManager::Allocate()
24{
25 for (auto& m_AllocatorBufferStoragePair : m_AllocatorBufferStoragePairVector)
26 {
27 auto& allocator = m_AllocatorBufferStoragePair.first;
28 for (auto&& bufferStorage : m_AllocatorBufferStoragePair.second)
29 {
30 bufferStorage.m_Buffer = allocator.m_CustomAllocator->allocate(bufferStorage.m_BufferSize, 0);
31
32 for (auto tensorMemory : bufferStorage.m_TensorMemoryVector)
33 {
34 tensorMemory->m_Data = allocator.m_CustomAllocator->GetMemoryRegionAtOffset(bufferStorage.m_Buffer,
35 tensorMemory->m_Offset);
36 }
37 }
38 }
39}
40
41void MemoryManager::Deallocate()
42{
43 for (auto& m_AllocatorBufferStoragePair : m_AllocatorBufferStoragePairVector)
44 {
45 auto& allocator = m_AllocatorBufferStoragePair.first;
46 for (auto&& bufferStorage : m_AllocatorBufferStoragePair.second)
47 {
48 allocator.m_CustomAllocator->free(bufferStorage.m_Buffer);
49 }
50 }
51}
52
53} // namespace armnn