diff options
author | Narumol Prangnawarat <narumol.prangnawarat@arm.com> | 2020-02-03 12:29:56 +0000 |
---|---|---|
committer | Jim Flynn <jim.flynn@arm.com> | 2020-02-03 16:36:55 +0000 |
commit | 867eba59ffd2276086a14f7b2632b390c94392d3 (patch) | |
tree | d7626f933f2a72e8c398c0f43c71b4950e980a09 /src/dynamic/sample/SampleDynamicWorkloadFactory.hpp | |
parent | 9d0ff74843b9d36d9f233d208e18a96de1b7d47b (diff) | |
download | armnn-867eba59ffd2276086a14f7b2632b390c94392d3.tar.gz |
IVGCVSW-4399 Create Sample Dynamic backend
* Move IWorkload and WorkloadInfo to include/armnn/backends
* Add simple sample dynamic backend with addition workload
* Add sample example to run dynamic backend
* Unit tests
Signed-off-by: Narumol Prangnawarat <narumol.prangnawarat@arm.com>
Change-Id: I0753ce35b8e8a6223a1471388b49246d82438a44
Diffstat (limited to 'src/dynamic/sample/SampleDynamicWorkloadFactory.hpp')
-rw-r--r-- | src/dynamic/sample/SampleDynamicWorkloadFactory.hpp | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/src/dynamic/sample/SampleDynamicWorkloadFactory.hpp b/src/dynamic/sample/SampleDynamicWorkloadFactory.hpp new file mode 100644 index 0000000000..88b67987e1 --- /dev/null +++ b/src/dynamic/sample/SampleDynamicWorkloadFactory.hpp @@ -0,0 +1,62 @@ +// +// Copyright © 2020 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// +#pragma once + +#include "SampleMemoryManager.hpp" + +#include <armnn/Optional.hpp> +#include <backendsCommon/WorkloadFactory.hpp> + +namespace armnn +{ + +// Sample Dynamic workload factory. +class SampleDynamicWorkloadFactory : public IWorkloadFactory +{ +public: + explicit SampleDynamicWorkloadFactory(const std::shared_ptr<SampleMemoryManager>& memoryManager); + SampleDynamicWorkloadFactory(); + + ~SampleDynamicWorkloadFactory() {} + + const BackendId& GetBackendId() const override; + + static bool IsLayerSupported(const IConnectableLayer& layer, + Optional<DataType> dataType, + std::string& outReasonIfUnsupported); + + bool SupportsSubTensors() const override { return false; } + + std::unique_ptr<ITensorHandle> CreateSubTensorHandle(ITensorHandle& parent, + TensorShape const& subTensorShape, + unsigned int const* subTensorOrigin) const override + { + boost::ignore_unused(parent, subTensorShape, subTensorOrigin); + return nullptr; + } + + std::unique_ptr<ITensorHandle> CreateTensorHandle(const TensorInfo& tensorInfo, + const bool IsMemoryManaged = true) const override; + + std::unique_ptr<ITensorHandle> CreateTensorHandle(const TensorInfo& tensorInfo, + DataLayout dataLayout, + const bool IsMemoryManaged = true) const override; + + std::unique_ptr<IWorkload> CreateAddition(const AdditionQueueDescriptor& descriptor, + const WorkloadInfo& info) const override; + + + std::unique_ptr<IWorkload> CreateInput(const InputQueueDescriptor& descriptor, + const WorkloadInfo& info) const override; + + std::unique_ptr<IWorkload> CreateOutput(const OutputQueueDescriptor& descriptor, + const WorkloadInfo& info) const override; + +private: + mutable std::shared_ptr<SampleMemoryManager> m_MemoryManager; + +}; + +} // namespace armnn |