// // 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, std::shared_ptr 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