ArmNN
 20.11
LayerSupportBase.cpp
Go to the documentation of this file.
1 //
2 // Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 
6 #include <armnn/Deprecated.hpp>
7 #include <armnn/Descriptors.hpp>
8 #include <armnn/Exceptions.hpp>
9 #include <armnn/Types.hpp>
10 
12 
14 
15 namespace
16 {
17 
18 bool DefaultLayerSupport(const char* func,
19  const char* file,
20  unsigned int line,
21  armnn::Optional<std::string&> reasonIfUnsupported)
22 {
23  // NOTE: We only need to return the reason if the optional parameter is not empty
24  if (reasonIfUnsupported)
25  {
26  std::stringstream message;
27  message << func << " is not implemented [" << file << ":" << line << "]";
28 
29  reasonIfUnsupported.value() = message.str();
30  }
31 
32  return false;
33 }
34 
35 } // anonymous namespace
36 
37 namespace armnn
38 {
39 
41  const TensorInfo&, // output
42  Optional<std::string &> reasonIfUnsupported) const
43 {
44  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
45 }
46 
48  const TensorInfo&, //output
49  const ActivationDescriptor&, // descriptor
50  Optional<std::string&> reasonIfUnsupported) const
51 {
52  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
53 }
54 
56  const TensorInfo&, // input1
57  const TensorInfo&, // output
58  Optional<std::string&> reasonIfUnsupported) const
59 {
60  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
61 }
62 
64  const armnn::TensorInfo&, // output
65  const armnn::ArgMinMaxDescriptor&, // descriptor
66  armnn::Optional<std::string &> reasonIfUnsupported) const
67 {
68  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
69 }
70 
72  const TensorInfo&, // output
73  const TensorInfo&, //mean
74  const TensorInfo&, //var
75  const TensorInfo&, //beta
76  const TensorInfo&, //gamma
77  const BatchNormalizationDescriptor&, // descriptor
78  Optional<std::string&> reasonIfUnsupported) const
79 {
80  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
81 }
82 
84  const TensorInfo&, // output
85  const BatchToSpaceNdDescriptor&, //descriptor
86  Optional<std::string&> reasonIfUnsupported) const
87 {
88  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
89 }
90 
92  const TensorInfo&, // input1
93  const TensorInfo&, // output
94  const ComparisonDescriptor&, // descriptor
95  Optional<std::string&> reasonIfUnsupported) const
96 {
97  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
98 }
99 
100 bool LayerSupportBase::IsConcatSupported(const std::vector<const TensorInfo*>, // inputs
101  const TensorInfo&, // output
102  const OriginsDescriptor&, // descriptor
103  Optional<std::string&> reasonIfUnsupported) const
104 {
105  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
106 }
107 
109  Optional<std::string&> reasonIfUnsupported) const
110 {
111  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
112 }
113 
115  const TensorInfo&, // output
116  Optional<std::string&> reasonIfUnsupported) const
117 {
118  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
119 }
120 
122  const TensorInfo&, // output
123  Optional<std::string&> reasonIfUnsupported) const
124 {
125  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
126 }
127 
129  const TensorInfo&, // output
130  Optional<std::string&> reasonIfUnsupported) const
131 {
132  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
133 }
134 
135 
137  const TensorInfo&, // output
138  Optional<std::string&> reasonIfUnsupported) const
139 {
140  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
141 }
142 
144  const TensorInfo&, // output
145  const Convolution2dDescriptor&, // descriptor
146  const TensorInfo&, // weights
147  const Optional<TensorInfo>&, // biases
148  Optional<std::string&> reasonIfUnsupported) const
149 {
150  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
151 }
152 
154  const TensorInfo&, // output
155  Optional<std::string&> reasonIfUnsupported) const
156 {
157  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
158 }
159 
161  const TensorInfo&, // output
162  const DepthToSpaceDescriptor&, // descriptor
163  Optional<std::string&> reasonIfUnsupported) const
164 {
165  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
166 }
167 
169  const TensorInfo&, //output
170  const DepthwiseConvolution2dDescriptor&, // descriptor
171  const TensorInfo&, // weights
172  const Optional<TensorInfo>&, // biases
173  Optional<std::string&> reasonIfUnsupported) const
174 {
175  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
176 }
177 
179  const TensorInfo&, // output
180  Optional<std::string&> reasonIfUnsupported) const
181 {
182  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
183 }
184 
186  const TensorInfo&, // scores
187  const TensorInfo&, // anchors
188  const TensorInfo&, // detectionBoxes
189  const TensorInfo&, // detectionClasses
190  const TensorInfo&, // detectionScores
191  const TensorInfo&, // numDetections
192  const DetectionPostProcessDescriptor&, //descriptor
193  Optional<std::string&> reasonIfUnsupported) const
194 {
195  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
196 }
197 
199  const TensorInfo&, // output
200  const DepthwiseConvolution2dDescriptor&, // descriptor
201  const TensorInfo&,// weights
202  const Optional<TensorInfo>&, // biases
203  Optional<std::string&> reasonIfUnsupported) const
204 {
205  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
206 }
207 
209  const TensorInfo&, // input1
210  const TensorInfo&, // output
211  Optional<std::string&> reasonIfUnsupported) const
212 {
213  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
214 }
215 
217  const TensorInfo& output,
218  const ElementwiseUnaryDescriptor& descriptor,
219  Optional<std::string&> reasonIfUnsupported) const
220 {
221  if (descriptor.m_Operation == UnaryOperation::Abs)
222  {
224  return IsAbsSupported(input, output, reasonIfUnsupported);
226  }
227  else if (descriptor.m_Operation == UnaryOperation::Rsqrt)
228  {
230  return IsRsqrtSupported(input, output, reasonIfUnsupported);
232  }
233  return false;
234 }
235 
237  const armnn::TensorInfo&, // input1
238  const armnn::TensorInfo&, // output
239  armnn::Optional<std::string &> reasonIfUnsupported) const
240 {
241  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
242 }
243 
245  const FakeQuantizationDescriptor&, // descriptor
246  Optional<std::string&> reasonIfUnsupported) const
247 {
248  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
249 }
250 
252  const TensorInfo&, // output
253  const FillDescriptor&, // descriptor
254  Optional<std::string&> reasonIfUnsupported) const
255 {
256  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
257 }
258 
260  const TensorInfo&, // output
261  Optional<std::string&> reasonIfUnsupported) const
262 {
263  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
264 }
265 
267  const TensorInfo&, // output
268  const TensorInfo&, // weights
269  const TensorInfo&, // biases
270  const FullyConnectedDescriptor&, // descriptor
271  Optional<std::string&> reasonIfUnsupported) const
272 {
273  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
274 }
275 
277  const armnn::TensorInfo&, // input1
278  const armnn::TensorInfo&, // output
279  armnn::Optional<std::string&> reasonIfUnsupported) const
280 {
281  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
282 }
283 
285  const armnn::TensorInfo&, // input1
286  const armnn::TensorInfo&, // output
287  const GatherDescriptor&, // descriptor
288  armnn::Optional<std::string&> reasonIfUnsupported) const
289 {
290  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
291 }
292 
294  const TensorInfo&, // input1
295  const TensorInfo&, // output
296  Optional<std::string&> reasonIfUnsupported) const
297 {
298  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
299 }
300 
302  Optional<std::string&> reasonIfUnsupported) const
303 {
304  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
305 }
306 
308  const TensorInfo&, // output
309  const InstanceNormalizationDescriptor&, // descriptor
310  Optional<std::string&> reasonIfUnsupported) const
311 {
312  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
313 }
314 
316  const TensorInfo&, // output
317  const L2NormalizationDescriptor&, // descriptor
318  Optional<std::string&> reasonIfUnsupported) const
319 {
320  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
321 }
322 
324  const TensorInfo&, // input1
325  const TensorInfo&, // output
326  const LogicalBinaryDescriptor&, // descriptor
327  Optional<std::string&> reasonIfUnsupported) const
328 {
329  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
330 }
331 
333  const TensorInfo&, // output
334  const ElementwiseUnaryDescriptor&, // descriptor
335  Optional<std::string&> reasonIfUnsupported) const
336 {
337  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
338 }
339 
341  const TensorInfo&, // output
342  const LogSoftmaxDescriptor&, // descriptor
343  Optional<std::string&> reasonIfUnsupported) const
344 {
345  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
346 }
347 
349  const TensorInfo&, // outputStateIn
350  const TensorInfo&, // cellStateIn
351  const TensorInfo&, // scratchBuffer
352  const TensorInfo&, // outputStateOut
353  const TensorInfo&, // cellStateOut
354  const TensorInfo&, // output
355  const LstmDescriptor&, // descriptor
356  const LstmInputParamsInfo&, // paramsInfo
357  Optional<std::string&> reasonIfUnsupported) const
358 {
359  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
360 }
361 
363  const TensorInfo&, // input1
364  const TensorInfo&, // output
365  Optional<std::string&> reasonIfUnsupported) const
366 {
367  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
368 }
369 
371  const TensorInfo&, // output
372  const MeanDescriptor&, // descriptor
373  Optional<std::string&> reasonIfUnsupported) const
374 {
375  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
376 }
377 
379  const armnn::TensorInfo&, // output
380  armnn::Optional<std::string &> ) const // reasonIfUnsupported
381 {
382  return true;
383 }
384 
386  const armnn::TensorInfo&, // output
387  armnn::Optional<std::string &> ) const // reasonIfUnsupported
388 {
389  return true;
390 }
391 
393  const TensorInfo&, // input1
394  const TensorInfo&, // output
395  Optional<std::string&> reasonIfUnsupported) const
396 {
397  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
398 }
399 
400 bool LayerSupportBase::IsMergerSupported(const std::vector<const TensorInfo*> inputs,
401  const TensorInfo& output,
402  const OriginsDescriptor& descriptor,
403  Optional<std::string&> reasonIfUnsupported) const
404 {
405  return IsConcatSupported(inputs, output, descriptor, reasonIfUnsupported);
406 }
407 
409  const TensorInfo&, // input1
410  const TensorInfo&, // output
411  Optional<std::string&> reasonIfUnsupported) const
412 {
413  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
414 }
415 
417  const TensorInfo&, // input1
418  const TensorInfo&, // output
419  Optional<std::string&> reasonIfUnsupported) const
420 {
421  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
422 }
423 
425  const TensorInfo&, // output
426  const NormalizationDescriptor&, // descriptor
427  Optional<std::string&> reasonIfUnsupported) const
428 {
429  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
430 }
431 
433  Optional<std::string&> reasonIfUnsupported) const
434 {
435  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
436 }
437 
439  const TensorInfo&, // output
440  const PadDescriptor&, // descriptor
441  Optional<std::string&> reasonIfUnsupported) const
442 {
443  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
444 }
445 
447  const TensorInfo&, // output
448  const PermuteDescriptor&, // descriptor
449  Optional<std::string&> reasonIfUnsupported) const
450 {
451  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
452 }
453 
455  const TensorInfo&, // output
456  const Pooling2dDescriptor&, // descriptor
457  Optional<std::string&> reasonIfUnsupported) const
458 {
459  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
460 }
461 
463  const PreCompiledDescriptor&, // descriptor
464  Optional<std::string&> reasonIfUnsupported) const
465 {
466  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
467 }
468 
470  const TensorInfo&, // alpha
471  const TensorInfo&, // output
472  Optional<std::string &> reasonIfUnsupported) const
473 {
474  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
475 }
476 
478  const armnn::TensorInfo&, // output
479  armnn::Optional<std::string&> reasonIfUnsupported) const
480 {
481  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
482 }
483 
485  const TensorInfo&, // previousOutputIn
486  const TensorInfo&, // previousCellStateIn
487  const TensorInfo&, // outputStateOut
488  const TensorInfo&, // cellStateOut
489  const TensorInfo&, // output
490  const QLstmDescriptor&, // descriptor
491  const LstmInputParamsInfo&, // paramsInfo
492  Optional<std::string&> reasonIfUnsupported) const
493 {
494  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
495 }
496 
498  const TensorInfo&, // previousCellStateIn
499  const TensorInfo&, // previousOutputIn
500  const TensorInfo&, // cellStateOut
501  const TensorInfo&, // output
502  const QuantizedLstmInputParamsInfo&, // paramsInfo
503  Optional<std::string&> reasonIfUnsupported) const
504 {
505  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
506 }
507 
509  const TensorInfo&, // output
510  Optional<std::string&> reasonIfUnsupported) const
511 {
512  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
513 }
514 
516  const TensorInfo&, // output
517  const ReshapeDescriptor&, // descriptor
518  Optional<std::string&> reasonIfUnsupported) const
519 {
520  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
521 }
522 
524  const TensorInfo&, // output
525  Optional<std::string&> reasonIfUnsupported) const
526 {
527  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
528 }
529 
531  const TensorInfo&, // output
532  const ResizeDescriptor&, // descriptor
533  Optional<std::string&> reasonIfUnsupported) const
534 {
535  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
536 }
537 
539  const TensorInfo&, // output
540  Optional<std::string &> reasonIfUnsupported) const
541 {
542  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
543 }
544 
546  const TensorInfo&, // output
547  const SliceDescriptor&, // descriptor
548  Optional<std::string&> reasonIfUnsupported) const
549 {
550  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
551 }
552 
554  const TensorInfo&, // output
555  const SoftmaxDescriptor&, // descriptor
556  Optional<std::string&> reasonIfUnsupported) const
557 {
558  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
559 }
560 /**/
562  const TensorInfo&, // output
563  const SpaceToBatchNdDescriptor&, // descriptor
564  Optional<std::string&> reasonIfUnsupported) const
565 {
566  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
567 }
568 
570  const TensorInfo&, // output
571  const SpaceToDepthDescriptor&, // descriptor
572  Optional<std::string&> reasonIfUnsupported) const
573 {
574  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
575 }
576 
578  const ViewsDescriptor&, // descriptor
579  Optional<std::string&> reasonIfUnsupported) const
580 {
581  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
582 }
583 
585  const std::vector<std::reference_wrapper<TensorInfo>>&, // outputs
586  const ViewsDescriptor&, // descriptor
587  Optional<std::string&> reasonIfUnsupported) const
588 {
589  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
590 }
591 
592 bool LayerSupportBase::IsStackSupported(const std::vector<const TensorInfo*>&, // inputs
593  const TensorInfo&, // output
594  const StackDescriptor&, // descriptor
595  Optional<std::string&> reasonIfUnsupported) const
596 {
597  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
598 }
599 
600 bool LayerSupportBase::IsStandInSupported(const std::vector<const TensorInfo*>&, // inputs
601  const std::vector<const TensorInfo*>&, // outputs
602  const StandInDescriptor&, // descriptor
603  Optional<std::string&> reasonIfUnsupported) const
604 {
605  if (reasonIfUnsupported)
606  {
607  std::stringstream message;
608  message << "StandIn layer is not executable via backends";
609 
610  reasonIfUnsupported.value() = message.str();
611  }
612 
613  return false;
614 }
615 
617  const TensorInfo&, // output
618  const StridedSliceDescriptor&, // descriptor
619  Optional<std::string&> reasonIfUnsupported) const
620 {
621  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
622 }
623 
625  const TensorInfo&, // input1
626  const TensorInfo&, // output
627  Optional<std::string&> reasonIfUnsupported) const
628 {
629  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
630 }
631 
633  const TensorInfo&, // input1
634  const TensorInfo&, // output0
635  const TensorInfo&, // output1
636  Optional<std::string&> reasonIfUnsupported) const
637 {
638  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
639 }
640 
642  const TensorInfo&, // output
643  const TransposeConvolution2dDescriptor&, // descriptor
644  const TensorInfo&, // weights
645  const Optional<TensorInfo>&, // biases
646  Optional<std::string&> reasonIfUnsupported) const
647 {
648  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
649 }
650 
652  const TensorInfo&, // output
653  const TransposeDescriptor&, // descriptor
654  Optional<std::string&> reasonIfUnsupported) const
655 {
656  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
657 }
658 
659 } // namespace armnn
bool IsEqualSupported(const TensorInfo &input0, const TensorInfo &input1, const TensorInfo &output, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
bool IsInputSupported(const TensorInfo &input, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
UnaryOperation m_Operation
Specifies the elementwiseUnary operation to execute.
A ViewsDescriptor for the SplitterLayer.
bool IsQLstmSupported(const TensorInfo &input, const TensorInfo &previousOutputIn, const TensorInfo &previousCellStateIn, const TensorInfo &outputStateOut, const TensorInfo &cellStateOut, const TensorInfo &output, const QLstmDescriptor &descriptor, const LstmInputParamsInfo &paramsInfo, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
A TransposeConvolution2dDescriptor for the TransposeConvolution2dLayer.
bool IsPreluSupported(const TensorInfo &input, const TensorInfo &alpha, const TensorInfo &output, Optional< std::string &> reasonIfUnsupported) const override
A ReshapeDescriptor for the ReshapeLayer.
bool IsDetectionPostProcessSupported(const TensorInfo &boxEncodings, const TensorInfo &scores, const TensorInfo &anchors, const TensorInfo &detectionBoxes, const TensorInfo &detectionClasses, const TensorInfo &detectionScores, const TensorInfo &numDetections, const DetectionPostProcessDescriptor &descriptor, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
bool IsMemImportSupported(const TensorInfo &input, const TensorInfo &output, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
#define ARMNN_NO_DEPRECATE_WARN_BEGIN
Definition: Deprecated.hpp:33
bool IsLogSoftmaxSupported(const TensorInfo &input, const TensorInfo &output, const LogSoftmaxDescriptor &descriptor, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
A ComparisonDescriptor for the ComparisonLayer.
Definition: Descriptors.hpp:73
bool IsTransposeSupported(const TensorInfo &input, const TensorInfo &output, const TransposeDescriptor &descriptor, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
bool IsQuantizeSupported(const TensorInfo &input, const TensorInfo &output, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
bool IsMultiplicationSupported(const TensorInfo &input0, const TensorInfo &input1, const TensorInfo &output, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
bool IsQuantizedLstmSupported(const TensorInfo &input, const TensorInfo &previousCellStateIn, const TensorInfo &previousOutputIn, const TensorInfo &cellStateOut, const TensorInfo &output, const QuantizedLstmInputParamsInfo &paramsInfo, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
bool IsLogicalBinarySupported(const TensorInfo &input0, const TensorInfo &input1, const TensorInfo &output, const LogicalBinaryDescriptor &descriptor, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
A Convolution2dDescriptor for the Convolution2dLayer.
bool IsAdditionSupported(const TensorInfo &input0, const TensorInfo &input1, const TensorInfo &output, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
bool IsDebugSupported(const TensorInfo &input, const TensorInfo &output, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
bool IsRsqrtSupported(const TensorInfo &input, const TensorInfo &output, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
bool IsActivationSupported(const TensorInfo &input, const TensorInfo &output, const ActivationDescriptor &descriptor, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
bool IsMeanSupported(const TensorInfo &input, const TensorInfo &output, const MeanDescriptor &descriptor, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
bool IsArgMinMaxSupported(const TensorInfo &input, const TensorInfo &output, const ArgMinMaxDescriptor &descriptor, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
bool IsGatherSupported(const TensorInfo &input0, const TensorInfo &input1, const TensorInfo &output, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
A LogicalBinaryDescriptor for the LogicalBinaryLayer.
bool IsSpaceToBatchNdSupported(const TensorInfo &input, const TensorInfo &output, const SpaceToBatchNdDescriptor &descriptor, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
bool IsSoftmaxSupported(const TensorInfo &input, const TensorInfo &output, const SoftmaxDescriptor &descriptor, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
bool IsComparisonSupported(const TensorInfo &input0, const TensorInfo &input1, const TensorInfo &output, const ComparisonDescriptor &descriptor, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
Copyright (c) 2020 ARM Limited.
bool IsStandInSupported(const std::vector< const TensorInfo *> &inputs, const std::vector< const TensorInfo *> &outputs, const StandInDescriptor &descriptor, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
bool IsDepthwiseConvolutionSupported(const TensorInfo &input, const TensorInfo &output, const DepthwiseConvolution2dDescriptor &descriptor, const TensorInfo &weights, const Optional< TensorInfo > &biases, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
bool IsL2NormalizationSupported(const TensorInfo &input, const TensorInfo &output, const L2NormalizationDescriptor &descriptor, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
A SpaceToDepthDescriptor for the SpaceToDepthLayer.
bool IsSliceSupported(const TensorInfo &input, const TensorInfo &output, const SliceDescriptor &descriptor, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
bool IsFakeQuantizationSupported(const TensorInfo &input, const FakeQuantizationDescriptor &descriptor, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
A BatchToSpaceNdDescriptor for the BatchToSpaceNdLayer.
virtual bool IsFillSupported(const TensorInfo &input, const TensorInfo &output, const FillDescriptor &descriptor, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
bool IsPreCompiledSupported(const TensorInfo &input, const PreCompiledDescriptor &descriptor, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
bool IsStridedSliceSupported(const TensorInfo &input, const TensorInfo &output, const StridedSliceDescriptor &descriptor, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
A ResizeDescriptor for the ResizeLayer.
A StackDescriptor for the StackLayer.
A PadDescriptor for the PadLayer.
bool IsSwitchSupported(const TensorInfo &input0, const TensorInfo &input1, const TensorInfo &output0, const TensorInfo &output1, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
bool IsMergerSupported(const std::vector< const TensorInfo *> inputs, const TensorInfo &output, const OriginsDescriptor &descriptor, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
bool IsAbsSupported(const TensorInfo &input, const TensorInfo &output, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
bool IsBatchToSpaceNdSupported(const TensorInfo &input, const TensorInfo &output, const BatchToSpaceNdDescriptor &descriptor, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
bool IsDivisionSupported(const TensorInfo &input0, const TensorInfo &input1, const TensorInfo &output, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
An LstmDescriptor for the LstmLayer.
#define ARMNN_NO_DEPRECATE_WARN_END
Definition: Deprecated.hpp:34
A L2NormalizationDescriptor for the L2NormalizationLayer.
An ArgMinMaxDescriptor for ArgMinMaxLayer.
Definition: Descriptors.hpp:51
An OriginsDescriptor for the ConcatLayer.
bool IsPermuteSupported(const TensorInfo &input, const TensorInfo &output, const PermuteDescriptor &descriptor, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
A FullyConnectedDescriptor for the FullyConnectedLayer.
bool IsLogicalUnarySupported(const TensorInfo &input, const TensorInfo &output, const ElementwiseUnaryDescriptor &descriptor, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
A FakeQuantizationDescriptor for the FakeQuantizationLayer.
bool IsConvertFp32ToFp16Supported(const TensorInfo &input, const TensorInfo &output, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
bool IsElementwiseUnarySupported(const TensorInfo &input, const TensorInfo &output, const ElementwiseUnaryDescriptor &descriptor, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
bool IsConvertFp16ToFp32Supported(const TensorInfo &input, const TensorInfo &output, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
A GatherDescriptor for the GatherLayer.
A StandInDescriptor for the StandIn layer.
bool IsReshapeSupported(const TensorInfo &input, const TensorInfo &output, const ReshapeDescriptor &descriptor, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
A QLstmDescriptor for the QLstmLayer.
bool IsMergeSupported(const TensorInfo &input0, const TensorInfo &input1, const TensorInfo &output, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
bool IsStackSupported(const std::vector< const TensorInfo *> &inputs, const TensorInfo &output, const StackDescriptor &descriptor, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
bool IsSpaceToDepthSupported(const TensorInfo &input, const TensorInfo &output, const SpaceToDepthDescriptor &descriptor, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
An ActivationDescriptor for the ActivationLayer.
Definition: Descriptors.hpp:20
bool IsMemCopySupported(const TensorInfo &input, const TensorInfo &output, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
bool IsInstanceNormalizationSupported(const TensorInfo &input, const TensorInfo &output, const InstanceNormalizationDescriptor &descriptor, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
A SliceDescriptor for the SliceLayer.
bool IsRankSupported(const TensorInfo &input, const TensorInfo &output, Optional< std::string &> reasonIfUnsupported) const override
bool IsTransposeConvolution2dSupported(const TensorInfo &input, const TensorInfo &output, const TransposeConvolution2dDescriptor &descriptor, const TensorInfo &weights, const Optional< TensorInfo > &biases, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
A SpaceToBatchNdDescriptor for the SpaceToBatchNdLayer.
bool IsPadSupported(const TensorInfo &input, const TensorInfo &output, const PadDescriptor &descriptor, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
bool IsMinimumSupported(const TensorInfo &input0, const TensorInfo &input1, const TensorInfo &output, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
bool IsConvertBf16ToFp32Supported(const TensorInfo &input, const TensorInfo &output, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
bool IsSplitterSupported(const TensorInfo &input, const ViewsDescriptor &descriptor, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
A ElementwiseUnaryDescriptor for the ElementwiseUnaryLayer.
Definition: Descriptors.hpp:93
bool IsConvolution2dSupported(const TensorInfo &input, const TensorInfo &output, const Convolution2dDescriptor &descriptor, const TensorInfo &weights, const Optional< TensorInfo > &biases, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
bool IsSubtractionSupported(const TensorInfo &input0, const TensorInfo &input1, const TensorInfo &output, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
bool IsLstmSupported(const TensorInfo &input, const TensorInfo &outputStateIn, const TensorInfo &cellStateIn, const TensorInfo &scratchBuffer, const TensorInfo &outputStateOut, const TensorInfo &cellStateOut, const TensorInfo &output, const LstmDescriptor &descriptor, const LstmInputParamsInfo &paramsInfo, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
A MeanDescriptor for the MeanLayer.
bool IsFloorSupported(const TensorInfo &input, const TensorInfo &output, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
bool IsConstantSupported(const TensorInfo &output, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
bool IsNormalizationSupported(const TensorInfo &input, const TensorInfo &output, const NormalizationDescriptor &descriptor, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
A TransposeDescriptor for the TransposeLayer.
A StridedSliceDescriptor for the StridedSliceLayer.
bool IsFullyConnectedSupported(const TensorInfo &input, const TensorInfo &output, const TensorInfo &weights, const TensorInfo &biases, const FullyConnectedDescriptor &descriptor, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
bool IsOutputSupported(const TensorInfo &output, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
bool IsResizeSupported(const TensorInfo &input, const TensorInfo &output, const ResizeDescriptor &descriptor, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
bool IsPooling2dSupported(const TensorInfo &input, const TensorInfo &output, const Pooling2dDescriptor &descriptor, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
A PreCompiledDescriptor for the PreCompiledLayer.
A Pooling2dDescriptor for the Pooling2dLayer.
A NormalizationDescriptor for the NormalizationLayer.
bool IsConvertFp32ToBf16Supported(const TensorInfo &input, const TensorInfo &output, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
bool IsMaximumSupported(const TensorInfo &input0, const TensorInfo &input1, const TensorInfo &output, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
An InstanceNormalizationDescriptor for InstanceNormalizationLayer.
bool IsDepthToSpaceSupported(const TensorInfo &input, const TensorInfo &output, const DepthToSpaceDescriptor &descriptor, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
A SoftmaxDescriptor for the SoftmaxLayer.
bool IsConcatSupported(const std::vector< const TensorInfo *> inputs, const TensorInfo &output, const OriginsDescriptor &descriptor, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
bool IsBatchNormalizationSupported(const TensorInfo &input, const TensorInfo &output, const TensorInfo &mean, const TensorInfo &var, const TensorInfo &beta, const TensorInfo &gamma, const BatchNormalizationDescriptor &descriptor, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
bool IsResizeBilinearSupported(const TensorInfo &input, const TensorInfo &output, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
bool IsGreaterSupported(const TensorInfo &input0, const TensorInfo &input1, const TensorInfo &output, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
A DepthwiseConvolution2dDescriptor for the DepthwiseConvolution2dLayer.
A FillDescriptor for the FillLayer.
A BatchNormalizationDescriptor for the BatchNormalizationLayer.
bool IsDequantizeSupported(const TensorInfo &input, const TensorInfo &output, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
A PermuteDescriptor for the PermuteLayer.
bool IsDilatedDepthwiseConvolutionSupported(const TensorInfo &input, const TensorInfo &output, const DepthwiseConvolution2dDescriptor &descriptor, const TensorInfo &weights, const Optional< TensorInfo > &biases, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override