• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //
2 // Copyright © 2019 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 
6 #pragma once
7 
8 #include "WorkloadFactory.hpp"
9 
10 namespace armnn
11 {
12 
13 class WorkloadFactoryBase : public IWorkloadFactory
14 {
15 public:
SupportsSubTensors() const16     bool SupportsSubTensors() const override
17     { return false; };
18 
CreateSubTensorHandle(ITensorHandle &,TensorShape const &,unsigned int const *) const19     std::unique_ptr<ITensorHandle> CreateSubTensorHandle(ITensorHandle& /*parent*/,
20                                                          TensorShape const& /*subTensorShape*/,
21                                                          unsigned int const */*subTensorOrigin*/) const override
22     { return nullptr; };
23 
CreateInput(const InputQueueDescriptor &,const WorkloadInfo &) const24     std::unique_ptr<IWorkload> CreateInput(const InputQueueDescriptor& /*descriptor*/,
25                                            const WorkloadInfo& /*info*/) const override
26     { return nullptr; }
27 
CreateTensorHandle(const TensorInfo &,const bool) const28     std::unique_ptr<ITensorHandle> CreateTensorHandle(const TensorInfo& /*tensorInfo*/,
29                                                       const bool /*IsMemoryManaged*/) const override
30     { return nullptr; }
31 
CreateTensorHandle(const TensorInfo &,DataLayout,const bool) const32     std::unique_ptr<ITensorHandle> CreateTensorHandle(const TensorInfo& /*tensorInfo*/,
33                                                       DataLayout /*dataLayout*/,
34                                                       const bool /*IsMemoryManaged*/) const override
35     { return nullptr; }
36 
CreateAbs(const AbsQueueDescriptor &,const WorkloadInfo &) const37     std::unique_ptr<IWorkload> CreateAbs(const AbsQueueDescriptor& /*descriptor*/,
38                                          const WorkloadInfo& /*info*/) const override
39     { return nullptr; }
40 
CreateActivation(const ActivationQueueDescriptor &,const WorkloadInfo &) const41     std::unique_ptr<IWorkload> CreateActivation(const ActivationQueueDescriptor& /*descriptor*/,
42                                                 const WorkloadInfo& /*info*/) const override
43     { return nullptr; }
44 
CreateAddition(const AdditionQueueDescriptor &,const WorkloadInfo &) const45     std::unique_ptr<IWorkload> CreateAddition(const AdditionQueueDescriptor& /*descriptor*/,
46                                               const WorkloadInfo& /*info*/) const override
47     { return nullptr; }
48 
CreateArgMinMax(const ArgMinMaxQueueDescriptor &,const WorkloadInfo &) const49     std::unique_ptr<IWorkload> CreateArgMinMax(const ArgMinMaxQueueDescriptor& /*descriptor*/,
50                                                const WorkloadInfo& /*info*/) const override
51     { return nullptr; }
52 
CreateBatchNormalization(const BatchNormalizationQueueDescriptor &,const WorkloadInfo &) const53     std::unique_ptr<IWorkload> CreateBatchNormalization(const BatchNormalizationQueueDescriptor& /*descriptor*/,
54                                                         const WorkloadInfo& /*info*/) const override
55     { return nullptr; }
56 
CreateBatchToSpaceNd(const BatchToSpaceNdQueueDescriptor &,const WorkloadInfo &) const57     std::unique_ptr<IWorkload> CreateBatchToSpaceNd(const BatchToSpaceNdQueueDescriptor& /*descriptor*/,
58                                                     const WorkloadInfo& /*info*/) const override
59     { return nullptr; }
60 
CreateComparison(const ComparisonQueueDescriptor &,const WorkloadInfo &) const61     std::unique_ptr<IWorkload> CreateComparison(const ComparisonQueueDescriptor& /*descriptor*/,
62                                                 const WorkloadInfo& /*info*/) const override
63     { return nullptr; }
64 
CreateConcat(const ConcatQueueDescriptor &,const WorkloadInfo &) const65     std::unique_ptr<IWorkload> CreateConcat(const ConcatQueueDescriptor& /*descriptor*/,
66                                             const WorkloadInfo& /*info*/) const override
67     { return nullptr; }
68 
CreateConstant(const ConstantQueueDescriptor &,const WorkloadInfo &) const69     std::unique_ptr<IWorkload> CreateConstant(const ConstantQueueDescriptor& /*descriptor*/,
70                                               const WorkloadInfo& /*info*/) const override
71     { return nullptr; }
72 
CreateConvertFp16ToFp32(const ConvertFp16ToFp32QueueDescriptor &,const WorkloadInfo &) const73     std::unique_ptr<IWorkload> CreateConvertFp16ToFp32(const ConvertFp16ToFp32QueueDescriptor& /*descriptor*/,
74                                                        const WorkloadInfo& /*info*/) const override
75     { return nullptr; }
76 
CreateConvertFp32ToFp16(const ConvertFp32ToFp16QueueDescriptor &,const WorkloadInfo &) const77     std::unique_ptr<IWorkload> CreateConvertFp32ToFp16(const ConvertFp32ToFp16QueueDescriptor& /*descriptor*/,
78                                                        const WorkloadInfo& /*info*/) const override
79     { return nullptr; }
80 
CreateConvolution2d(const Convolution2dQueueDescriptor &,const WorkloadInfo &) const81     std::unique_ptr<IWorkload> CreateConvolution2d(const Convolution2dQueueDescriptor& /*descriptor*/,
82                                                    const WorkloadInfo& /*info*/) const override
83     { return nullptr; }
84 
CreateDebug(const DebugQueueDescriptor &,const WorkloadInfo &) const85     std::unique_ptr<IWorkload> CreateDebug(const DebugQueueDescriptor& /*descriptor*/,
86                                            const WorkloadInfo& /*info*/) const override
87     { return nullptr; }
88 
CreateDepthToSpace(const DepthToSpaceQueueDescriptor &,const WorkloadInfo &) const89     std::unique_ptr<IWorkload> CreateDepthToSpace(const DepthToSpaceQueueDescriptor& /*descriptor*/,
90                                                   const WorkloadInfo& /*info*/) const override
91     { return nullptr; }
92 
CreateDepthwiseConvolution2d(const DepthwiseConvolution2dQueueDescriptor &,const WorkloadInfo &) const93     std::unique_ptr<IWorkload> CreateDepthwiseConvolution2d(const DepthwiseConvolution2dQueueDescriptor& /*descriptor*/,
94                                                             const WorkloadInfo& /*info*/) const override
95     { return nullptr; }
96 
CreateDequantize(const DequantizeQueueDescriptor &,const WorkloadInfo &) const97     std::unique_ptr<IWorkload> CreateDequantize(const DequantizeQueueDescriptor& /*descriptor*/,
98                                                 const WorkloadInfo& /*info*/) const override
99     { return nullptr; }
100 
CreateDetectionPostProcess(const DetectionPostProcessQueueDescriptor &,const WorkloadInfo &) const101     std::unique_ptr<IWorkload> CreateDetectionPostProcess(const DetectionPostProcessQueueDescriptor& /*descriptor*/,
102                                                           const WorkloadInfo& /*info*/) const override
103     { return nullptr; }
104 
CreateDivision(const DivisionQueueDescriptor &,const WorkloadInfo &) const105     std::unique_ptr<IWorkload> CreateDivision(const DivisionQueueDescriptor& /*descriptor*/,
106                                               const WorkloadInfo& /*info*/) const override
107     { return nullptr; }
108 
CreateElementwiseUnary(const ElementwiseUnaryQueueDescriptor & descriptor,const WorkloadInfo & info) const109     std::unique_ptr<IWorkload> CreateElementwiseUnary(const ElementwiseUnaryQueueDescriptor& descriptor,
110                                                       const WorkloadInfo& info) const override
111     {
112         if (descriptor.m_Parameters.m_Operation == UnaryOperation::Abs)
113         {
114             AbsQueueDescriptor absDescriptor;
115             return CreateAbs(absDescriptor, info);
116         }
117         else if (descriptor.m_Parameters.m_Operation == UnaryOperation::Rsqrt)
118         {
119             RsqrtQueueDescriptor rsqrtDescriptor;
120             return CreateRsqrt(rsqrtDescriptor, info);
121         }
122         else if (descriptor.m_Parameters.m_Operation == UnaryOperation::LogicalNot)
123         {
124             return CreateLogicalUnary(descriptor, info);
125         }
126         return nullptr;
127     }
128 
CreateFakeQuantization(const FakeQuantizationQueueDescriptor &,const WorkloadInfo &) const129     std::unique_ptr<IWorkload> CreateFakeQuantization(const FakeQuantizationQueueDescriptor& /*descriptor*/,
130                                                       const WorkloadInfo& /*info*/) const override
131     { return nullptr; }
132 
CreateFloor(const FloorQueueDescriptor &,const WorkloadInfo &) const133     std::unique_ptr<IWorkload> CreateFloor(const FloorQueueDescriptor& /*descriptor*/,
134                                            const WorkloadInfo& /*info*/) const override
135     { return nullptr; }
136 
CreateFullyConnected(const FullyConnectedQueueDescriptor &,const WorkloadInfo &) const137     std::unique_ptr<IWorkload> CreateFullyConnected(const FullyConnectedQueueDescriptor& /*descriptor*/,
138                                                     const WorkloadInfo& /*info*/) const override
139     { return nullptr; }
140 
CreateGather(const GatherQueueDescriptor &,const WorkloadInfo &) const141     std::unique_ptr<IWorkload> CreateGather(const GatherQueueDescriptor& /*descriptor*/,
142                                             const WorkloadInfo& /*info*/) const override
143     { return nullptr; }
144 
CreateInstanceNormalization(const InstanceNormalizationQueueDescriptor &,const WorkloadInfo &) const145     std::unique_ptr<IWorkload> CreateInstanceNormalization(const InstanceNormalizationQueueDescriptor& /*descriptor*/,
146                                                            const WorkloadInfo& /*info*/) const override
147     { return nullptr; }
148 
CreateL2Normalization(const L2NormalizationQueueDescriptor &,const WorkloadInfo &) const149     std::unique_ptr<IWorkload> CreateL2Normalization(const L2NormalizationQueueDescriptor& /*descriptor*/,
150                                                      const WorkloadInfo& /*info*/) const override
151     { return nullptr; }
152 
CreateLogSoftmax(const LogSoftmaxQueueDescriptor &,const WorkloadInfo &) const153     std::unique_ptr<IWorkload> CreateLogSoftmax(const LogSoftmaxQueueDescriptor& /*descriptor*/,
154                                                 const WorkloadInfo& /*info*/) const override
155     { return nullptr; }
156 
CreateLstm(const LstmQueueDescriptor &,const WorkloadInfo &) const157     std::unique_ptr<IWorkload> CreateLstm(const LstmQueueDescriptor& /*descriptor*/,
158                                           const WorkloadInfo& /*info*/) const override
159     { return nullptr; }
160 
CreateMaximum(const MaximumQueueDescriptor &,const WorkloadInfo &) const161     std::unique_ptr<IWorkload> CreateMaximum(const MaximumQueueDescriptor& /*descriptor*/,
162                                              const WorkloadInfo& /*info*/) const override
163     { return nullptr; }
164 
CreateMean(const MeanQueueDescriptor &,const WorkloadInfo &) const165     std::unique_ptr<IWorkload> CreateMean(const MeanQueueDescriptor& /*descriptor*/,
166                                           const WorkloadInfo& /*info*/) const override
167     { return nullptr; }
168 
CreateMemCopy(const MemCopyQueueDescriptor &,const WorkloadInfo &) const169     std::unique_ptr<IWorkload> CreateMemCopy(const MemCopyQueueDescriptor& /*descriptor*/,
170                                              const WorkloadInfo& /*info*/) const override
171     { return nullptr; }
172 
CreateMemImport(const MemImportQueueDescriptor &,const WorkloadInfo &) const173     std::unique_ptr<IWorkload> CreateMemImport(const MemImportQueueDescriptor& /*descriptor*/,
174                                                const WorkloadInfo& /*info*/) const override
175     { return nullptr; }
176 
CreateMerge(const MergeQueueDescriptor &,const WorkloadInfo &) const177     std::unique_ptr<IWorkload> CreateMerge(const MergeQueueDescriptor& /*descriptor*/,
178                                            const WorkloadInfo& /*info*/) const override
179     { return nullptr; }
180 
CreateMinimum(const MinimumQueueDescriptor &,const WorkloadInfo &) const181     std::unique_ptr<IWorkload> CreateMinimum(const MinimumQueueDescriptor& /*descriptor*/,
182                                              const WorkloadInfo& /*info*/) const override
183     { return nullptr; }
184 
CreateMultiplication(const MultiplicationQueueDescriptor &,const WorkloadInfo &) const185     std::unique_ptr<IWorkload> CreateMultiplication(const MultiplicationQueueDescriptor& /*descriptor*/,
186                                                     const WorkloadInfo& /*info*/) const override
187     { return nullptr; }
188 
CreateNormalization(const NormalizationQueueDescriptor &,const WorkloadInfo &) const189     std::unique_ptr<IWorkload> CreateNormalization(const NormalizationQueueDescriptor& /*descriptor*/,
190                                                    const WorkloadInfo& /*info*/) const override
191     { return nullptr; }
192 
CreateOutput(const OutputQueueDescriptor &,const WorkloadInfo &) const193     std::unique_ptr<IWorkload> CreateOutput(const OutputQueueDescriptor& /*descriptor*/,
194                                             const WorkloadInfo& /*info*/) const override
195     { return nullptr; }
196 
CreatePad(const PadQueueDescriptor &,const WorkloadInfo &) const197     std::unique_ptr<IWorkload> CreatePad(const PadQueueDescriptor& /*descriptor*/,
198                                          const WorkloadInfo& /*info*/) const override
199     { return nullptr; }
200 
CreatePermute(const PermuteQueueDescriptor &,const WorkloadInfo &) const201     std::unique_ptr<IWorkload> CreatePermute(const PermuteQueueDescriptor& /*descriptor*/,
202                                              const WorkloadInfo& /*info*/) const override
203     { return nullptr; }
204 
CreatePooling2d(const Pooling2dQueueDescriptor &,const WorkloadInfo &) const205     std::unique_ptr<IWorkload> CreatePooling2d(const Pooling2dQueueDescriptor& /*descriptor*/,
206                                                const WorkloadInfo& /*info*/) const override
207     { return nullptr; }
208 
CreatePreCompiled(const PreCompiledQueueDescriptor &,const WorkloadInfo &) const209     std::unique_ptr<IWorkload> CreatePreCompiled(const PreCompiledQueueDescriptor& /*descriptor*/,
210                                                  const WorkloadInfo& /*info*/) const override
211     { return nullptr; }
212 
CreatePrelu(const PreluQueueDescriptor &,const WorkloadInfo &) const213     std::unique_ptr<IWorkload> CreatePrelu(const PreluQueueDescriptor& /*descriptor*/,
214                                            const WorkloadInfo& /*info*/) const override
215     { return nullptr; }
216 
CreateQuantize(const QuantizeQueueDescriptor &,const WorkloadInfo &) const217     std::unique_ptr<IWorkload> CreateQuantize(const QuantizeQueueDescriptor& /*descriptor*/,
218                                               const WorkloadInfo& /*info*/) const override
219     { return nullptr; }
220 
CreateQuantizedLstm(const QuantizedLstmQueueDescriptor &,const WorkloadInfo &) const221     std::unique_ptr<IWorkload> CreateQuantizedLstm(const QuantizedLstmQueueDescriptor& /*descriptor*/,
222                                                    const WorkloadInfo& /*info*/) const override
223     { return nullptr; }
224 
CreateRank(const RankQueueDescriptor &,const WorkloadInfo &) const225     std::unique_ptr<IWorkload> CreateRank(const RankQueueDescriptor& /*descriptor*/,
226                                           const WorkloadInfo& /*info*/) const override
227     { return nullptr; }
228 
CreateReshape(const ReshapeQueueDescriptor &,const WorkloadInfo &) const229     std::unique_ptr<IWorkload> CreateReshape(const ReshapeQueueDescriptor& /*descriptor*/,
230                                              const WorkloadInfo& /*info*/) const override
231     { return nullptr; }
232 
CreateResize(const ResizeQueueDescriptor &,const WorkloadInfo &) const233     std::unique_ptr<IWorkload> CreateResize(const ResizeQueueDescriptor& /*descriptor*/,
234                                             const WorkloadInfo& /*info*/) const override
235     { return nullptr; }
236 
CreateRsqrt(const RsqrtQueueDescriptor &,const WorkloadInfo &) const237     std::unique_ptr<IWorkload> CreateRsqrt(const RsqrtQueueDescriptor& /*descriptor*/,
238                                            const WorkloadInfo& /*info*/) const override
239     { return nullptr; }
240 
CreateSlice(const SliceQueueDescriptor &,const WorkloadInfo &) const241     std::unique_ptr<IWorkload> CreateSlice(const SliceQueueDescriptor& /*descriptor*/,
242                                            const WorkloadInfo& /*info*/) const override
243     { return nullptr; }
244 
CreateSoftmax(const SoftmaxQueueDescriptor &,const WorkloadInfo &) const245     std::unique_ptr<IWorkload> CreateSoftmax(const SoftmaxQueueDescriptor& /*descriptor*/,
246                                              const WorkloadInfo& /*info*/) const override
247     { return nullptr; }
248 
CreateSpaceToBatchNd(const SpaceToBatchNdQueueDescriptor &,const WorkloadInfo &) const249     std::unique_ptr<IWorkload> CreateSpaceToBatchNd(const SpaceToBatchNdQueueDescriptor& /*descriptor*/,
250                                                     const WorkloadInfo& /*info*/) const override
251     { return nullptr; }
252 
CreateSpaceToDepth(const SpaceToDepthQueueDescriptor &,const WorkloadInfo &) const253     std::unique_ptr<IWorkload> CreateSpaceToDepth(const SpaceToDepthQueueDescriptor& /*descriptor*/,
254                                                   const WorkloadInfo& /*info*/) const override
255     { return nullptr; }
256 
CreateSubtraction(const SubtractionQueueDescriptor &,const WorkloadInfo &) const257     std::unique_ptr<IWorkload> CreateSubtraction(const SubtractionQueueDescriptor& /*descriptor*/,
258                                                  const WorkloadInfo& /*info*/) const override
259     { return nullptr; }
260 
CreateSplitter(const SplitterQueueDescriptor &,const WorkloadInfo &) const261     std::unique_ptr<IWorkload> CreateSplitter(const SplitterQueueDescriptor& /*descriptor*/,
262                                               const WorkloadInfo& /*info*/) const override
263     { return nullptr; }
264 
CreateStack(const StackQueueDescriptor &,const WorkloadInfo &) const265     std::unique_ptr<IWorkload> CreateStack(const StackQueueDescriptor& /*descriptor*/,
266                                            const WorkloadInfo& /*info*/) const override
267     { return nullptr; }
268 
CreateStridedSlice(const StridedSliceQueueDescriptor &,const WorkloadInfo &) const269     std::unique_ptr<IWorkload> CreateStridedSlice(const StridedSliceQueueDescriptor& /*descriptor*/,
270                                                   const WorkloadInfo& /*info*/) const override
271     { return nullptr; }
272 
CreateSwitch(const SwitchQueueDescriptor &,const WorkloadInfo &) const273     std::unique_ptr<IWorkload> CreateSwitch(const SwitchQueueDescriptor& /*descriptor*/,
274                                             const WorkloadInfo& /*info*/) const override
275     { return nullptr; }
276 
CreateTranspose(const TransposeQueueDescriptor &,const WorkloadInfo &) const277     std::unique_ptr<IWorkload> CreateTranspose(const TransposeQueueDescriptor& /*descriptor*/,
278                                                const WorkloadInfo& /*info*/) const override
279     { return nullptr; }
280 
CreateTransposeConvolution2d(const TransposeConvolution2dQueueDescriptor &,const WorkloadInfo &) const281     std::unique_ptr<IWorkload> CreateTransposeConvolution2d(const TransposeConvolution2dQueueDescriptor& /*descriptor*/,
282                                                             const WorkloadInfo& /*info*/) const override
283     { return nullptr; }
284 };
285 
286 } //namespace armnn