diff options
author | Aron Virginas-Tar <Aron.Virginas-Tar@arm.com> | 2018-10-12 15:18:03 +0100 |
---|---|---|
committer | Matthew Bentham <matthew.bentham@arm.com> | 2018-10-22 16:57:53 +0100 |
commit | f9aeef0e036df176699aa96d30d2ca8d7546534e (patch) | |
tree | 09ad918f7d2cffbca2c013c688332fa687b8d8ca /src/backends/aclCommon/memory/PoolManager.hpp | |
parent | 3b278e9261bd0de67c82f7d6c36731f118124f52 (diff) | |
download | armnn-f9aeef0e036df176699aa96d30d2ca8d7546534e.tar.gz |
IVGCVSW-2006: Move ACL memory manager source code under aclCommon
Change-Id: Ie1c74a18de5c3dd1cd5285c222bd6327489c1508
Diffstat (limited to 'src/backends/aclCommon/memory/PoolManager.hpp')
-rw-r--r-- | src/backends/aclCommon/memory/PoolManager.hpp | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/src/backends/aclCommon/memory/PoolManager.hpp b/src/backends/aclCommon/memory/PoolManager.hpp new file mode 100644 index 0000000000..39bc665415 --- /dev/null +++ b/src/backends/aclCommon/memory/PoolManager.hpp @@ -0,0 +1,57 @@ +// +// Copyright © 2017 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// +#pragma once + +#include "IPoolManager.hpp" + +#include <arm_compute/runtime/IMemoryPool.h> +#include <arm_compute/core/Error.h> + +#include <support/Mutex.h> +#include <support/Semaphore.h> + +#include <cstddef> +#include <list> +#include <memory> + +namespace armnn +{ + +class PoolManager : public IPoolManager +{ +public: + PoolManager(); + + PoolManager(const PoolManager &) = delete; + + PoolManager &operator=(const PoolManager &) = delete; + + PoolManager(PoolManager &&) = default; + + PoolManager &operator=(PoolManager &&) = default; + + arm_compute::IMemoryPool *lock_pool() override; + void unlock_pool(arm_compute::IMemoryPool *pool) override; + void register_pool(std::unique_ptr<arm_compute::IMemoryPool> pool) override; + size_t num_pools() const override; + + void AllocatePools() override; + void ReleasePools() override; + +private: + /// List of free pools + std::list<std::unique_ptr<arm_compute::IMemoryPool>> m_FreePools; + + /// List of occupied pools + std::list<std::unique_ptr<arm_compute::IMemoryPool>> m_OccupiedPools; + + /// Semaphore to control the queues + std::unique_ptr<arm_compute::Semaphore> m_Semaphore; + + /// Mutex to control access to the queues + mutable arm_compute::Mutex m_Mutex; +}; + +} // namespace armnn
\ No newline at end of file |