ArmNN
 21.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  const ActivationDescriptor&, // descriptor
43  Optional<std::string&> reasonIfUnsupported) const
44 {
45  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
46 }
47 
49  const TensorInfo&, // input1
50  const TensorInfo&, // output
51  Optional<std::string&> reasonIfUnsupported) const
52 {
53  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
54 }
55 
57  const armnn::TensorInfo&, // output
58  const armnn::ArgMinMaxDescriptor&, // descriptor
59  armnn::Optional<std::string &> reasonIfUnsupported) const
60 {
61  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
62 }
63 
65  const TensorInfo&, // output
66  const TensorInfo&, //mean
67  const TensorInfo&, //var
68  const TensorInfo&, //beta
69  const TensorInfo&, //gamma
70  const BatchNormalizationDescriptor&, // descriptor
71  Optional<std::string&> reasonIfUnsupported) const
72 {
73  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
74 }
75 
77  const TensorInfo&, // output
78  const BatchToSpaceNdDescriptor&, //descriptor
79  Optional<std::string&> reasonIfUnsupported) const
80 {
81  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
82 }
83 
85  const TensorInfo&, //output
86  Optional<std::string &> reasonIfUnsupported) const
87 {
88  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
89 }
90 
92  const TensorInfo&, //output
93  const ChannelShuffleDescriptor&, //descriptor
94  Optional<std::string &> reasonIfUnsupported) const
95 {
96  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
97 }
98 
100  const TensorInfo&, // input1
101  const TensorInfo&, // output
102  const ComparisonDescriptor&, // descriptor
103  Optional<std::string&> reasonIfUnsupported) const
104 {
105  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
106 }
107 
108 bool LayerSupportBase::IsConcatSupported(const std::vector<const TensorInfo*>, // inputs
109  const TensorInfo&, // output
110  const OriginsDescriptor&, // descriptor
111  Optional<std::string&> reasonIfUnsupported) const
112 {
113  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
114 }
115 
117  Optional<std::string&> reasonIfUnsupported) const
118 {
119  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
120 }
121 
123  const TensorInfo&, // output
124  Optional<std::string&> reasonIfUnsupported) const
125 {
126  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
127 }
128 
130  const TensorInfo&, // output
131  Optional<std::string&> reasonIfUnsupported) const
132 {
133  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
134 }
135 
137  const TensorInfo&, // output
138  Optional<std::string&> reasonIfUnsupported) const
139 {
140  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
141 }
142 
143 
145  const TensorInfo&, // output
146  Optional<std::string&> reasonIfUnsupported) const
147 {
148  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
149 }
150 
152  const TensorInfo&, // output
153  const Convolution2dDescriptor&, // descriptor
154  const TensorInfo&, // weights
155  const Optional<TensorInfo>&, // biases
156  Optional<std::string&> reasonIfUnsupported) const
157 {
158  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
159 }
160 
162  const TensorInfo&, // output
163  const Convolution3dDescriptor&, // descriptor
164  const TensorInfo&, // weights
165  const Optional<TensorInfo>&, // biases
166  Optional<std::string&> reasonIfUnsupported) const
167 {
168  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
169 }
170 
172  const TensorInfo&, // output
173  Optional<std::string&> reasonIfUnsupported) const
174 {
175  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
176 }
177 
179  const TensorInfo&, // output
180  const DepthToSpaceDescriptor&, // descriptor
181  Optional<std::string&> reasonIfUnsupported) const
182 {
183  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
184 }
185 
187  const TensorInfo&, //output
188  const DepthwiseConvolution2dDescriptor&, // descriptor
189  const TensorInfo&, // weights
190  const Optional<TensorInfo>&, // biases
191  Optional<std::string&> reasonIfUnsupported) const
192 {
193  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
194 }
195 
197  const TensorInfo&, // output
198  Optional<std::string&> reasonIfUnsupported) const
199 {
200  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
201 }
202 
204  const TensorInfo&, // scores
205  const TensorInfo&, // anchors
206  const TensorInfo&, // detectionBoxes
207  const TensorInfo&, // detectionClasses
208  const TensorInfo&, // detectionScores
209  const TensorInfo&, // numDetections
210  const DetectionPostProcessDescriptor&, //descriptor
211  Optional<std::string&> reasonIfUnsupported) const
212 {
213  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
214 }
215 
217  const TensorInfo&, // output
218  const DepthwiseConvolution2dDescriptor&, // descriptor
219  const TensorInfo&,// weights
220  const Optional<TensorInfo>&, // biases
221  Optional<std::string&> reasonIfUnsupported) const
222 {
223  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
224 }
225 
227  const TensorInfo&, // input1
228  const TensorInfo&, // output
229  Optional<std::string&> reasonIfUnsupported) const
230 {
231  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
232 }
233 
235  const TensorInfo&, // output
236  const ElementwiseUnaryDescriptor&, // descriptor
237  Optional<std::string&> reasonIfUnsupported) const
238 {
239  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
240 }
241 
243  const FakeQuantizationDescriptor&, // descriptor
244  Optional<std::string&> reasonIfUnsupported) const
245 {
246  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
247 }
248 
250  const TensorInfo&, // output
251  const FillDescriptor&, // descriptor
252  Optional<std::string&> reasonIfUnsupported) const
253 {
254  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
255 }
256 
258  const TensorInfo&, // output
259  Optional<std::string&> reasonIfUnsupported) const
260 {
261  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
262 }
263 
265  const TensorInfo&, // output
266  const TensorInfo&, // weights
267  const TensorInfo&, // biases
268  const FullyConnectedDescriptor&, // descriptor
269  Optional<std::string&> reasonIfUnsupported) const
270 {
271  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
272 }
273 
275  const armnn::TensorInfo&, // input1
276  const armnn::TensorInfo&, // output
277  const GatherDescriptor&, // descriptor
278  armnn::Optional<std::string&> reasonIfUnsupported) const
279 {
280  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
281 }
282 
284  Optional<std::string&> reasonIfUnsupported) const
285 {
286  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
287 }
288 
290  const TensorInfo&, // output
291  const InstanceNormalizationDescriptor&, // descriptor
292  Optional<std::string&> reasonIfUnsupported) const
293 {
294  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
295 }
296 
298  const TensorInfo&, // output
299  const L2NormalizationDescriptor&, // descriptor
300  Optional<std::string&> reasonIfUnsupported) const
301 {
302  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
303 }
304 
306  const TensorInfo&, // input1
307  const TensorInfo&, // output
308  const LogicalBinaryDescriptor&, // descriptor
309  Optional<std::string&> reasonIfUnsupported) const
310 {
311  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
312 }
313 
315  const TensorInfo&, // output
316  const ElementwiseUnaryDescriptor&, // descriptor
317  Optional<std::string&> reasonIfUnsupported) const
318 {
319  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
320 }
321 
323  const TensorInfo&, // output
324  const LogSoftmaxDescriptor&, // descriptor
325  Optional<std::string&> reasonIfUnsupported) const
326 {
327  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
328 }
329 
331  const TensorInfo&, // outputStateIn
332  const TensorInfo&, // cellStateIn
333  const TensorInfo&, // scratchBuffer
334  const TensorInfo&, // outputStateOut
335  const TensorInfo&, // cellStateOut
336  const TensorInfo&, // output
337  const LstmDescriptor&, // descriptor
338  const LstmInputParamsInfo&, // paramsInfo
339  Optional<std::string&> reasonIfUnsupported) const
340 {
341  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
342 }
343 
345  const TensorInfo&, // input1
346  const TensorInfo&, // output
347  Optional<std::string&> reasonIfUnsupported) const
348 {
349  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
350 }
351 
353  const TensorInfo&, // output
354  const MeanDescriptor&, // descriptor
355  Optional<std::string&> reasonIfUnsupported) const
356 {
357  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
358 }
359 
361  const armnn::TensorInfo&, // output
362  armnn::Optional<std::string &> ) const // reasonIfUnsupported
363 {
364  return true;
365 }
366 
368  const armnn::TensorInfo&, // output
369  armnn::Optional<std::string &> ) const // reasonIfUnsupported
370 {
371  return true;
372 }
373 
375  const TensorInfo&, // input1
376  const TensorInfo&, // output
377  Optional<std::string&> reasonIfUnsupported) const
378 {
379  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
380 }
381 
383  const TensorInfo&, // input1
384  const TensorInfo&, // output
385  Optional<std::string&> reasonIfUnsupported) const
386 {
387  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
388 }
389 
391  const TensorInfo&, // input1
392  const TensorInfo&, // output
393  Optional<std::string&> reasonIfUnsupported) const
394 {
395  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
396 }
397 
399  const TensorInfo&, // output
400  const NormalizationDescriptor&, // descriptor
401  Optional<std::string&> reasonIfUnsupported) const
402 {
403  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
404 }
405 
407  Optional<std::string&> reasonIfUnsupported) const
408 {
409  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
410 }
411 
413  const TensorInfo&, // output
414  const PadDescriptor&, // descriptor
415  Optional<std::string&> reasonIfUnsupported) const
416 {
417  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
418 }
419 
421  const TensorInfo&, // output
422  const PermuteDescriptor&, // descriptor
423  Optional<std::string&> reasonIfUnsupported) const
424 {
425  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
426 }
427 
429  const TensorInfo&, // output
430  const Pooling2dDescriptor&, // descriptor
431  Optional<std::string&> reasonIfUnsupported) const
432 {
433  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
434 }
435 
437  const PreCompiledDescriptor&, // descriptor
438  Optional<std::string&> reasonIfUnsupported) const
439 {
440  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
441 }
442 
444  const TensorInfo&, // alpha
445  const TensorInfo&, // output
446  Optional<std::string &> reasonIfUnsupported) const
447 {
448  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
449 }
450 
452  const armnn::TensorInfo&, // output
453  armnn::Optional<std::string&> reasonIfUnsupported) const
454 {
455  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
456 }
457 
459  const TensorInfo&, // previousOutputIn
460  const TensorInfo&, // previousCellStateIn
461  const TensorInfo&, // outputStateOut
462  const TensorInfo&, // cellStateOut
463  const TensorInfo&, // output
464  const QLstmDescriptor&, // descriptor
465  const LstmInputParamsInfo&, // paramsInfo
466  Optional<std::string&> reasonIfUnsupported) const
467 {
468  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
469 }
470 
472  const TensorInfo&, // previousCellStateIn
473  const TensorInfo&, // previousOutputIn
474  const TensorInfo&, // cellStateOut
475  const TensorInfo&, // output
476  const QuantizedLstmInputParamsInfo&, // paramsInfo
477  Optional<std::string&> reasonIfUnsupported) const
478 {
479  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
480 }
481 
483  const TensorInfo&, // output
484  Optional<std::string&> reasonIfUnsupported) const
485 {
486  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
487 }
488 
490  const TensorInfo& /*output*/,
491  const ReduceDescriptor& /*descriptor*/,
492  Optional<std::string&> reasonIfUnsupported) const
493 {
494  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
495 }
496 
498  const TensorInfo&, // output
499  const ReshapeDescriptor&, // descriptor
500  Optional<std::string&> reasonIfUnsupported) const
501 {
502  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
503 }
504 
506  const TensorInfo&, // output
507  const ResizeDescriptor&, // descriptor
508  Optional<std::string&> reasonIfUnsupported) const
509 {
510  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
511 }
512 
514  const TensorInfo&, // output
515  Optional<std::string&> reasonIfUnsupported) const
516 {
517  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
518 }
519 
521  const TensorInfo&, // output
522  const SliceDescriptor&, // descriptor
523  Optional<std::string&> reasonIfUnsupported) const
524 {
525  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
526 }
527 
529  const TensorInfo&, // output
530  const SoftmaxDescriptor&, // descriptor
531  Optional<std::string&> reasonIfUnsupported) const
532 {
533  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
534 }
535 /**/
537  const TensorInfo&, // output
538  const SpaceToBatchNdDescriptor&, // descriptor
539  Optional<std::string&> reasonIfUnsupported) const
540 {
541  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
542 }
543 
545  const TensorInfo&, // output
546  const SpaceToDepthDescriptor&, // descriptor
547  Optional<std::string&> reasonIfUnsupported) const
548 {
549  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
550 }
551 
553  const std::vector<std::reference_wrapper<TensorInfo>>&, // outputs
554  const ViewsDescriptor&, // descriptor
555  Optional<std::string&> reasonIfUnsupported) const
556 {
557  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
558 }
559 
560 bool LayerSupportBase::IsStackSupported(const std::vector<const TensorInfo*>&, // inputs
561  const TensorInfo&, // output
562  const StackDescriptor&, // descriptor
563  Optional<std::string&> reasonIfUnsupported) const
564 {
565  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
566 }
567 
568 bool LayerSupportBase::IsStandInSupported(const std::vector<const TensorInfo*>&, // inputs
569  const std::vector<const TensorInfo*>&, // outputs
570  const StandInDescriptor&, // descriptor
571  Optional<std::string&> reasonIfUnsupported) const
572 {
573  if (reasonIfUnsupported)
574  {
575  std::stringstream message;
576  message << "StandIn layer is not executable via backends";
577 
578  reasonIfUnsupported.value() = message.str();
579  }
580 
581  return false;
582 }
583 
585  const TensorInfo&, // output
586  const StridedSliceDescriptor&, // descriptor
587  Optional<std::string&> reasonIfUnsupported) const
588 {
589  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
590 }
591 
593  const TensorInfo&, // input1
594  const TensorInfo&, // output
595  Optional<std::string&> reasonIfUnsupported) const
596 {
597  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
598 }
599 
601  const TensorInfo&, // input1
602  const TensorInfo&, // output0
603  const TensorInfo&, // output1
604  Optional<std::string&> reasonIfUnsupported) const
605 {
606  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
607 }
608 
610  const TensorInfo&, // output
611  const TransposeConvolution2dDescriptor&, // descriptor
612  const TensorInfo&, // weights
613  const Optional<TensorInfo>&, // biases
614  Optional<std::string&> reasonIfUnsupported) const
615 {
616  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
617 }
618 
620  const TensorInfo&, // output
621  const TransposeDescriptor&, // descriptor
622  Optional<std::string&> reasonIfUnsupported) const
623 {
624  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
625 }
626 
628  const TensorInfo&, // outputStateIn
629  const TensorInfo&, // cellStateIn
630  const TensorInfo&, // output
631  const Optional<TensorInfo>&, // hiddenStateOut
632  const Optional<TensorInfo>&, // cellStateOut
633  const LstmDescriptor&, // descriptor
634  const LstmInputParamsInfo&, // paramsInfo
635  Optional<std::string&> reasonIfUnsupported) const
636 {
637  return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
638 }
639 
640 } // namespace armnn
bool IsSplitterSupported(const TensorInfo &input, const std::vector< std::reference_wrapper< TensorInfo >> &outputs, const ViewsDescriptor &descriptor, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
bool IsInputSupported(const TensorInfo &input, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
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
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 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 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 ResizeBilinearDescriptor for the ResizeBilinearLayer.
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 IsBatchToSpaceNdSupported(const TensorInfo &input, const TensorInfo &output, const BatchToSpaceNdDescriptor &descriptor, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
bool IsChannelShuffleSupported(const TensorInfo &input, const TensorInfo &output, const ChannelShuffleDescriptor &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.
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
A Convolution3dDescriptor for the Convolution3dLayer.
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 IsConvolution3dSupported(const TensorInfo &input, const TensorInfo &output, const Convolution3dDescriptor &descriptor, const TensorInfo &weights, const Optional< TensorInfo > &biases, 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.
bool IsGatherSupported(const TensorInfo &input0, const TensorInfo &input1, const TensorInfo &output, const GatherDescriptor &descriptor, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
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.
A ChannelShuffleDescriptor for the ChannelShuffle operator.
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
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