ArmNN
 24.02
MemoryManager.cpp
Go to the documentation of this file.
1 //
2 // Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 
6 #include "MemoryManager.hpp"
7 
9 
10 namespace armnn
11 {
12 
13 void MemoryManager::StoreMemToAllocate(std::vector<BufferStorage> bufferStorageVector,
14  std::shared_ptr<ICustomAllocator> customAllocator,
15  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 
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 
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
armnn::Allocator
Definition: MemoryManager.hpp:11
armnn::MemoryManager::Allocate
void Allocate()
Allocate the amount of memory indicated by m_BufferSize, and point each m_Data to each correspondent ...
Definition: MemoryManager.cpp:23
IgnoreUnused.hpp
armnn::MemoryManager::StoreMemToAllocate
void StoreMemToAllocate(std::vector< BufferStorage > bufferStorageVector, std::shared_ptr< ICustomAllocator > customAllocator, size_t typeAlignment=0)
Initialization method to store in m_AllocatorBufferStoragePairVector all information needed.
Definition: MemoryManager.cpp:13
MemoryManager.hpp
armnn::IgnoreUnused
void IgnoreUnused(Ts &&...)
Definition: IgnoreUnused.hpp:14
armnn
Copyright (c) 2021 ARM Limited and Contributors.
Definition: 01_00_quick_start.dox:6
armnn::MemoryManager::Deallocate
void Deallocate()
Deallocate memory.
Definition: MemoryManager.cpp:41