From 640888b2770c1e632914c0ee882f3fe127db4063 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=EA=B9=80=EC=9A=A9=EC=84=AD/On-Device=20Lab=28SR=29/Enginee?= =?utf8?q?r/=EC=82=BC=EC=84=B1=EC=A0=84=EC=9E=90?= Date: Mon, 24 Jun 2019 19:03:50 +0900 Subject: [PATCH] [MemoryManager] Apply createMemoryManager to each TensorBuilder (#5477) Apply createMemoryManager to each TensorBuilder. However, until TensorBuilders' notify{First|Last|UseIf APIs lands, do not use LinearMemoryManager. Signed-off-by: Yongseop Kim --- runtimes/neurun/backend/acl_cl/Backend.h | 4 +++- runtimes/neurun/backend/acl_cl/MemoryManager.h | 14 +++++++------- runtimes/neurun/backend/acl_common/TemplTensorBuilder.h | 13 +++++++------ runtimes/neurun/backend/acl_neon/Backend.h | 4 +++- runtimes/neurun/backend/acl_neon/MemoryManager.h | 13 ++++++------- 5 files changed, 26 insertions(+), 22 deletions(-) diff --git a/runtimes/neurun/backend/acl_cl/Backend.h b/runtimes/neurun/backend/acl_cl/Backend.h index d3d0d4f..394a562 100644 --- a/runtimes/neurun/backend/acl_cl/Backend.h +++ b/runtimes/neurun/backend/acl_cl/Backend.h @@ -23,6 +23,7 @@ #include "Config.h" #include "StageGenerator.h" +#include "MemoryManager.h" namespace neurun { @@ -37,7 +38,8 @@ public: Backend(const neurun::model::Operands &operand_ctx) : ::neurun::backend::Backend{ std::make_shared(), - std::make_shared(operand_ctx, std::make_shared())} + std::make_shared( + operand_ctx, std::make_shared(createMemoryManager()))} { // DO NOTHING } diff --git a/runtimes/neurun/backend/acl_cl/MemoryManager.h b/runtimes/neurun/backend/acl_cl/MemoryManager.h index 875c157..c53172d 100644 --- a/runtimes/neurun/backend/acl_cl/MemoryManager.h +++ b/runtimes/neurun/backend/acl_cl/MemoryManager.h @@ -24,7 +24,7 @@ #include #include "acl_common/AclMemoryManager.h" -//#include "acl_common/AclLinearMemoryManager.h" +#include "acl_common/AclLinearMemoryManager.h" #include "operand/CLTensor.h" #include "operand/CLSubTensor.h" @@ -44,21 +44,20 @@ using MemoryManager = ::neurun::backend::acl_common::AclMemoryManager; -#if 1 -using LinearMemoryManager = - ::neurun::backend::acl_common::LinearAclMemoryManager; -#else using LinearMemoryManager = ::neurun::backend::acl_common::AclLinearMemoryManager< operand::CLTensor, operand::CLSubTensor, operand::Object, ::arm_compute::MemoryManagerOnDemand, ::arm_compute::PoolManager, ::arm_compute::BlobLifetimeManager, ::arm_compute::CLBufferAllocator, ::arm_compute::CLMemoryGroup>; -#endif MemoryManager *createMemoryManager() { + return new MemoryManager(); + +// TODO Enable this after TensorBuilders' notify{First|Last}UseIf lands +#if 0 const std::string executor_str = config::ConfigManager::instance().get(config::EXECUTOR); + if (executor_str == "Linear") { VERBOSE(acl_cl_createMemoryManager) << "AclMemoryManager as Linear" << std::endl; @@ -69,6 +68,7 @@ MemoryManager *createMemoryManager() VERBOSE(acl_cl_createMemoryManager) << "AclMemoryManager" << std::endl; return new MemoryManager(); } +#endif } } // namespace acl_cl diff --git a/runtimes/neurun/backend/acl_common/TemplTensorBuilder.h b/runtimes/neurun/backend/acl_common/TemplTensorBuilder.h index 4f78a49..206f5b8 100644 --- a/runtimes/neurun/backend/acl_common/TemplTensorBuilder.h +++ b/runtimes/neurun/backend/acl_common/TemplTensorBuilder.h @@ -37,7 +37,9 @@ template ; + + TemplTensorBuilder(T_AclMemoryManager *mem_mgr); /** * @brief Register tensor information to allocate on ACL-CL backend @@ -88,8 +90,7 @@ private: model::OperandIndexMap _subtensor_info_map; model::OperandIndexMap _apply_dim_correction_map; model::Layout _layout; - - std::unique_ptr> _mem_mgr; + std::unique_ptr _mem_mgr; }; } // namespace acl_common @@ -111,10 +112,10 @@ namespace acl_common { template -TemplTensorBuilder::TemplTensorBuilder() +TemplTensorBuilder::TemplTensorBuilder( + T_AclMemoryManager *mem_mgr) + : _mem_mgr{mem_mgr} { - // TODO Replace this with createMemoryManager() at StageGenerator's ctor - _mem_mgr = nnfw::cpp14::make_unique>(); assert(_mem_mgr); } diff --git a/runtimes/neurun/backend/acl_neon/Backend.h b/runtimes/neurun/backend/acl_neon/Backend.h index 7376b7d..0e27d21 100644 --- a/runtimes/neurun/backend/acl_neon/Backend.h +++ b/runtimes/neurun/backend/acl_neon/Backend.h @@ -23,6 +23,7 @@ #include "Config.h" #include "StageGenerator.h" +#include "MemoryManager.h" namespace neurun { @@ -37,7 +38,8 @@ public: Backend(const neurun::model::Operands &operand_ctx) : ::neurun::backend::Backend{ std::make_shared(), - std::make_shared(operand_ctx, std::make_shared())} + std::make_shared( + operand_ctx, std::make_shared(createMemoryManager()))} { // DO NOTHING } diff --git a/runtimes/neurun/backend/acl_neon/MemoryManager.h b/runtimes/neurun/backend/acl_neon/MemoryManager.h index 4006a5e..5745ab2 100644 --- a/runtimes/neurun/backend/acl_neon/MemoryManager.h +++ b/runtimes/neurun/backend/acl_neon/MemoryManager.h @@ -24,7 +24,7 @@ #include #include "acl_common/AclMemoryManager.h" -//#include "acl_common/AclLinearMemoryManager.h" +#include "acl_common/AclLinearMemoryManager.h" #include "operand/NETensor.h" #include "operand/NESubTensor.h" @@ -44,19 +44,17 @@ using MemoryManager = ::neurun::backend::acl_common::AclMemoryManager; -#if 1 -using LinearMemoryManager = - ::neurun::backend::acl_common::LinearAclMemoryManager; -#else using LinearMemoryManager = ::neurun::backend::acl_common::AclLinearMemoryManager< operand::NETensor, operand::NESubTensor, ::neurun::backend::operand::Object, ::arm_compute::MemoryManagerOnDemand, ::arm_compute::PoolManager, ::arm_compute::OffsetLifetimeManager, ::arm_compute::Allocator, ::arm_compute::MemoryGroup>; -#endif MemoryManager *createMemoryManager() { + return new MemoryManager(); + +// TODO Enable this after TensorBuilders' notify{First|Last}UseIf lands +#if 0 const std::string executor_str = config::ConfigManager::instance().get(config::EXECUTOR); if (executor_str == "Linear") @@ -69,6 +67,7 @@ MemoryManager *createMemoryManager() VERBOSE(acl_neon_createMemoryManager) << "AclMemoryManager" << std::endl; return new MemoryManager(); } +#endif } } // namespace acl_neon -- 2.7.4