ArmNN
 21.08
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&, //output
93  Optional<std::string &> reasonIfUnsupported) const
94 {
95  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
96 }
97 
99  const TensorInfo&, // input1
100  const TensorInfo&, // output
101  const ComparisonDescriptor&, // descriptor
102  Optional<std::string&> reasonIfUnsupported) const
103 {
104  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
105 }
106 
107 bool LayerSupportBase::IsConcatSupported(const std::vector<const TensorInfo*>, // inputs
108  const TensorInfo&, // output
109  const OriginsDescriptor&, // descriptor
110  Optional<std::string&> reasonIfUnsupported) const
111 {
112  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
113 }
114 
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 
136  const TensorInfo&, // output
137  Optional<std::string&> reasonIfUnsupported) const
138 {
139  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
140 }
141 
142 
144  const TensorInfo&, // output
145  Optional<std::string&> reasonIfUnsupported) const
146 {
147  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
148 }
149 
151  const TensorInfo&, // output
152  const Convolution2dDescriptor&, // descriptor
153  const TensorInfo&, // weights
154  const Optional<TensorInfo>&, // biases
155  Optional<std::string&> reasonIfUnsupported) const
156 {
157  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
158 }
159 
161  const TensorInfo&, // output
162  Optional<std::string&> reasonIfUnsupported) const
163 {
164  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
165 }
166 
168  const TensorInfo&, // output
169  const DepthToSpaceDescriptor&, // descriptor
170  Optional<std::string&> reasonIfUnsupported) const
171 {
172  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
173 }
174 
176  const TensorInfo&, //output
177  const DepthwiseConvolution2dDescriptor&, // descriptor
178  const TensorInfo&, // weights
179  const Optional<TensorInfo>&, // biases
180  Optional<std::string&> reasonIfUnsupported) const
181 {
182  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
183 }
184 
186  const TensorInfo&, // output
187  Optional<std::string&> reasonIfUnsupported) const
188 {
189  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
190 }
191 
193  const TensorInfo&, // scores
194  const TensorInfo&, // anchors
195  const TensorInfo&, // detectionBoxes
196  const TensorInfo&, // detectionClasses
197  const TensorInfo&, // detectionScores
198  const TensorInfo&, // numDetections
199  const DetectionPostProcessDescriptor&, //descriptor
200  Optional<std::string&> reasonIfUnsupported) const
201 {
202  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
203 }
204 
206  const TensorInfo&, // output
207  const DepthwiseConvolution2dDescriptor&, // descriptor
208  const TensorInfo&,// weights
209  const Optional<TensorInfo>&, // biases
210  Optional<std::string&> reasonIfUnsupported) const
211 {
212  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
213 }
214 
216  const TensorInfo&, // input1
217  const TensorInfo&, // output
218  Optional<std::string&> reasonIfUnsupported) const
219 {
220  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
221 }
222 
224  const TensorInfo& output,
225  const ElementwiseUnaryDescriptor& descriptor,
226  Optional<std::string&> reasonIfUnsupported) const
227 {
228  if (descriptor.m_Operation == UnaryOperation::Abs)
229  {
231  return IsAbsSupported(input, output, reasonIfUnsupported);
233  }
234  else if (descriptor.m_Operation == UnaryOperation::Rsqrt)
235  {
237  return IsRsqrtSupported(input, output, reasonIfUnsupported);
239  }
240  return false;
241 }
242 
244  const armnn::TensorInfo&, // input1
245  const armnn::TensorInfo&, // output
246  armnn::Optional<std::string &> reasonIfUnsupported) const
247 {
248  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
249 }
250 
252  const FakeQuantizationDescriptor&, // descriptor
253  Optional<std::string&> reasonIfUnsupported) const
254 {
255  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
256 }
257 
259  const TensorInfo&, // output
260  const FillDescriptor&, // descriptor
261  Optional<std::string&> reasonIfUnsupported) const
262 {
263  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
264 }
265 
267  const TensorInfo&, // output
268  Optional<std::string&> reasonIfUnsupported) const
269 {
270  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
271 }
272 
274  const TensorInfo&, // output
275  const TensorInfo&, // weights
276  const TensorInfo&, // biases
277  const FullyConnectedDescriptor&, // descriptor
278  Optional<std::string&> reasonIfUnsupported) const
279 {
280  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
281 }
282 
284  const armnn::TensorInfo&, // input1
285  const armnn::TensorInfo&, // output
286  armnn::Optional<std::string&> reasonIfUnsupported) const
287 {
288  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
289 }
290 
292  const armnn::TensorInfo&, // input1
293  const armnn::TensorInfo&, // output
294  const GatherDescriptor&, // descriptor
295  armnn::Optional<std::string&> reasonIfUnsupported) const
296 {
297  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
298 }
299 
301  const TensorInfo&, // input1
302  const TensorInfo&, // output
303  Optional<std::string&> reasonIfUnsupported) const
304 {
305  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
306 }
307 
309  Optional<std::string&> reasonIfUnsupported) const
310 {
311  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
312 }
313 
315  const TensorInfo&, // output
316  const InstanceNormalizationDescriptor&, // descriptor
317  Optional<std::string&> reasonIfUnsupported) const
318 {
319  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
320 }
321 
323  const TensorInfo&, // output
324  const L2NormalizationDescriptor&, // descriptor
325  Optional<std::string&> reasonIfUnsupported) const
326 {
327  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
328 }
329 
331  const TensorInfo&, // input1
332  const TensorInfo&, // output
333  const LogicalBinaryDescriptor&, // descriptor
334  Optional<std::string&> reasonIfUnsupported) const
335 {
336  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
337 }
338 
340  const TensorInfo&, // output
341  const ElementwiseUnaryDescriptor&, // descriptor
342  Optional<std::string&> reasonIfUnsupported) const
343 {
344  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
345 }
346 
348  const TensorInfo&, // output
349  const LogSoftmaxDescriptor&, // descriptor
350  Optional<std::string&> reasonIfUnsupported) const
351 {
352  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
353 }
354 
356  const TensorInfo&, // outputStateIn
357  const TensorInfo&, // cellStateIn
358  const TensorInfo&, // scratchBuffer
359  const TensorInfo&, // outputStateOut
360  const TensorInfo&, // cellStateOut
361  const TensorInfo&, // output
362  const LstmDescriptor&, // descriptor
363  const LstmInputParamsInfo&, // paramsInfo
364  Optional<std::string&> reasonIfUnsupported) const
365 {
366  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
367 }
368 
370  const TensorInfo&, // input1
371  const TensorInfo&, // output
372  Optional<std::string&> reasonIfUnsupported) const
373 {
374  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
375 }
376 
378  const TensorInfo&, // output
379  const MeanDescriptor&, // descriptor
380  Optional<std::string&> reasonIfUnsupported) const
381 {
382  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
383 }
384 
386  const armnn::TensorInfo&, // output
387  armnn::Optional<std::string &> ) const // reasonIfUnsupported
388 {
389  return true;
390 }
391 
393  const armnn::TensorInfo&, // output
394  armnn::Optional<std::string &> ) const // reasonIfUnsupported
395 {
396  return true;
397 }
398 
400  const TensorInfo&, // input1
401  const TensorInfo&, // output
402  Optional<std::string&> reasonIfUnsupported) const
403 {
404  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
405 }
406 
407 bool LayerSupportBase::IsMergerSupported(const std::vector<const TensorInfo*> inputs,
408  const TensorInfo& output,
409  const OriginsDescriptor& descriptor,
410  Optional<std::string&> reasonIfUnsupported) const
411 {
412  return IsConcatSupported(inputs, output, descriptor, reasonIfUnsupported);
413 }
414 
416  const TensorInfo&, // input1
417  const TensorInfo&, // output
418  Optional<std::string&> reasonIfUnsupported) const
419 {
420  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
421 }
422 
424  const TensorInfo&, // input1
425  const TensorInfo&, // output
426  Optional<std::string&> reasonIfUnsupported) const
427 {
428  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
429 }
430 
432  const TensorInfo&, // output
433  const NormalizationDescriptor&, // descriptor
434  Optional<std::string&> reasonIfUnsupported) const
435 {
436  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
437 }
438 
440  Optional<std::string&> reasonIfUnsupported) const
441 {
442  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
443 }
444 
446  const TensorInfo&, // output
447  const PadDescriptor&, // descriptor
448  Optional<std::string&> reasonIfUnsupported) const
449 {
450  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
451 }
452 
454  const TensorInfo&, // output
455  const PermuteDescriptor&, // descriptor
456  Optional<std::string&> reasonIfUnsupported) const
457 {
458  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
459 }
460 
462  const TensorInfo&, // output
463  const Pooling2dDescriptor&, // descriptor
464  Optional<std::string&> reasonIfUnsupported) const
465 {
466  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
467 }
468 
470  const PreCompiledDescriptor&, // descriptor
471  Optional<std::string&> reasonIfUnsupported) const
472 {
473  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
474 }
475 
477  const TensorInfo&, // alpha
478  const TensorInfo&, // output
479  Optional<std::string &> reasonIfUnsupported) const
480 {
481  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
482 }
483 
485  const armnn::TensorInfo&, // output
486  armnn::Optional<std::string&> reasonIfUnsupported) const
487 {
488  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
489 }
490 
492  const TensorInfo&, // previousOutputIn
493  const TensorInfo&, // previousCellStateIn
494  const TensorInfo&, // outputStateOut
495  const TensorInfo&, // cellStateOut
496  const TensorInfo&, // output
497  const QLstmDescriptor&, // descriptor
498  const LstmInputParamsInfo&, // paramsInfo
499  Optional<std::string&> reasonIfUnsupported) const
500 {
501  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
502 }
503 
505  const TensorInfo&, // previousCellStateIn
506  const TensorInfo&, // previousOutputIn
507  const TensorInfo&, // cellStateOut
508  const TensorInfo&, // output
509  const QuantizedLstmInputParamsInfo&, // paramsInfo
510  Optional<std::string&> reasonIfUnsupported) const
511 {
512  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
513 }
514 
516  const TensorInfo&, // output
517  Optional<std::string&> reasonIfUnsupported) const
518 {
519  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
520 }
521 
523  const TensorInfo& /*output*/,
524  const ReduceDescriptor& /*descriptor*/,
525  Optional<std::string&> reasonIfUnsupported) const
526 {
527  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
528 }
529 
531  const TensorInfo&, // output
532  const ReshapeDescriptor&, // 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 ResizeDescriptor&, // descriptor
548  Optional<std::string&> reasonIfUnsupported) const
549 {
550  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
551 }
552 
554  const TensorInfo&, // output
555  Optional<std::string &> reasonIfUnsupported) const
556 {
557  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
558 }
559 
561  const TensorInfo&, // output
562  Optional<std::string&> reasonIfUnsupported) const
563 {
564  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
565 }
566 
568  const TensorInfo&, // output
569  const SliceDescriptor&, // descriptor
570  Optional<std::string&> reasonIfUnsupported) const
571 {
572  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
573 }
574 
576  const TensorInfo&, // output
577  const SoftmaxDescriptor&, // descriptor
578  Optional<std::string&> reasonIfUnsupported) const
579 {
580  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
581 }
582 /**/
584  const TensorInfo&, // output
585  const SpaceToBatchNdDescriptor&, // descriptor
586  Optional<std::string&> reasonIfUnsupported) const
587 {
588  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
589 }
590 
592  const TensorInfo&, // output
593  const SpaceToDepthDescriptor&, // descriptor
594  Optional<std::string&> reasonIfUnsupported) const
595 {
596  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
597 }
598 
600  const ViewsDescriptor&, // descriptor
601  Optional<std::string&> reasonIfUnsupported) const
602 {
603  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
604 }
605 
607  const std::vector<std::reference_wrapper<TensorInfo>>&, // outputs
608  const ViewsDescriptor&, // descriptor
609  Optional<std::string&> reasonIfUnsupported) const
610 {
611  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
612 }
613 
614 bool LayerSupportBase::IsStackSupported(const std::vector<const TensorInfo*>&, // inputs
615  const TensorInfo&, // output
616  const StackDescriptor&, // descriptor
617  Optional<std::string&> reasonIfUnsupported) const
618 {
619  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
620 }
621 
622 bool LayerSupportBase::IsStandInSupported(const std::vector<const TensorInfo*>&, // inputs
623  const std::vector<const TensorInfo*>&, // outputs
624  const StandInDescriptor&, // descriptor
625  Optional<std::string&> reasonIfUnsupported) const
626 {
627  if (reasonIfUnsupported)
628  {
629  std::stringstream message;
630  message << "StandIn layer is not executable via backends";
631 
632  reasonIfUnsupported.value() = message.str();
633  }
634 
635  return false;
636 }
637 
639  const TensorInfo&, // output
640  const StridedSliceDescriptor&, // descriptor
641  Optional<std::string&> reasonIfUnsupported) const
642 {
643  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
644 }
645 
647  const TensorInfo&, // input1
648  const TensorInfo&, // output
649  Optional<std::string&> reasonIfUnsupported) const
650 {
651  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
652 }
653 
655  const TensorInfo&, // input1
656  const TensorInfo&, // output0
657  const TensorInfo&, // output1
658  Optional<std::string&> reasonIfUnsupported) const
659 {
660  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
661 }
662 
664  const TensorInfo&, // output
665  const TransposeConvolution2dDescriptor&, // descriptor
666  const TensorInfo&, // weights
667  const Optional<TensorInfo>&, // biases
668  Optional<std::string&> reasonIfUnsupported) const
669 {
670  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
671 }
672 
674  const TensorInfo&, // output
675  const TransposeDescriptor&, // descriptor
676  Optional<std::string&> reasonIfUnsupported) const
677 {
678  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
679 }
680 
682  const TensorInfo&, // outputStateIn
683  const TensorInfo&, // cellStateIn
684  const TensorInfo&, // output
685  const Optional<TensorInfo>&, // hiddenStateOut
686  const Optional<TensorInfo>&, // cellStateOut
687  const LstmDescriptor&, // descriptor
688  const LstmInputParamsInfo&, // paramsInfo
689  Optional<std::string&> reasonIfUnsupported) const
690 {
691  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
692 }
693 
694 } // 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:78
bool IsTransposeSupported(const TensorInfo &input, const TensorInfo &output, const TransposeDescriptor &descriptor, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
bool IsCastSupported(const TensorInfo &input, const TensorInfo &output, 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 IsReduceSupported(const TensorInfo &input, const TensorInfo &output, const ReduceDescriptor &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
bool IsUnidirectionalSequenceLstmSupported(const TensorInfo &input, const TensorInfo &outputStateIn, const TensorInfo &cellStateIn, const TensorInfo &output, const Optional< TensorInfo > &hiddenStateOutput, const Optional< TensorInfo > &cellStateOutput, const LstmDescriptor &descriptor, const LstmInputParamsInfo &paramsInfo, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
bool IsShapeSupported(const TensorInfo &input, 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) 2021 ARM Limited and Contributors.
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:56
An OriginsDescriptor for the ConcatLayer.
A ReduceDescriptor for the REDUCE operators.
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:25
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:98
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