ArmNN
 20.02
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 armnn
15 {
16 
17 namespace
18 {
19 static const 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 
38  Optional<DataType> dataType,
39  std::string& outReasonIfUnsupported)
40 {
41  return IWorkloadFactory::IsLayerSupported(s_Id, layer, dataType, outReasonIfUnsupported);
42 }
43 
44 std::unique_ptr<ITensorHandle> SampleDynamicWorkloadFactory::CreateTensorHandle(const TensorInfo& tensorInfo,
45  const bool isMemoryManaged) const
46 {
47  return std::make_unique<ScopedCpuTensorHandle>(tensorInfo);
48 }
49 
50 std::unique_ptr<ITensorHandle> SampleDynamicWorkloadFactory::CreateTensorHandle(const TensorInfo& tensorInfo,
51  DataLayout dataLayout,
52  const bool isMemoryManaged) const
53 {
54  return std::make_unique<ScopedCpuTensorHandle>(tensorInfo);
55 }
56 
57 std::unique_ptr<IWorkload> SampleDynamicWorkloadFactory::CreateAddition(const AdditionQueueDescriptor& descriptor,
58  const WorkloadInfo& info) const
59 {
60  return std::make_unique<SampleDynamicAdditionWorkload>(descriptor, info);
61 }
62 
63 std::unique_ptr<IWorkload> SampleDynamicWorkloadFactory::CreateInput(const InputQueueDescriptor& descriptor,
64  const WorkloadInfo& info) const
65 {
66  return std::make_unique<CopyMemGenericWorkload>(descriptor, info);
67 }
68 
69 std::unique_ptr<IWorkload> SampleDynamicWorkloadFactory::CreateOutput(const OutputQueueDescriptor& descriptor,
70  const WorkloadInfo& info) const
71 {
72  return std::make_unique<CopyMemGenericWorkload>(descriptor, info);
73 }
74 
75 } // namespace armnn
Interface for a layer that is connectable to other layers via InputSlots and OutputSlots.
Definition: INetwork.hpp:61
DataLayout
Definition: Types.hpp:49
static bool IsLayerSupported(const IConnectableLayer &layer, Optional< DataType > dataType, std::string &outReasonIfUnsupported)
std::unique_ptr< IWorkload > CreateOutput(const OutputQueueDescriptor &descriptor, const WorkloadInfo &info) const override
const BackendId & GetBackendId() const override
std::unique_ptr< IWorkload > CreateAddition(const AdditionQueueDescriptor &descriptor, const WorkloadInfo &info) const override
Copyright (c) 2020 ARM Limited.
const char * GetBackendId()
static bool IsLayerSupported(const BackendId &backendId, const IConnectableLayer &layer, Optional< DataType > dataType, std::string &outReasonIfUnsupported)
std::unique_ptr< IWorkload > CreateInput(const InputQueueDescriptor &descriptor, const WorkloadInfo &info) const override
Contains information about inputs and outputs to a layer.
std::unique_ptr< ITensorHandle > CreateTensorHandle(const TensorInfo &tensorInfo, const bool IsMemoryManaged=true) const override