1 //
2 // Copyright © 2020 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5
6 #include <armnn/backends/MemCopyWorkload.hpp>
7 #include <armnn/backends/TensorHandle.hpp>
8
9 #include "SampleDynamicAdditionWorkload.hpp"
10 #include "SampleDynamicBackend.hpp"
11 #include "SampleDynamicWorkloadFactory.hpp"
12 #include "SampleTensorHandle.hpp"
13
14 namespace sdb // sample dynamic backend
15 {
16
17 namespace
18 {
19 static const armnn::BackendId s_Id{ GetBackendId() };
20 }
21
SampleDynamicWorkloadFactory(const std::shared_ptr<SampleMemoryManager> & memoryManager)22 SampleDynamicWorkloadFactory::SampleDynamicWorkloadFactory(const std::shared_ptr<SampleMemoryManager>& memoryManager)
23 : m_MemoryManager(memoryManager)
24 {
25 }
26
SampleDynamicWorkloadFactory()27 SampleDynamicWorkloadFactory::SampleDynamicWorkloadFactory()
28 : m_MemoryManager(new SampleMemoryManager())
29 {
30 }
31
GetBackendId() const32 const armnn::BackendId& SampleDynamicWorkloadFactory::GetBackendId() const
33 {
34 return s_Id;
35 }
36
IsLayerSupported(const armnn::IConnectableLayer & layer,armnn::Optional<armnn::DataType> dataType,std::string & outReasonIfUnsupported)37 bool SampleDynamicWorkloadFactory::IsLayerSupported(const armnn::IConnectableLayer& layer,
38 armnn::Optional<armnn::DataType> dataType,
39 std::string& outReasonIfUnsupported)
40 {
41 return IWorkloadFactory::IsLayerSupported(s_Id, layer, dataType, outReasonIfUnsupported);
42 }
43
CreateTensorHandle(const armnn::TensorInfo & tensorInfo,const bool isMemoryManaged) const44 std::unique_ptr<armnn::ITensorHandle> SampleDynamicWorkloadFactory::CreateTensorHandle(
45 const armnn::TensorInfo& tensorInfo,
46 const bool isMemoryManaged) const
47 {
48 return std::make_unique<armnn::ScopedTensorHandle>(tensorInfo);
49 }
50
CreateTensorHandle(const armnn::TensorInfo & tensorInfo,armnn::DataLayout dataLayout,const bool isMemoryManaged) const51 std::unique_ptr<armnn::ITensorHandle> SampleDynamicWorkloadFactory::CreateTensorHandle(
52 const armnn::TensorInfo& tensorInfo,
53 armnn::DataLayout dataLayout,
54 const bool isMemoryManaged) const
55 {
56 return std::make_unique<armnn::ScopedTensorHandle>(tensorInfo);
57 }
58
CreateAddition(const armnn::AdditionQueueDescriptor & descriptor,const armnn::WorkloadInfo & info) const59 std::unique_ptr<armnn::IWorkload> SampleDynamicWorkloadFactory::CreateAddition(
60 const armnn::AdditionQueueDescriptor& descriptor,
61 const armnn::WorkloadInfo& info) const
62 {
63 return std::make_unique<SampleDynamicAdditionWorkload>(descriptor, info);
64 }
65
CreateInput(const armnn::InputQueueDescriptor & descriptor,const armnn::WorkloadInfo & info) const66 std::unique_ptr<armnn::IWorkload> SampleDynamicWorkloadFactory::CreateInput(
67 const armnn::InputQueueDescriptor& descriptor,
68 const armnn::WorkloadInfo& info) const
69 {
70 return std::make_unique<armnn::CopyMemGenericWorkload>(descriptor, info);
71 }
72
CreateOutput(const armnn::OutputQueueDescriptor & descriptor,const armnn::WorkloadInfo & info) const73 std::unique_ptr<armnn::IWorkload> SampleDynamicWorkloadFactory::CreateOutput(
74 const armnn::OutputQueueDescriptor& descriptor,
75 const armnn::WorkloadInfo& info) const
76 {
77 return std::make_unique<armnn::CopyMemGenericWorkload>(descriptor, info);
78 }
79
80 } // namespace sdb
81