aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/MemoryManagerOnDemand.cpp
diff options
context:
space:
mode:
authorGeorgios Pinitas <georgios.pinitas@arm.com>2018-10-11 15:33:11 +0100
committerAnthony Barbier <anthony.barbier@arm.com>2018-11-02 16:55:45 +0000
commit9da19e9da660057785fb736aba5c61b1ae773f2f (patch)
treeb51b30bed8266571178834367437bab0d8a7a517 /src/runtime/MemoryManagerOnDemand.cpp
parentffb57a05d624c2efe1b32cf6ece112ee28726058 (diff)
downloadComputeLibrary-9da19e9da660057785fb736aba5c61b1ae773f2f.tar.gz
COMPMID-1605: API alignment for the MemoryManager with ARMNN
Change-Id: Iac6a95ba7f388e65b7f1c8865c3e9bf289b233ea Reviewed-on: https://eu-gerrit-1.euhpc.arm.com/155490 Reviewed-by: Anthony Barbier <anthony.barbier@arm.com> Tested-by: bsgcomp <bsgcomp@arm.com>
Diffstat (limited to 'src/runtime/MemoryManagerOnDemand.cpp')
-rw-r--r--src/runtime/MemoryManagerOnDemand.cpp45
1 files changed, 15 insertions, 30 deletions
diff --git a/src/runtime/MemoryManagerOnDemand.cpp b/src/runtime/MemoryManagerOnDemand.cpp
index 4dfa28bddb..d9803a8caf 100644
--- a/src/runtime/MemoryManagerOnDemand.cpp
+++ b/src/runtime/MemoryManagerOnDemand.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2016, 2017 ARM Limited.
+ * Copyright (c) 2016-2018 ARM Limited.
*
* SPDX-License-Identifier: MIT
*
@@ -29,33 +29,15 @@
#include <memory>
-using namespace arm_compute;
-
+namespace arm_compute
+{
MemoryManagerOnDemand::MemoryManagerOnDemand(std::shared_ptr<ILifetimeManager> lifetime_manager, std::shared_ptr<IPoolManager> pool_manager)
- : _lifetime_mgr(std::move(lifetime_manager)), _pool_mgr(std::move(pool_manager)), _allocator(nullptr), _is_finalized(false), _num_pools(1)
+ : _lifetime_mgr(std::move(lifetime_manager)), _pool_mgr(std::move(pool_manager))
{
ARM_COMPUTE_ERROR_ON_MSG(!_lifetime_mgr, "Lifetime manager not specified correctly!");
ARM_COMPUTE_ERROR_ON_MSG(!_pool_mgr, "Pool manager not specified correctly!");
}
-bool MemoryManagerOnDemand::is_finalized() const
-{
- return _is_finalized;
-}
-
-void MemoryManagerOnDemand::set_num_pools(unsigned int num_pools)
-{
- ARM_COMPUTE_ERROR_ON(num_pools == 0);
- _num_pools = num_pools;
-}
-
-void MemoryManagerOnDemand::set_allocator(IAllocator *allocator)
-{
- ARM_COMPUTE_ERROR_ON_MSG(is_finalized(), "Memory manager is already finalized!");
- ARM_COMPUTE_ERROR_ON(allocator == nullptr);
- _allocator = allocator;
-}
-
ILifetimeManager *MemoryManagerOnDemand::lifetime_manager()
{
return _lifetime_mgr.get();
@@ -66,23 +48,26 @@ IPoolManager *MemoryManagerOnDemand::pool_manager()
return _pool_mgr.get();
}
-void MemoryManagerOnDemand::finalize()
+void MemoryManagerOnDemand::populate(arm_compute::IAllocator &allocator, size_t num_pools)
{
- ARM_COMPUTE_ERROR_ON_MSG(is_finalized(), "Memory manager is already finalized!");
ARM_COMPUTE_ERROR_ON(!_lifetime_mgr);
ARM_COMPUTE_ERROR_ON(!_pool_mgr);
- ARM_COMPUTE_ERROR_ON_MSG(!_lifetime_mgr->are_all_finalized(), "All the objects have not been finalized! ");
- ARM_COMPUTE_ERROR_ON(_allocator == nullptr);
+ ARM_COMPUTE_ERROR_ON_MSG(!_lifetime_mgr->are_all_finalized(), "All the objects have not been finalized!");
+ ARM_COMPUTE_ERROR_ON_MSG(_pool_mgr->num_pools() != 0, "Pool manager already contains pools!");
// Create pools
- auto pool_template = _lifetime_mgr->create_pool(_allocator);
- for(int i = _num_pools; i > 1; --i)
+ auto pool_template = _lifetime_mgr->create_pool(&allocator);
+ for(int i = num_pools; i > 1; --i)
{
auto pool = pool_template->duplicate();
_pool_mgr->register_pool(std::move(pool));
}
_pool_mgr->register_pool(std::move(pool_template));
+}
- // Set finalized to true
- _is_finalized = true;
+void MemoryManagerOnDemand::clear()
+{
+ ARM_COMPUTE_ERROR_ON_MSG(!_pool_mgr, "Pool manager not specified correctly!");
+ _pool_mgr->clear_pools();
}
+} //namespace arm_compute