xref: /aosp_15_r20/external/armnn/src/dynamic/sample/SampleDynamicWorkloadFactory.cpp (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
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