From ca5883951ab51191eb19502459f0936fc96e14f1 Mon Sep 17 00:00:00 2001 From: Teresa Charlin Date: Fri, 1 Oct 2021 11:29:08 +0100 Subject: IVGCVSW-6301 Create the MemoryManager class Signed-off-by: Teresa Charlin Signed-off-by: Finn Williams Change-Id: Ia41b5252d695daabd5afaf1b2267444d24be173a --- src/backends/backendsCommon/MemoryManager.cpp | 53 +++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 src/backends/backendsCommon/MemoryManager.cpp (limited to 'src/backends/backendsCommon/MemoryManager.cpp') diff --git a/src/backends/backendsCommon/MemoryManager.cpp b/src/backends/backendsCommon/MemoryManager.cpp new file mode 100644 index 0000000000..1c109c3c91 --- /dev/null +++ b/src/backends/backendsCommon/MemoryManager.cpp @@ -0,0 +1,53 @@ +// +// Copyright © 2021 Arm Ltd and Contributors. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#include "MemoryManager.hpp" + +#include + +namespace armnn +{ + +void MemoryManager::StoreMemToAllocate(std::vector bufferStorageVector, + ICustomAllocator* customAllocator, + const size_t typeAlignment) +{ + IgnoreUnused(typeAlignment); + m_AllocatorBufferStoragePairVector.emplace_back(std::make_pair>( + Allocator{customAllocator}, + std::move(bufferStorageVector))); +} + +void MemoryManager::Allocate() +{ + for (auto& m_AllocatorBufferStoragePair : m_AllocatorBufferStoragePairVector) + { + auto& allocator = m_AllocatorBufferStoragePair.first; + for (auto&& bufferStorage : m_AllocatorBufferStoragePair.second) + { + bufferStorage.m_Buffer = allocator.m_CustomAllocator->allocate(bufferStorage.m_BufferSize, 0); + + for (auto tensorMemory : bufferStorage.m_TensorMemoryVector) + { + tensorMemory->m_Data = allocator.m_CustomAllocator->GetMemoryRegionAtOffset(bufferStorage.m_Buffer, + tensorMemory->m_Offset); + } + } + } +} + +void MemoryManager::Deallocate() +{ + for (auto& m_AllocatorBufferStoragePair : m_AllocatorBufferStoragePairVector) + { + auto& allocator = m_AllocatorBufferStoragePair.first; + for (auto&& bufferStorage : m_AllocatorBufferStoragePair.second) + { + allocator.m_CustomAllocator->free(bufferStorage.m_Buffer); + } + } +} + +} // namespace armnn \ No newline at end of file -- cgit v1.2.1