ArmNN
 21.11
WorkloadFactory.hpp
Go to the documentation of this file.
1 //
2 // Copyright © 2017 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 #pragma once
6 
7 #include <armnn/TensorFwd.hpp>
8 #include <armnn/Optional.hpp>
10 #include <armnn/INetwork.hpp>
11 
13 
14 #include <memory>
15 
16 namespace armnn
17 {
18 
19 class Layer;
20 
21 // Workload factory interface for compute backends.
23 {
24 public:
25  virtual ~IWorkloadFactory() { }
26 
27  virtual void AfterWorkloadsCreated() {};
28 
29  virtual const BackendId& GetBackendId() const = 0;
30 
31  static bool IsLayerSupported(const BackendId& backendId,
32  const IConnectableLayer& layer,
33  Optional<DataType> dataType,
34  std::string& outReasonIfUnsupported);
35 
36  static bool IsLayerSupported(const IConnectableLayer& layer,
37  Optional<DataType> dataType,
38  std::string& outReasonIfUnsupported);
39 
40  static bool IsLayerSupported(const IConnectableLayer& layer,
41  Optional<DataType> dataType,
42  std::string& outReasonIfUnsupported,
43  const ModelOptions& modelOptions);
44 
45  static bool IsLayerSupported(const BackendId& backendId,
46  const IConnectableLayer& layer,
47  Optional<DataType> dataType,
48  std::string& outReasonIfUnsupported,
49  const ModelOptions& modelOptions);
50 
51  virtual bool SupportsSubTensors() const = 0;
52 
53  ARMNN_DEPRECATED_MSG("Use ITensorHandleFactory::CreateSubTensorHandle instead")
54  virtual std::unique_ptr<ITensorHandle> CreateSubTensorHandle(ITensorHandle& parent,
55  TensorShape const& subTensorShape,
56  unsigned int const* subTensorOrigin
57  ) const = 0;
58 
59  virtual std::unique_ptr<IWorkload> CreateInput(const InputQueueDescriptor& descriptor,
60  const WorkloadInfo& info) const = 0;
61 
62  ARMNN_DEPRECATED_MSG("Use ITensorHandleFactory::CreateTensorHandle instead")
63  virtual std::unique_ptr<ITensorHandle> CreateTensorHandle(const TensorInfo& tensorInfo,
64  const bool IsMemoryManaged = true) const = 0;
65 
66  ARMNN_DEPRECATED_MSG("Use ITensorHandleFactory::CreateTensorHandle instead")
67  virtual std::unique_ptr<ITensorHandle> CreateTensorHandle(const TensorInfo& tensorInfo,
68  DataLayout dataLayout,
69  const bool IsMemoryManaged = true) const = 0;
70 
71  virtual std::unique_ptr<IWorkload> CreateActivation(const ActivationQueueDescriptor& descriptor,
72  const WorkloadInfo& info) const;
73 
74  virtual std::unique_ptr<IWorkload> CreateAddition(const AdditionQueueDescriptor& descriptor,
75  const WorkloadInfo& info) const;
76 
77  virtual std::unique_ptr<IWorkload> CreateArgMinMax(const ArgMinMaxQueueDescriptor& descriptor,
78  const WorkloadInfo& info) const;
79 
80  virtual std::unique_ptr<IWorkload> CreateBatchNormalization(const BatchNormalizationQueueDescriptor& descriptor,
81  const WorkloadInfo& info) const;
82 
83  virtual std::unique_ptr<IWorkload> CreateBatchToSpaceNd(const BatchToSpaceNdQueueDescriptor& descriptor,
84  const WorkloadInfo& Info) const;
85 
86  virtual std::unique_ptr<IWorkload> CreateCast(const CastQueueDescriptor& descriptor,
87  const WorkloadInfo& Info) const;
88 
89  virtual std::unique_ptr<IWorkload> CreateChannelShuffle(const ChannelShuffleQueueDescriptor& descriptor,
90  const WorkloadInfo& info) const;
91 
92  virtual std::unique_ptr<IWorkload> CreateComparison(const ComparisonQueueDescriptor& descriptor,
93  const WorkloadInfo& Info) const;
94 
95  virtual std::unique_ptr<IWorkload> CreateConcat(const ConcatQueueDescriptor& descriptor,
96  const WorkloadInfo& info) const;
97 
98  virtual std::unique_ptr<IWorkload> CreateConstant(const ConstantQueueDescriptor& descriptor,
99  const WorkloadInfo& info) const;
100 
101  virtual std::unique_ptr<IWorkload> CreateConvertBf16ToFp32(const ConvertBf16ToFp32QueueDescriptor& descriptor,
102  const WorkloadInfo& info) const;
103 
104  virtual std::unique_ptr<IWorkload> CreateConvertFp16ToFp32(const ConvertFp16ToFp32QueueDescriptor& descriptor,
105  const WorkloadInfo& info) const;
106 
107  virtual std::unique_ptr<IWorkload> CreateConvertFp32ToBf16(const ConvertFp32ToBf16QueueDescriptor& descriptor,
108  const WorkloadInfo& info) const;
109 
110  virtual std::unique_ptr<IWorkload> CreateConvertFp32ToFp16(const ConvertFp32ToFp16QueueDescriptor& descriptor,
111  const WorkloadInfo& info) const;
112 
113  virtual std::unique_ptr<IWorkload> CreateConvolution2d(const Convolution2dQueueDescriptor& descriptor,
114  const WorkloadInfo& info) const;
115 
116  virtual std::unique_ptr<IWorkload> CreateConvolution3d(const Convolution3dQueueDescriptor& descriptor,
117  const WorkloadInfo& info) const;
118 
119  virtual std::unique_ptr<IWorkload> CreateDebug(const DebugQueueDescriptor& descriptor,
120  const WorkloadInfo& info) const;
121 
122  virtual std::unique_ptr<IWorkload> CreateDepthToSpace(const DepthToSpaceQueueDescriptor& descriptor,
123  const WorkloadInfo& info) const;
124 
125  virtual std::unique_ptr<IWorkload> CreateDepthwiseConvolution2d(
126  const DepthwiseConvolution2dQueueDescriptor& descriptor, const WorkloadInfo& info) const;
127 
128  virtual std::unique_ptr<IWorkload> CreateDequantize(const DequantizeQueueDescriptor& descriptor,
129  const WorkloadInfo& info) const;
130 
131  virtual std::unique_ptr<IWorkload> CreateDetectionPostProcess(
132  const DetectionPostProcessQueueDescriptor& descriptor, const WorkloadInfo& info) const;
133 
134  virtual std::unique_ptr<IWorkload> CreateDivision(const DivisionQueueDescriptor& descriptor,
135  const WorkloadInfo& info) const;
136 
137  virtual std::unique_ptr<IWorkload> CreateElementwiseUnary(const ElementwiseUnaryQueueDescriptor& descriptor,
138  const WorkloadInfo& Info) const;
139 
140  virtual std::unique_ptr<IWorkload> CreateFakeQuantization(const FakeQuantizationQueueDescriptor& descriptor,
141  const WorkloadInfo& info) const;
142 
143  virtual std::unique_ptr<IWorkload> CreateFill(const FillQueueDescriptor& descriptor,
144  const WorkloadInfo& info) const;
145 
146  virtual std::unique_ptr<IWorkload> CreateFloor(const FloorQueueDescriptor& descriptor,
147  const WorkloadInfo& info) const;
148 
149  virtual std::unique_ptr<IWorkload> CreateFullyConnected(const FullyConnectedQueueDescriptor& descriptor,
150  const WorkloadInfo& info) const;
151 
152  virtual std::unique_ptr<IWorkload> CreateGather(const GatherQueueDescriptor& descriptor,
153  const WorkloadInfo& info) const;
154 
155  virtual std::unique_ptr<IWorkload> CreateInstanceNormalization(
156  const InstanceNormalizationQueueDescriptor& descriptor,
157  const WorkloadInfo& info) const;
158 
159  virtual std::unique_ptr<IWorkload> CreateL2Normalization(const L2NormalizationQueueDescriptor& descriptor,
160  const WorkloadInfo& info) const;
161 
162  virtual std::unique_ptr<IWorkload> CreateLogicalBinary(const LogicalBinaryQueueDescriptor& descriptor,
163  const WorkloadInfo& Info) const;
164 
165  virtual std::unique_ptr<IWorkload> CreateLogicalUnary(const ElementwiseUnaryQueueDescriptor& descriptor,
166  const WorkloadInfo& Info) const;
167 
168  virtual std::unique_ptr<IWorkload> CreateLogSoftmax(const LogSoftmaxQueueDescriptor& descriptor,
169  const WorkloadInfo& info) const;
170 
171  virtual std::unique_ptr<IWorkload> CreateLstm(const LstmQueueDescriptor& descriptor,
172  const WorkloadInfo& info) const;
173 
174  virtual std::unique_ptr<IWorkload> CreateMaximum(const MaximumQueueDescriptor& descriptor,
175  const WorkloadInfo& info) const;
176 
177  virtual std::unique_ptr<IWorkload> CreateMean(const MeanQueueDescriptor& descriptor,
178  const WorkloadInfo& Info) const;
179 
180  virtual std::unique_ptr<IWorkload> CreateMemCopy(const MemCopyQueueDescriptor& descriptor,
181  const WorkloadInfo& info) const;
182 
183  virtual std::unique_ptr<IWorkload> CreateMemImport(const MemImportQueueDescriptor& descriptor,
184  const WorkloadInfo& info) const;
185 
186  virtual std::unique_ptr<IWorkload> CreateMerge(const MergeQueueDescriptor& descriptor,
187  const WorkloadInfo& info) const;
188 
189  virtual std::unique_ptr<IWorkload> CreateMinimum(const MinimumQueueDescriptor& descriptor,
190  const WorkloadInfo& info) const;
191 
192  virtual std::unique_ptr<IWorkload> CreateMultiplication(const MultiplicationQueueDescriptor& descriptor,
193  const WorkloadInfo& info) const;
194 
195  virtual std::unique_ptr<IWorkload> CreateNormalization(const NormalizationQueueDescriptor& descriptor,
196  const WorkloadInfo& info) const;
197 
198  virtual std::unique_ptr<IWorkload> CreateOutput(const OutputQueueDescriptor& descriptor,
199  const WorkloadInfo& info) const;
200 
201  virtual std::unique_ptr<IWorkload> CreatePad(const PadQueueDescriptor& descriptor,
202  const WorkloadInfo& Info) const;
203 
204  virtual std::unique_ptr<IWorkload> CreatePermute(const PermuteQueueDescriptor& descriptor,
205  const WorkloadInfo& info) const;
206 
207  virtual std::unique_ptr<IWorkload> CreatePooling2d(const Pooling2dQueueDescriptor& descriptor,
208  const WorkloadInfo& info) const;
209 
210  virtual std::unique_ptr<IWorkload> CreatePreCompiled(const PreCompiledQueueDescriptor& descriptor,
211  const WorkloadInfo& info) const;
212 
213  virtual std::unique_ptr<IWorkload> CreatePrelu(const PreluQueueDescriptor& descriptor,
214  const WorkloadInfo& info) const;
215 
216  virtual std::unique_ptr<IWorkload> CreateQuantize(const QuantizeQueueDescriptor& descriptor,
217  const WorkloadInfo& Info) const;
218 
219  virtual std::unique_ptr<IWorkload> CreateQLstm(const QLstmQueueDescriptor& descriptor,
220  const WorkloadInfo& info) const;
221 
222  virtual std::unique_ptr<IWorkload> CreateQuantizedLstm(const QuantizedLstmQueueDescriptor& descriptor,
223  const WorkloadInfo& info) const;
224 
225  virtual std::unique_ptr<IWorkload> CreateRank(const RankQueueDescriptor& descriptor,
226  const WorkloadInfo& info) const;
227 
228  virtual std::unique_ptr<IWorkload> CreateReduce(const ReduceQueueDescriptor& descriptor,
229  const WorkloadInfo& info) const;
230 
231  virtual std::unique_ptr<IWorkload> CreateReshape(const ReshapeQueueDescriptor& descriptor,
232  const WorkloadInfo& info) const;
233 
234  virtual std::unique_ptr<IWorkload> CreateResize(const ResizeQueueDescriptor& descriptor,
235  const WorkloadInfo& info) const;
236 
237  virtual std::unique_ptr<IWorkload> CreateShape(const ShapeQueueDescriptor& descriptor,
238  const WorkloadInfo& info) const;
239 
240  virtual std::unique_ptr<IWorkload> CreateSlice(const SliceQueueDescriptor& descriptor,
241  const WorkloadInfo& info) const;
242 
243  virtual std::unique_ptr<IWorkload> CreateSoftmax(const SoftmaxQueueDescriptor& descriptor,
244  const WorkloadInfo& info) const;
245 
246  virtual std::unique_ptr<IWorkload> CreateSpaceToBatchNd(const SpaceToBatchNdQueueDescriptor& descriptor,
247  const WorkloadInfo& info) const;
248 
249  virtual std::unique_ptr<IWorkload> CreateSpaceToDepth(const SpaceToDepthQueueDescriptor& descriptor,
250  const WorkloadInfo& info) const;
251 
252  virtual std::unique_ptr<IWorkload> CreateSubtraction(const SubtractionQueueDescriptor& descriptor,
253  const WorkloadInfo& info) const;
254 
255  virtual std::unique_ptr<IWorkload> CreateSplitter(const SplitterQueueDescriptor& descriptor,
256  const WorkloadInfo& info) const;
257 
258  virtual std::unique_ptr<IWorkload> CreateStack(const StackQueueDescriptor& descriptor,
259  const WorkloadInfo& info) const;
260 
261  virtual std::unique_ptr<IWorkload> CreateStridedSlice(const StridedSliceQueueDescriptor& descriptor,
262  const WorkloadInfo& Info) const;
263 
264  virtual std::unique_ptr<IWorkload> CreateSwitch(const SwitchQueueDescriptor& descriptor,
265  const WorkloadInfo& Info) const;
266 
267  virtual std::unique_ptr<IWorkload> CreateTranspose(const TransposeQueueDescriptor& descriptor,
268  const WorkloadInfo& info) const;
269 
270  virtual std::unique_ptr<IWorkload> CreateTransposeConvolution2d(
271  const TransposeConvolution2dQueueDescriptor& descriptor,
272  const WorkloadInfo& info) const;
273 
274  virtual std::unique_ptr<IWorkload> CreateUnidirectionalSequenceLstm(
276  const WorkloadInfo& info) const;
277 
278 private:
279  static bool IsLayerConfigurationSupported(const BackendId& backendId,
280  const IConnectableLayer& connectableLayer,
281  Optional<DataType> dataType,
282  std::string& outReasonIfUnsupported,
283  const ModelOptions& modelOptions = {});
284 };
285 
286 } // namespace armnn
virtual std::unique_ptr< IWorkload > CreateSplitter(const SplitterQueueDescriptor &descriptor, const WorkloadInfo &info) const
virtual std::unique_ptr< IWorkload > CreateBatchNormalization(const BatchNormalizationQueueDescriptor &descriptor, const WorkloadInfo &info) const
virtual std::unique_ptr< IWorkload > CreateDebug(const DebugQueueDescriptor &descriptor, const WorkloadInfo &info) const
virtual std::unique_ptr< IWorkload > CreateMemCopy(const MemCopyQueueDescriptor &descriptor, const WorkloadInfo &info) const
virtual const BackendId & GetBackendId() const =0
virtual std::unique_ptr< IWorkload > CreateL2Normalization(const L2NormalizationQueueDescriptor &descriptor, const WorkloadInfo &info) const
Interface for a layer that is connectable to other layers via InputSlots and OutputSlots.
Definition: INetwork.hpp:61
virtual std::unique_ptr< IWorkload > CreateBatchToSpaceNd(const BatchToSpaceNdQueueDescriptor &descriptor, const WorkloadInfo &Info) const
virtual std::unique_ptr< IWorkload > CreateMultiplication(const MultiplicationQueueDescriptor &descriptor, const WorkloadInfo &info) const
DataLayout
Definition: Types.hpp:49
virtual std::unique_ptr< IWorkload > CreateInstanceNormalization(const InstanceNormalizationQueueDescriptor &descriptor, const WorkloadInfo &info) const
virtual std::unique_ptr< IWorkload > CreateArgMinMax(const ArgMinMaxQueueDescriptor &descriptor, const WorkloadInfo &info) const
virtual std::unique_ptr< IWorkload > CreateLogicalUnary(const ElementwiseUnaryQueueDescriptor &descriptor, const WorkloadInfo &Info) const
virtual std::unique_ptr< IWorkload > CreateLogSoftmax(const LogSoftmaxQueueDescriptor &descriptor, const WorkloadInfo &info) const
std::vector< BackendOptions > ModelOptions
virtual std::unique_ptr< IWorkload > CreateStridedSlice(const StridedSliceQueueDescriptor &descriptor, const WorkloadInfo &Info) const
virtual std::unique_ptr< IWorkload > CreateStack(const StackQueueDescriptor &descriptor, const WorkloadInfo &info) const
virtual std::unique_ptr< IWorkload > CreateLstm(const LstmQueueDescriptor &descriptor, const WorkloadInfo &info) const
virtual std::unique_ptr< ITensorHandle > CreateSubTensorHandle(ITensorHandle &parent, TensorShape const &subTensorShape, unsigned int const *subTensorOrigin) const =0
virtual std::unique_ptr< IWorkload > CreateFakeQuantization(const FakeQuantizationQueueDescriptor &descriptor, const WorkloadInfo &info) const
virtual std::unique_ptr< IWorkload > CreateQuantizedLstm(const QuantizedLstmQueueDescriptor &descriptor, const WorkloadInfo &info) const
virtual std::unique_ptr< IWorkload > CreateQLstm(const QLstmQueueDescriptor &descriptor, const WorkloadInfo &info) const
virtual std::unique_ptr< IWorkload > CreateConstant(const ConstantQueueDescriptor &descriptor, const WorkloadInfo &info) const
virtual std::unique_ptr< IWorkload > CreateElementwiseUnary(const ElementwiseUnaryQueueDescriptor &descriptor, const WorkloadInfo &Info) const
Copyright (c) 2021 ARM Limited and Contributors.
virtual std::unique_ptr< IWorkload > CreateActivation(const ActivationQueueDescriptor &descriptor, const WorkloadInfo &info) const
virtual std::unique_ptr< IWorkload > CreateTranspose(const TransposeQueueDescriptor &descriptor, const WorkloadInfo &info) const
virtual std::unique_ptr< IWorkload > CreateDivision(const DivisionQueueDescriptor &descriptor, const WorkloadInfo &info) const
virtual std::unique_ptr< IWorkload > CreateConvertFp32ToBf16(const ConvertFp32ToBf16QueueDescriptor &descriptor, const WorkloadInfo &info) const
virtual std::unique_ptr< IWorkload > CreateMaximum(const MaximumQueueDescriptor &descriptor, const WorkloadInfo &info) const
virtual std::unique_ptr< IWorkload > CreateConcat(const ConcatQueueDescriptor &descriptor, const WorkloadInfo &info) const
virtual std::unique_ptr< IWorkload > CreateUnidirectionalSequenceLstm(const UnidirectionalSequenceLstmQueueDescriptor &descriptor, const WorkloadInfo &info) const
virtual std::unique_ptr< IWorkload > CreateInput(const InputQueueDescriptor &descriptor, const WorkloadInfo &info) const =0
virtual std::unique_ptr< IWorkload > CreateMerge(const MergeQueueDescriptor &descriptor, const WorkloadInfo &info) const
virtual std::unique_ptr< IWorkload > CreateConvertBf16ToFp32(const ConvertBf16ToFp32QueueDescriptor &descriptor, const WorkloadInfo &info) const
virtual std::unique_ptr< IWorkload > CreateRank(const RankQueueDescriptor &descriptor, const WorkloadInfo &info) const
virtual std::unique_ptr< IWorkload > CreateDetectionPostProcess(const DetectionPostProcessQueueDescriptor &descriptor, const WorkloadInfo &info) const
virtual std::unique_ptr< IWorkload > CreateSpaceToBatchNd(const SpaceToBatchNdQueueDescriptor &descriptor, const WorkloadInfo &info) const
virtual std::unique_ptr< IWorkload > CreateResize(const ResizeQueueDescriptor &descriptor, const WorkloadInfo &info) const
virtual std::unique_ptr< IWorkload > CreateCast(const CastQueueDescriptor &descriptor, const WorkloadInfo &Info) const
virtual std::unique_ptr< IWorkload > CreateQuantize(const QuantizeQueueDescriptor &descriptor, const WorkloadInfo &Info) const
virtual std::unique_ptr< IWorkload > CreateReduce(const ReduceQueueDescriptor &descriptor, const WorkloadInfo &info) const
virtual void AfterWorkloadsCreated()
virtual std::unique_ptr< IWorkload > CreateSwitch(const SwitchQueueDescriptor &descriptor, const WorkloadInfo &Info) const
virtual std::unique_ptr< IWorkload > CreatePad(const PadQueueDescriptor &descriptor, const WorkloadInfo &Info) const
static bool IsLayerSupported(const BackendId &backendId, const IConnectableLayer &layer, Optional< DataType > dataType, std::string &outReasonIfUnsupported)
virtual std::unique_ptr< IWorkload > CreateNormalization(const NormalizationQueueDescriptor &descriptor, const WorkloadInfo &info) const
virtual std::unique_ptr< IWorkload > CreateLogicalBinary(const LogicalBinaryQueueDescriptor &descriptor, const WorkloadInfo &Info) const
virtual std::unique_ptr< IWorkload > CreateReshape(const ReshapeQueueDescriptor &descriptor, const WorkloadInfo &info) const
virtual std::unique_ptr< ITensorHandle > CreateTensorHandle(const TensorInfo &tensorInfo, const bool IsMemoryManaged=true) const =0
virtual std::unique_ptr< IWorkload > CreatePermute(const PermuteQueueDescriptor &descriptor, const WorkloadInfo &info) const
virtual std::unique_ptr< IWorkload > CreateFill(const FillQueueDescriptor &descriptor, const WorkloadInfo &info) const
virtual std::unique_ptr< IWorkload > CreateComparison(const ComparisonQueueDescriptor &descriptor, const WorkloadInfo &Info) const
virtual std::unique_ptr< IWorkload > CreateConvolution3d(const Convolution3dQueueDescriptor &descriptor, const WorkloadInfo &info) const
virtual std::unique_ptr< IWorkload > CreatePooling2d(const Pooling2dQueueDescriptor &descriptor, const WorkloadInfo &info) const
virtual std::unique_ptr< IWorkload > CreateSpaceToDepth(const SpaceToDepthQueueDescriptor &descriptor, const WorkloadInfo &info) const
virtual std::unique_ptr< IWorkload > CreateChannelShuffle(const ChannelShuffleQueueDescriptor &descriptor, const WorkloadInfo &info) const
virtual std::unique_ptr< IWorkload > CreateGather(const GatherQueueDescriptor &descriptor, const WorkloadInfo &info) const
virtual std::unique_ptr< IWorkload > CreateConvertFp32ToFp16(const ConvertFp32ToFp16QueueDescriptor &descriptor, const WorkloadInfo &info) const
virtual std::unique_ptr< IWorkload > CreateMinimum(const MinimumQueueDescriptor &descriptor, const WorkloadInfo &info) const
virtual std::unique_ptr< IWorkload > CreateDepthToSpace(const DepthToSpaceQueueDescriptor &descriptor, const WorkloadInfo &info) const
virtual std::unique_ptr< IWorkload > CreateSlice(const SliceQueueDescriptor &descriptor, const WorkloadInfo &info) const
virtual std::unique_ptr< IWorkload > CreateAddition(const AdditionQueueDescriptor &descriptor, const WorkloadInfo &info) const
virtual std::unique_ptr< IWorkload > CreateTransposeConvolution2d(const TransposeConvolution2dQueueDescriptor &descriptor, const WorkloadInfo &info) const
virtual std::unique_ptr< IWorkload > CreateMean(const MeanQueueDescriptor &descriptor, const WorkloadInfo &Info) const
virtual std::unique_ptr< IWorkload > CreateOutput(const OutputQueueDescriptor &descriptor, const WorkloadInfo &info) const
virtual std::unique_ptr< IWorkload > CreateSoftmax(const SoftmaxQueueDescriptor &descriptor, const WorkloadInfo &info) const
Contains information about TensorInfos of a layer.
#define ARMNN_DEPRECATED_MSG(message)
Definition: Deprecated.hpp:43
virtual std::unique_ptr< IWorkload > CreateFullyConnected(const FullyConnectedQueueDescriptor &descriptor, const WorkloadInfo &info) const
virtual std::unique_ptr< IWorkload > CreateDepthwiseConvolution2d(const DepthwiseConvolution2dQueueDescriptor &descriptor, const WorkloadInfo &info) const
virtual std::unique_ptr< IWorkload > CreateFloor(const FloorQueueDescriptor &descriptor, const WorkloadInfo &info) const
virtual std::unique_ptr< IWorkload > CreateMemImport(const MemImportQueueDescriptor &descriptor, const WorkloadInfo &info) const
virtual std::unique_ptr< IWorkload > CreateSubtraction(const SubtractionQueueDescriptor &descriptor, const WorkloadInfo &info) const
virtual std::unique_ptr< IWorkload > CreatePreCompiled(const PreCompiledQueueDescriptor &descriptor, const WorkloadInfo &info) const
virtual std::unique_ptr< IWorkload > CreateShape(const ShapeQueueDescriptor &descriptor, const WorkloadInfo &info) const
virtual std::unique_ptr< IWorkload > CreateConvertFp16ToFp32(const ConvertFp16ToFp32QueueDescriptor &descriptor, const WorkloadInfo &info) const
Depthwise Convolution 2D layer workload data.
virtual std::unique_ptr< IWorkload > CreateConvolution2d(const Convolution2dQueueDescriptor &descriptor, const WorkloadInfo &info) const
virtual std::unique_ptr< IWorkload > CreatePrelu(const PreluQueueDescriptor &descriptor, const WorkloadInfo &info) const
virtual bool SupportsSubTensors() const =0
virtual std::unique_ptr< IWorkload > CreateDequantize(const DequantizeQueueDescriptor &descriptor, const WorkloadInfo &info) const