// // Copyright © 2017 Arm Ltd. All rights reserved. // SPDX-License-Identifier: MIT // #pragma once #include "IMemoryPool.hpp" #include #include namespace armnn { /** Blob memory pool */ class BlobMemoryPool : public IMemoryPool { public: BlobMemoryPool(arm_compute::IAllocator* allocator, std::vector blobSizes); ~BlobMemoryPool(); BlobMemoryPool(const BlobMemoryPool&) = delete; BlobMemoryPool& operator=(const BlobMemoryPool&) = delete; BlobMemoryPool(BlobMemoryPool&&) = default; BlobMemoryPool& operator=(BlobMemoryPool&&) = default; void acquire(arm_compute::MemoryMappings &handles) override; void release(arm_compute::MemoryMappings &handles) override; arm_compute::MappingType mapping_type() const override; std::unique_ptr duplicate() override; void AllocatePool() override; void ReleasePool() override; private: /// Allocator to use for internal allocation arm_compute::IAllocator* m_Allocator; /// Vector holding all the memory blobs std::vector m_Blobs; /// Sizes of each memory blob std::vector m_BlobSizes; /// Flag indicating whether memory has been allocated for the pool bool m_MemoryAllocated; }; } // namespace armnn