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.cpp | |
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.cpp')
-rw-r--r-- | src/dynamic/sample/SampleDynamicWorkloadFactory.cpp | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/src/dynamic/sample/SampleDynamicWorkloadFactory.cpp b/src/dynamic/sample/SampleDynamicWorkloadFactory.cpp new file mode 100644 index 0000000000..0fb5504f41 --- /dev/null +++ b/src/dynamic/sample/SampleDynamicWorkloadFactory.cpp @@ -0,0 +1,75 @@ +// +// Copyright © 2020 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#include <backendsCommon/CpuTensorHandle.hpp> +#include <backendsCommon/MemCopyWorkload.hpp> + +#include "SampleDynamicAdditionWorkload.hpp" +#include "SampleDynamicBackend.hpp" +#include "SampleDynamicWorkloadFactory.hpp" +#include "SampleTensorHandle.hpp" + +namespace armnn +{ + +namespace +{ +static const BackendId s_Id{ GetBackendId() }; +} + +SampleDynamicWorkloadFactory::SampleDynamicWorkloadFactory(const std::shared_ptr<SampleMemoryManager>& memoryManager) + : m_MemoryManager(memoryManager) +{ +} + +SampleDynamicWorkloadFactory::SampleDynamicWorkloadFactory() + : m_MemoryManager(new SampleMemoryManager()) +{ +} + +const BackendId& SampleDynamicWorkloadFactory::GetBackendId() const +{ + return s_Id; +} + +bool SampleDynamicWorkloadFactory::IsLayerSupported(const IConnectableLayer& layer, + Optional<DataType> dataType, + std::string& outReasonIfUnsupported) +{ + return IWorkloadFactory::IsLayerSupported(s_Id, layer, dataType, outReasonIfUnsupported); +} + +std::unique_ptr<ITensorHandle> SampleDynamicWorkloadFactory::CreateTensorHandle(const TensorInfo& tensorInfo, + const bool isMemoryManaged) const +{ + return std::make_unique<ScopedCpuTensorHandle>(tensorInfo); +} + +std::unique_ptr<ITensorHandle> SampleDynamicWorkloadFactory::CreateTensorHandle(const TensorInfo& tensorInfo, + DataLayout dataLayout, + const bool isMemoryManaged) const +{ + return std::make_unique<ScopedCpuTensorHandle>(tensorInfo); +} + +std::unique_ptr<IWorkload> SampleDynamicWorkloadFactory::CreateAddition(const AdditionQueueDescriptor& descriptor, + const WorkloadInfo& info) const +{ + return std::make_unique<SampleDynamicAdditionWorkload>(descriptor, info); +} + +std::unique_ptr<IWorkload> SampleDynamicWorkloadFactory::CreateInput(const InputQueueDescriptor& descriptor, + const WorkloadInfo& info) const +{ + return std::make_unique<CopyMemGenericWorkload>(descriptor, info); +} + +std::unique_ptr<IWorkload> SampleDynamicWorkloadFactory::CreateOutput(const OutputQueueDescriptor& descriptor, + const WorkloadInfo& info) const +{ + return std::make_unique<CopyMemGenericWorkload>(descriptor, info); +} + +} // namespace armnn |