ArmNN
 21.08
SampleDynamicWorkloadFactory.cpp
Go to the documentation of this file.
1 //
2 // Copyright © 2020 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 
8 
10 #include "SampleDynamicBackend.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 
22 SampleDynamicWorkloadFactory::SampleDynamicWorkloadFactory(const std::shared_ptr<SampleMemoryManager>& memoryManager)
23  : m_MemoryManager(memoryManager)
24 {
25 }
26 
28  : m_MemoryManager(new SampleMemoryManager())
29 {
30 }
31 
33 {
34  return s_Id;
35 }
36 
39  std::string& outReasonIfUnsupported)
40 {
41  return IWorkloadFactory::IsLayerSupported(s_Id, layer, dataType, outReasonIfUnsupported);
42 }
43 
44 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 
51 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 
59 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 
66 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 
73 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
Interface for a layer that is connectable to other layers via InputSlots and OutputSlots.
Definition: INetwork.hpp:61
DataLayout
Definition: Types.hpp:53
std::unique_ptr< armnn::IWorkload > CreateOutput(const armnn::OutputQueueDescriptor &descriptor, const armnn::WorkloadInfo &info) const override
const armnn::BackendId & GetBackendId() const override
static bool IsLayerSupported(const armnn::IConnectableLayer &layer, armnn::Optional< armnn::DataType > dataType, std::string &outReasonIfUnsupported)
const char * GetBackendId()
std::unique_ptr< armnn::ITensorHandle > CreateTensorHandle(const armnn::TensorInfo &tensorInfo, const bool IsMemoryManaged=true) const override
std::unique_ptr< armnn::IWorkload > CreateAddition(const armnn::AdditionQueueDescriptor &descriptor, const armnn::WorkloadInfo &info) const override
std::unique_ptr< armnn::IWorkload > CreateInput(const armnn::InputQueueDescriptor &descriptor, const armnn::WorkloadInfo &info) const override
Contains information about TensorInfos of a layer.