From b03043e4b2ee988daead10307f082e85f26669cb Mon Sep 17 00:00:00 2001 From: Francis Murtagh Date: Thu, 20 Jan 2022 14:31:30 +0000 Subject: Bugfix: Add default Implementation for ILayerSupport deprecated API * This saves new backend implementing old and new pure virtual functions only to have to remove their implementations of our old api when we remove in 22.08. * Make deprecation warnings more descriptive. Signed-off-by: Francis Murtagh Change-Id: I36c34c3c85f1c359e0b6974866e70edf0bbb4227 --- src/armnn/ILayerSupport.cpp | 721 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 721 insertions(+) (limited to 'src') diff --git a/src/armnn/ILayerSupport.cpp b/src/armnn/ILayerSupport.cpp index 76926d9558..bf54223414 100644 --- a/src/armnn/ILayerSupport.cpp +++ b/src/armnn/ILayerSupport.cpp @@ -7,6 +7,7 @@ #include #include #include +#include namespace armnn { @@ -582,5 +583,725 @@ bool ILayerSupport::IsLayerSupported(const LayerType& type, return false; } } + +bool ILayerSupport::IsActivationSupported(const TensorInfo& input, + const TensorInfo& output, + const ActivationDescriptor& descriptor, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input, output, descriptor, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsAdditionSupported(const TensorInfo& input0, + const TensorInfo& input1, + const TensorInfo& output, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input0, input1, output, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsArgMinMaxSupported(const TensorInfo& input, + const TensorInfo& output, + const ArgMinMaxDescriptor& descriptor, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input, output, descriptor, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsBatchNormalizationSupported(const TensorInfo& input, + const TensorInfo& output, + const TensorInfo& mean, + const TensorInfo& var, + const TensorInfo& beta, + const TensorInfo& gamma, + const BatchNormalizationDescriptor& descriptor, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input, output, mean, var, beta, gamma, descriptor, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsBatchToSpaceNdSupported(const TensorInfo& input, + const TensorInfo& output, + const BatchToSpaceNdDescriptor& descriptor, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input, output, descriptor, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsCastSupported(const TensorInfo& input, + const TensorInfo& output, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input, output, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsChannelShuffleSupported(const TensorInfo& input, + const TensorInfo& output, + const ChannelShuffleDescriptor& descriptor, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input, output, descriptor, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsComparisonSupported(const TensorInfo& input0, + const TensorInfo& input1, + const TensorInfo& output, + const ComparisonDescriptor& descriptor, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input0, input1, output, descriptor, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsConcatSupported(const std::vector inputs, + const TensorInfo& output, + const OriginsDescriptor& descriptor, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(inputs, output, descriptor, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsConstantSupported(const TensorInfo& output, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(output, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsConvertBf16ToFp32Supported(const TensorInfo& input, + const TensorInfo& output, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input, output, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsConvertFp32ToBf16Supported(const TensorInfo& input, + const TensorInfo& output, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input, output, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsConvertFp16ToFp32Supported(const TensorInfo& input, + const TensorInfo& output, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input, output, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsConvertFp32ToFp16Supported(const TensorInfo& input, + const TensorInfo& output, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input, output, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsConvolution2dSupported(const TensorInfo& input, + const TensorInfo& output, + const Convolution2dDescriptor& descriptor, + const TensorInfo& weights, + const Optional& biases, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input, output, descriptor, weights, biases, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsConvolution3dSupported(const TensorInfo& input, + const TensorInfo& output, + const Convolution3dDescriptor& descriptor, + const TensorInfo& weights, + const Optional& biases, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input, output, descriptor, weights, biases, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsDebugSupported(const TensorInfo& input, + const TensorInfo& output, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input, output, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsDepthToSpaceSupported(const TensorInfo& input, + const TensorInfo& output, + const DepthToSpaceDescriptor& descriptor, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input, output, descriptor, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsDepthwiseConvolutionSupported( + const TensorInfo& input, + const TensorInfo& output, + const DepthwiseConvolution2dDescriptor& descriptor, + const TensorInfo& weights, + const Optional& biases, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input, + output, + descriptor, + weights, + biases, + reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsDequantizeSupported(const TensorInfo& input, + const TensorInfo& output, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input, output, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::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 reasonIfUnsupported) const +{ + IgnoreUnused(boxEncodings, + scores, + anchors, + detectionBoxes, + detectionClasses, + detectionScores, + numDetections, + descriptor, + reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsDilatedDepthwiseConvolutionSupported( + const TensorInfo& input, + const TensorInfo& output, + const DepthwiseConvolution2dDescriptor& descriptor, + const TensorInfo& weights, + const Optional& biases, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input, output, descriptor, weights, biases, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsDivisionSupported(const TensorInfo& input0, + const TensorInfo& input1, + const TensorInfo& output, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input0, input1, output, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsElementwiseUnarySupported(const TensorInfo& input, + const TensorInfo& output, + const ElementwiseUnaryDescriptor& descriptor, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input, output, descriptor, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsFakeQuantizationSupported(const TensorInfo& input, + const FakeQuantizationDescriptor& descriptor, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input, descriptor, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsFillSupported(const TensorInfo& input, + const TensorInfo& output, + const FillDescriptor& descriptor, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input, output, descriptor, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsFloorSupported(const TensorInfo& input, + const TensorInfo& output, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input, output, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsFullyConnectedSupported(const TensorInfo& input, + const TensorInfo& output, + const TensorInfo& weights, + const TensorInfo& biases, + const FullyConnectedDescriptor& descriptor, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input, output, weights, biases, descriptor, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsGatherSupported(const TensorInfo& input0, + const TensorInfo& input1, + const TensorInfo& output, + const GatherDescriptor& descriptor, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input0, input1, output, descriptor, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsInputSupported(const TensorInfo& input, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsInstanceNormalizationSupported( + const TensorInfo& input, + const TensorInfo& output, + const InstanceNormalizationDescriptor& descriptor, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input, output, descriptor, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsL2NormalizationSupported(const TensorInfo& input, + const TensorInfo& output, + const L2NormalizationDescriptor& descriptor, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input, output, descriptor, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsLogicalBinarySupported(const TensorInfo& input0, + const TensorInfo& input1, + const TensorInfo& output, + const LogicalBinaryDescriptor& descriptor, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input0, input1, output, descriptor, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsLogicalUnarySupported(const TensorInfo& input, + const TensorInfo& output, + const ElementwiseUnaryDescriptor& descriptor, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input, output, descriptor, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsLogSoftmaxSupported(const TensorInfo& input, + const TensorInfo& output, + const LogSoftmaxDescriptor& descriptor, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input, output, descriptor, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::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 reasonIfUnsupported) const +{ + IgnoreUnused(input, + outputStateIn, + cellStateIn, + scratchBuffer, + outputStateOut, + cellStateOut, + output, + descriptor, + paramsInfo, + reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsMaximumSupported(const TensorInfo& input0, + const TensorInfo& input1, + const TensorInfo& output, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input0, input1, output, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsMeanSupported(const TensorInfo& input, + const TensorInfo& output, + const MeanDescriptor& descriptor, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input, output, descriptor, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsMemCopySupported(const TensorInfo& input, + const TensorInfo& output, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input, output, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsMemImportSupported(const TensorInfo& input, + const TensorInfo& output, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input, output, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsMergeSupported(const TensorInfo& input0, + const TensorInfo& input1, + const TensorInfo& output, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input0, input1, output, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsMinimumSupported(const TensorInfo& input0, + const TensorInfo& input1, + const TensorInfo& output, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input0, input1, output, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsMultiplicationSupported(const TensorInfo& input0, + const TensorInfo& input1, + const TensorInfo& output, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input0, input1, output, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsNormalizationSupported(const TensorInfo& input, + const TensorInfo& output, + const NormalizationDescriptor& descriptor, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input, output, descriptor, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsOutputSupported(const TensorInfo& output, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(output, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsPadSupported(const TensorInfo& input, + const TensorInfo& output, + const PadDescriptor& descriptor, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input, output, descriptor, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsPermuteSupported(const TensorInfo& input, + const TensorInfo& output, + const PermuteDescriptor& descriptor, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input, output, descriptor, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsPooling2dSupported(const TensorInfo& input, + const TensorInfo& output, + const Pooling2dDescriptor& descriptor, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input, output, descriptor, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsPooling3dSupported(const TensorInfo& input, + const TensorInfo& output, + const Pooling3dDescriptor& descriptor, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input, output, descriptor, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsPreCompiledSupported(const TensorInfo& input, + const PreCompiledDescriptor& descriptor, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input, descriptor, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsPreluSupported(const TensorInfo& input, + const TensorInfo& alpha, + const TensorInfo& output, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input, alpha, output, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsQuantizeSupported(const TensorInfo& input, + const TensorInfo& output, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input, output, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::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 reasonIfUnsupported) const +{ + IgnoreUnused(input, + previousOutputIn, + previousCellStateIn, + outputStateOut, + cellStateOut, + output, + descriptor, + paramsInfo, + reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsQuantizedLstmSupported(const TensorInfo& input, + const TensorInfo& previousCellStateIn, + const TensorInfo& previousOutputIn, + const TensorInfo& cellStateOut, + const TensorInfo& output, + const QuantizedLstmInputParamsInfo& paramsInfo, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input, + previousCellStateIn, + previousOutputIn, + cellStateOut, + output, + paramsInfo, + reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsRankSupported(const TensorInfo& input, + const TensorInfo& output, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input, output, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsReduceSupported(const TensorInfo& input, + const TensorInfo& output, + const ReduceDescriptor& descriptor, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input, output, descriptor, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsReshapeSupported(const TensorInfo& input, + const TensorInfo& output, + const ReshapeDescriptor& descriptor, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input, output, descriptor, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsResizeSupported(const TensorInfo& input, + const TensorInfo& output, + const ResizeDescriptor& descriptor, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input, output, descriptor, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsShapeSupported(const TensorInfo& input, + const TensorInfo& output, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input, output, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsSliceSupported(const TensorInfo& input, + const TensorInfo& output, + const SliceDescriptor& descriptor, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input, output, descriptor, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsSoftmaxSupported(const TensorInfo& input, + const TensorInfo& output, + const SoftmaxDescriptor& descriptor, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input, output, descriptor, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsSpaceToBatchNdSupported(const TensorInfo& input, + const TensorInfo& output, + const SpaceToBatchNdDescriptor& descriptor, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input, output, descriptor, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsSpaceToDepthSupported(const TensorInfo& input, + const TensorInfo& output, + const SpaceToDepthDescriptor& descriptor, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input, output, descriptor, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsSplitterSupported(const TensorInfo& input, + const std::vector>& outputs, + const ViewsDescriptor& descriptor, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input, outputs, descriptor, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsStackSupported(const std::vector& inputs, + const TensorInfo& output, + const StackDescriptor& descriptor, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(inputs, output, descriptor, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsStandInSupported(const std::vector& inputs, + const std::vector& outputs, + const StandInDescriptor& descriptor, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(inputs, outputs, descriptor, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsStridedSliceSupported(const TensorInfo& input, + const TensorInfo& output, + const StridedSliceDescriptor& descriptor, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input, output, descriptor, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsSubtractionSupported(const TensorInfo& input0, + const TensorInfo& input1, + const TensorInfo& output, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input0, input1, output, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsSwitchSupported(const TensorInfo& input0, + const TensorInfo& input1, + const TensorInfo& output0, + const TensorInfo& output1, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input0, input1, output0, output1, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsTransposeConvolution2dSupported( + const TensorInfo& input, + const TensorInfo& output, + const TransposeConvolution2dDescriptor& descriptor, + const TensorInfo& weights, + const Optional& biases, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input, output, descriptor, weights, biases, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsTransposeSupported(const TensorInfo& input, + const TensorInfo& output, + const TransposeDescriptor& descriptor, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input, output, descriptor, reasonIfUnsupported); + return false; +} + +bool ILayerSupport::IsUnidirectionalSequenceLstmSupported( + const TensorInfo& input, + const TensorInfo& outputStateIn, + const TensorInfo& cellStateIn, + const TensorInfo& output, + const Optional& hiddenStateOutput, + const Optional& cellStateOutput, + const LstmDescriptor& descriptor, + const LstmInputParamsInfo& paramsInfo, + Optional reasonIfUnsupported) const +{ + IgnoreUnused(input, + outputStateIn, + cellStateIn, + output, + hiddenStateOutput, + cellStateOutput, + descriptor, + paramsInfo, + reasonIfUnsupported); + return false; +} ARMNN_NO_DEPRECATE_WARN_END } -- cgit v1.2.1