From 56055193e82471a70b82e4eb11a8884c5904af75 Mon Sep 17 00:00:00 2001 From: Aron Virginas-Tar Date: Mon, 12 Nov 2018 18:10:43 +0000 Subject: IVGCVSW-2066: Add IMemoryManager and integrate into the backends framework Change-Id: I93223c8678165cbc3d39f461c36bb8610dc81c05 --- src/backends/backendsCommon/CMakeLists.txt | 1 + src/backends/backendsCommon/IBackendInternal.hpp | 11 ++++++++- src/backends/backendsCommon/IMemoryManager.hpp | 26 ++++++++++++++++++++++ src/backends/backendsCommon/test/CMakeLists.txt | 1 + .../test/LayerReleaseConstantDataTest.cpp | 12 ++++------ .../backendsCommon/test/WorkloadFactoryHelper.hpp | 12 ++++++++++ 6 files changed, 54 insertions(+), 9 deletions(-) create mode 100644 src/backends/backendsCommon/IMemoryManager.hpp create mode 100644 src/backends/backendsCommon/test/WorkloadFactoryHelper.hpp (limited to 'src/backends/backendsCommon') diff --git a/src/backends/backendsCommon/CMakeLists.txt b/src/backends/backendsCommon/CMakeLists.txt index e6ac01c0ac..1fe9888901 100644 --- a/src/backends/backendsCommon/CMakeLists.txt +++ b/src/backends/backendsCommon/CMakeLists.txt @@ -12,6 +12,7 @@ list(APPEND armnnBackendsCommon_sources IBackendInternal.hpp IBackendContext.hpp ILayerSupport.cpp + IMemoryManager.hpp ITensorHandle.hpp MakeWorkloadHelper.hpp MemCopyWorkload.cpp diff --git a/src/backends/backendsCommon/IBackendInternal.hpp b/src/backends/backendsCommon/IBackendInternal.hpp index 9d649fcfe2..b102d1a1f9 100644 --- a/src/backends/backendsCommon/IBackendInternal.hpp +++ b/src/backends/backendsCommon/IBackendInternal.hpp @@ -12,6 +12,7 @@ namespace armnn { class IWorkloadFactory; class IBackendContext; +class IMemoryManager; class Optimization; class ILayerSupport; @@ -33,8 +34,16 @@ public: using Optimizations = std::vector; using ILayerSupportSharedPtr = std::shared_ptr; - virtual IWorkloadFactoryPtr CreateWorkloadFactory() const = 0; + using IMemoryManagerUniquePtr = std::unique_ptr; + using IMemoryManagerSharedPtr = std::shared_ptr; + + virtual IMemoryManagerUniquePtr CreateMemoryManager() const = 0; + + virtual IWorkloadFactoryPtr CreateWorkloadFactory( + const IMemoryManagerSharedPtr& memoryManager = nullptr) const = 0; + virtual IBackendContextPtr CreateBackendContext(const IRuntime::CreationOptions&) const = 0; + virtual Optimizations GetOptimizations() const = 0; virtual ILayerSupportSharedPtr GetLayerSupport() const = 0; }; diff --git a/src/backends/backendsCommon/IMemoryManager.hpp b/src/backends/backendsCommon/IMemoryManager.hpp new file mode 100644 index 0000000000..28b81e79ef --- /dev/null +++ b/src/backends/backendsCommon/IMemoryManager.hpp @@ -0,0 +1,26 @@ +// +// Copyright © 2017 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// +#pragma once + +#include + +namespace armnn +{ + +class IMemoryManager +{ +protected: + IMemoryManager() {} + +public: + virtual void Acquire() = 0; + virtual void Release() = 0; + + virtual ~IMemoryManager() {} +}; + +using IMemoryManagerUniquePtr = std::unique_ptr; + +} // namespace armnn \ No newline at end of file diff --git a/src/backends/backendsCommon/test/CMakeLists.txt b/src/backends/backendsCommon/test/CMakeLists.txt index ae94ad5462..7419c148db 100644 --- a/src/backends/backendsCommon/test/CMakeLists.txt +++ b/src/backends/backendsCommon/test/CMakeLists.txt @@ -32,6 +32,7 @@ list(APPEND armnnBackendsCommonUnitTests_sources TensorCopyUtils.cpp TensorCopyUtils.hpp WorkloadDataValidation.cpp + WorkloadFactoryHelper.hpp WorkloadTestUtils.hpp ) diff --git a/src/backends/backendsCommon/test/LayerReleaseConstantDataTest.cpp b/src/backends/backendsCommon/test/LayerReleaseConstantDataTest.cpp index fc32fdcd02..25873d8a49 100644 --- a/src/backends/backendsCommon/test/LayerReleaseConstantDataTest.cpp +++ b/src/backends/backendsCommon/test/LayerReleaseConstantDataTest.cpp @@ -35,8 +35,7 @@ BOOST_AUTO_TEST_SUITE(LayerReleaseConstantDataTest) BOOST_AUTO_TEST_CASE(ReleaseBatchNormalizationLayerConstantDataTest) { - Graph graph; - ClWorkloadFactory factory; + Graph graph; // create the layer we're testing BatchNormalizationDescriptor layerDesc; @@ -82,8 +81,7 @@ BOOST_AUTO_TEST_CASE(ReleaseBatchNormalizationLayerConstantDataTest) BOOST_AUTO_TEST_CASE(ReleaseConvolution2dLayerConstantDataTest) { - Graph graph; - ClWorkloadFactory factory; + Graph graph; // create the layer we're testing Convolution2dDescriptor layerDesc; @@ -127,8 +125,7 @@ BOOST_AUTO_TEST_CASE(ReleaseBatchNormalizationLayerConstantDataTest) BOOST_AUTO_TEST_CASE(ReleaseDepthwiseConvolution2dLayerConstantDataTest) { - Graph graph; - ClWorkloadFactory factory; + Graph graph; // create the layer we're testing DepthwiseConvolution2dDescriptor layerDesc; @@ -169,8 +166,7 @@ BOOST_AUTO_TEST_CASE(ReleaseDepthwiseConvolution2dLayerConstantDataTest) BOOST_AUTO_TEST_CASE(ReleaseFullyConnectedLayerConstantDataTest) { - Graph graph; - ClWorkloadFactory factory; + Graph graph; // create the layer we're testing FullyConnectedDescriptor layerDesc; diff --git a/src/backends/backendsCommon/test/WorkloadFactoryHelper.hpp b/src/backends/backendsCommon/test/WorkloadFactoryHelper.hpp new file mode 100644 index 0000000000..41bf54a939 --- /dev/null +++ b/src/backends/backendsCommon/test/WorkloadFactoryHelper.hpp @@ -0,0 +1,12 @@ +// +// Copyright © 2017 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// +#pragma once + +namespace +{ + +template struct WorkloadFactoryHelper {}; + +} // anonymous namespace \ No newline at end of file -- cgit v1.2.1