#ifndef __NEURUN_BACKEND_ACL_CL_MEMORY_MANAGER_H__
#define __NEURUN_BACKEND_ACL_CL_MEMORY_MANAGER_H__
+#include <arm_compute/runtime/CL/CLBufferAllocator.h>
+#include <arm_compute/runtime/PoolManager.h>
+#include <arm_compute/runtime/BlobLifetimeManager.h>
+#include <arm_compute/runtime/MemoryManagerOnDemand.h>
+#include <arm_compute/runtime/CL/CLMemoryGroup.h>
+
#include "acl_common/AclMemoryManager.h"
+//#include "acl_common/AclLinearMemoryManager.h"
+
#include "operand/CLTensor.h"
#include "operand/CLSubTensor.h"
#include "operand/Object.h"
+#include "util/config/ConfigManager.h"
+#include "util/logging.h"
+
namespace neurun
{
namespace backend
::neurun::backend::acl_common::AclMemoryManager<operand::CLTensor, operand::CLSubTensor,
operand::Object>;
+#if 1
using LinearMemoryManager =
::neurun::backend::acl_common::LinearAclMemoryManager<operand::CLTensor, operand::CLSubTensor,
operand::Object>;
+#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()
+{
+ const std::string executor_str =
+ config::ConfigManager::instance().get<std::string>(config::EXECUTOR);
+ if (executor_str == "Linear")
+ {
+ VERBOSE(acl_cl_createMemoryManager) << "AclMemoryManager as Linear" << std::endl;
+ return new LinearMemoryManager();
+ }
+ else
+ {
+ VERBOSE(acl_cl_createMemoryManager) << "AclMemoryManager" << std::endl;
+ return new MemoryManager();
+ }
+}
} // namespace acl_cl
} // namespace backend
template <typename T_ITensor, typename T_Tensor, typename T_SubTensor, typename T_Object>
TemplTensorBuilder<T_ITensor, T_Tensor, T_SubTensor, T_Object>::TemplTensorBuilder()
{
+ // TODO Replace this with createMemoryManager() at StageGenerator's ctor
_mem_mgr = nnfw::cpp14::make_unique<AclMemoryManager<T_Tensor, T_SubTensor, T_Object>>();
assert(_mem_mgr);
-
-// TODO After LinearAclMemoryManager lands, apply below code
-#if 0
- const std::string executor_str =
- config::ConfigManager::instance().get<std::string>(config::EXECUTOR);
- if (executor_str == "Linear")
- _mem_mgr = nnfw::cpp14::make_unique<LinearAclMemoryManager<T_Tensor, T_SubTensor, T_Object>>();
- else
- _mem_mgr = nnfw::cpp14::make_unique<AclMemoryManager<T_Tensor, T_SubTensor, T_Object>>();
-#endif
}
template <typename T_ITensor, typename T_Tensor, typename T_SubTensor, typename T_Object>
#ifndef __NEURUN_BACKEND_ACL_NEON_MEMORY_MANAGER_H__
#define __NEURUN_BACKEND_ACL_NEON_MEMORY_MANAGER_H__
+#include <arm_compute/runtime/Allocator.h>
+#include <arm_compute/runtime/PoolManager.h>
+#include <arm_compute/runtime/OffsetLifetimeManager.h>
+#include <arm_compute/runtime/MemoryManagerOnDemand.h>
+#include <arm_compute/runtime/MemoryGroup.h>
+
#include "acl_common/AclMemoryManager.h"
+//#include "acl_common/AclLinearMemoryManager.h"
+
#include "operand/NETensor.h"
#include "operand/NESubTensor.h"
#include <backend/operand/Object.h>
+#include "util/config/ConfigManager.h"
+#include "util/logging.h"
+
namespace neurun
{
namespace backend
::neurun::backend::acl_common::AclMemoryManager<operand::NETensor, operand::NESubTensor,
::neurun::backend::operand::Object>;
+#if 1
using LinearMemoryManager =
::neurun::backend::acl_common::LinearAclMemoryManager<operand::NETensor, operand::NESubTensor,
::neurun::backend::operand::Object>;
+#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()
+{
+ const std::string executor_str =
+ config::ConfigManager::instance().get<std::string>(config::EXECUTOR);
+ if (executor_str == "Linear")
+ {
+ VERBOSE(acl_neon_createMemoryManager) << "AclMemoryManager as Linear" << std::endl;
+ return new LinearMemoryManager();
+ }
+ else
+ {
+ VERBOSE(acl_neon_createMemoryManager) << "AclMemoryManager" << std::endl;
+ return new MemoryManager();
+ }
+}
} // namespace acl_neon
} // namespace backend