From 0e2bab81442ee6cc2b94e4f7881ed0c5c6af65e7 Mon Sep 17 00:00:00 2001 From: Jim Flynn Date: Thu, 19 Mar 2020 17:03:14 +0000 Subject: Creating gh-pages documentation for ArmNN Signed-off-by: Jim Flynn --- src/backends/backendsCommon/LayerSupportBase.cpp | 582 ----------------------- 1 file changed, 582 deletions(-) delete mode 100644 src/backends/backendsCommon/LayerSupportBase.cpp (limited to 'src/backends/backendsCommon/LayerSupportBase.cpp') diff --git a/src/backends/backendsCommon/LayerSupportBase.cpp b/src/backends/backendsCommon/LayerSupportBase.cpp deleted file mode 100644 index 449b8098d6..0000000000 --- a/src/backends/backendsCommon/LayerSupportBase.cpp +++ /dev/null @@ -1,582 +0,0 @@ -// -// Copyright © 2017 Arm Ltd. All rights reserved. -// SPDX-License-Identifier: MIT -// - -#include -#include -#include -#include - -#include - -#include - -namespace -{ - -bool DefaultLayerSupport(const char* func, - const char* file, - unsigned int line, - armnn::Optional reasonIfUnsupported) -{ - // NOTE: We only need to return the reason if the optional parameter is not empty - if (reasonIfUnsupported) - { - std::stringstream message; - message << func << " is not implemented [" << file << ":" << line << "]"; - - reasonIfUnsupported.value() = message.str(); - } - - return false; -} - -} // anonymous namespace - -namespace armnn -{ - -bool LayerSupportBase::IsAbsSupported(const TensorInfo& /*input*/, - const TensorInfo& /*output*/, - Optional reasonIfUnsupported) const -{ - return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported); -} - -bool LayerSupportBase::IsActivationSupported(const TensorInfo& /*input*/, - const TensorInfo& /*output*/, - const ActivationDescriptor& /*descriptor*/, - Optional reasonIfUnsupported) const -{ - return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported); -} - -bool LayerSupportBase::IsAdditionSupported(const TensorInfo& /*input0*/, - const TensorInfo& /*input1*/, - const TensorInfo& /*output*/, - Optional reasonIfUnsupported) const -{ - return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported); -} - -bool LayerSupportBase::IsArgMinMaxSupported(const armnn::TensorInfo &/*input*/, - const armnn::TensorInfo &/*output*/, - const armnn::ArgMinMaxDescriptor& /*descriptor*/, - armnn::Optional reasonIfUnsupported) const -{ - return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported); -} - -bool LayerSupportBase::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 -{ - return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported); -} - -bool LayerSupportBase::IsBatchToSpaceNdSupported(const TensorInfo& /*input*/, - const TensorInfo& /*output*/, - const BatchToSpaceNdDescriptor& /*descriptor*/, - Optional reasonIfUnsupported) const -{ - return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported); -} - -bool LayerSupportBase::IsComparisonSupported(const TensorInfo& /*input0*/, - const TensorInfo& /*input1*/, - const TensorInfo& /*output*/, - const ComparisonDescriptor& /*descriptor*/, - Optional reasonIfUnsupported) const -{ - return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported); -} - -bool LayerSupportBase::IsConcatSupported(const std::vector /*inputs*/, - const TensorInfo& /*output*/, - const OriginsDescriptor& /*descriptor*/, - Optional reasonIfUnsupported) const -{ - return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported); -} - -bool LayerSupportBase::IsConstantSupported(const TensorInfo& /*output*/, - Optional reasonIfUnsupported) const -{ - return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported); -} - -bool LayerSupportBase::IsConvertFp16ToFp32Supported(const TensorInfo& /*input*/, - const TensorInfo& /*output*/, - Optional reasonIfUnsupported) const -{ - return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported); -} - -bool LayerSupportBase::IsConvertFp32ToFp16Supported(const TensorInfo& /*input*/, - const TensorInfo& /*output*/, - Optional reasonIfUnsupported) const -{ - return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported); -} - -bool LayerSupportBase::IsConvolution2dSupported(const TensorInfo& /*input*/, - const TensorInfo& /*output*/, - const Convolution2dDescriptor& /*descriptor*/, - const TensorInfo& /*weights*/, - const Optional& /*biases*/, - Optional reasonIfUnsupported) const -{ - return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported); -} - -bool LayerSupportBase::IsDebugSupported(const TensorInfo& /*input*/, - const TensorInfo& /*output*/, - Optional reasonIfUnsupported) const -{ - return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported); -} - -bool LayerSupportBase::IsDepthToSpaceSupported(const TensorInfo& /*input*/, - const TensorInfo& /*output*/, - const DepthToSpaceDescriptor& /*descriptor*/, - Optional reasonIfUnsupported) const -{ - return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported); -} - -bool LayerSupportBase::IsDepthwiseConvolutionSupported(const TensorInfo& /*input*/, - const TensorInfo& /*output*/, - const DepthwiseConvolution2dDescriptor& /*descriptor*/, - const TensorInfo& /*weights*/, - const Optional& /*biases*/, - Optional reasonIfUnsupported) const -{ - return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported); -} - -bool LayerSupportBase::IsDequantizeSupported(const TensorInfo& /*input*/, - const TensorInfo& /*output*/, - Optional reasonIfUnsupported) const -{ - return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported); -} - -bool LayerSupportBase::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 -{ - return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported); -} - -bool LayerSupportBase::IsDilatedDepthwiseConvolutionSupported(const TensorInfo& /*input*/, - const TensorInfo& /*output*/, - const DepthwiseConvolution2dDescriptor& /*descriptor*/, - const TensorInfo& /*weights*/, - const Optional& /*biases*/, - Optional reasonIfUnsupported) const -{ - return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported); -} - -bool LayerSupportBase::IsDivisionSupported(const TensorInfo& /*input0*/, - const TensorInfo& /*input1*/, - const TensorInfo& /*output*/, - Optional reasonIfUnsupported) const -{ - return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported); -} - -bool LayerSupportBase::IsElementwiseUnarySupported(const TensorInfo& input, - const TensorInfo& output, - const ElementwiseUnaryDescriptor& descriptor, - Optional reasonIfUnsupported) const -{ - if (descriptor.m_Operation == UnaryOperation::Abs) - { - ARMNN_NO_DEPRECATE_WARN_BEGIN - return IsAbsSupported(input, output, reasonIfUnsupported); - ARMNN_NO_DEPRECATE_WARN_END - } - else if (descriptor.m_Operation == UnaryOperation::Rsqrt) - { - ARMNN_NO_DEPRECATE_WARN_BEGIN - return IsRsqrtSupported(input, output, reasonIfUnsupported); - ARMNN_NO_DEPRECATE_WARN_END - } - return false; -} - -bool LayerSupportBase::IsEqualSupported(const armnn::TensorInfo& /*input0*/, - const armnn::TensorInfo& /*input1*/, - const armnn::TensorInfo& /*output*/, - armnn::Optional reasonIfUnsupported) const -{ - return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported); -} - -bool LayerSupportBase::IsFakeQuantizationSupported(const TensorInfo& /*input*/, - const FakeQuantizationDescriptor& /*descriptor*/, - Optional reasonIfUnsupported) const -{ - return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported); -} - -bool LayerSupportBase::IsFloorSupported(const TensorInfo& /*input*/, - const TensorInfo& /*output*/, - Optional reasonIfUnsupported) const -{ - return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported); -} - -bool LayerSupportBase::IsFullyConnectedSupported(const TensorInfo& /*input*/, - const TensorInfo& /*output*/, - const TensorInfo& /*weights*/, - const TensorInfo& /*biases*/, - const FullyConnectedDescriptor& /*descriptor*/, - Optional reasonIfUnsupported) const -{ - return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported); -} - -bool LayerSupportBase::IsGatherSupported(const armnn::TensorInfo& /*input0*/, - const armnn::TensorInfo& /*input1*/, - const armnn::TensorInfo& /*output*/, - armnn::Optional reasonIfUnsupported) const -{ - return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported); -} - -bool LayerSupportBase::IsGreaterSupported(const TensorInfo& /*input0*/, - const TensorInfo& /*input1*/, - const TensorInfo& /*output*/, - Optional reasonIfUnsupported) const -{ - return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported); -} - -bool LayerSupportBase::IsInputSupported(const TensorInfo& /*input*/, - Optional reasonIfUnsupported) const -{ - return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported); -} - -bool LayerSupportBase::IsInstanceNormalizationSupported(const TensorInfo& /*input*/, - const TensorInfo& /*output*/, - const InstanceNormalizationDescriptor& /*descriptor*/, - Optional reasonIfUnsupported) const -{ - return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported); -} - -bool LayerSupportBase::IsL2NormalizationSupported(const TensorInfo& /*input*/, - const TensorInfo& /*output*/, - const L2NormalizationDescriptor& /*descriptor*/, - Optional reasonIfUnsupported) const -{ - return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported); -} - -bool LayerSupportBase::IsLogSoftmaxSupported(const TensorInfo& /*input*/, - const TensorInfo& /*output*/, - const LogSoftmaxDescriptor& /*descriptor*/, - Optional reasonIfUnsupported) const -{ - return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported); -} - -bool LayerSupportBase::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 -{ - return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported); -} - -bool LayerSupportBase::IsMaximumSupported(const TensorInfo& /*input0*/, - const TensorInfo& /*input1*/, - const TensorInfo& /*output*/, - Optional reasonIfUnsupported) const -{ - return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported); -} - -bool LayerSupportBase::IsMeanSupported(const TensorInfo& /*input*/, - const TensorInfo& /*output*/, - const MeanDescriptor& /*descriptor*/, - Optional reasonIfUnsupported) const -{ - return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported); -} - -bool LayerSupportBase::IsMemCopySupported(const armnn::TensorInfo& /*input*/, - const armnn::TensorInfo& /*output*/, - armnn::Optional /*reasonIfUnsupported*/) const -{ - return true; -} - -bool LayerSupportBase::IsMemImportSupported(const armnn::TensorInfo& /*input*/, - const armnn::TensorInfo& /*output*/, - armnn::Optional /*reasonIfUnsupported*/) const -{ - return true; -} - -bool LayerSupportBase::IsMergeSupported(const TensorInfo& /*input0*/, - const TensorInfo& /*input1*/, - const TensorInfo& /*output*/, - Optional reasonIfUnsupported) const -{ - return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported); -} - -bool LayerSupportBase::IsMergerSupported(const std::vector inputs, - const TensorInfo& output, - const OriginsDescriptor& descriptor, - Optional reasonIfUnsupported) const -{ - return IsConcatSupported(inputs, output, descriptor, reasonIfUnsupported); -} - -bool LayerSupportBase::IsMinimumSupported(const TensorInfo& /*input0*/, - const TensorInfo& /*input1*/, - const TensorInfo& /*output*/, - Optional reasonIfUnsupported) const -{ - return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported); -} - -bool LayerSupportBase::IsMultiplicationSupported(const TensorInfo& /*input0*/, - const TensorInfo& /*input1*/, - const TensorInfo& /*output*/, - Optional reasonIfUnsupported) const -{ - return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported); -} - -bool LayerSupportBase::IsNormalizationSupported(const TensorInfo& /*input*/, - const TensorInfo& /*output*/, - const NormalizationDescriptor& /*descriptor*/, - Optional reasonIfUnsupported) const -{ - return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported); -} - -bool LayerSupportBase::IsOutputSupported(const TensorInfo& /*output*/, - Optional reasonIfUnsupported) const -{ - return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported); -} - -bool LayerSupportBase::IsPadSupported(const TensorInfo& /*input*/, - const TensorInfo& /*output*/, - const PadDescriptor& /*descriptor*/, - Optional reasonIfUnsupported) const -{ - return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported); -} - -bool LayerSupportBase::IsPermuteSupported(const TensorInfo& /*input*/, - const TensorInfo& /*output*/, - const PermuteDescriptor& /*descriptor*/, - Optional reasonIfUnsupported) const -{ - return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported); -} - -bool LayerSupportBase::IsPooling2dSupported(const TensorInfo& /*input*/, - const TensorInfo& /*output*/, - const Pooling2dDescriptor& /*descriptor*/, - Optional reasonIfUnsupported) const -{ - return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported); -} - -bool LayerSupportBase::IsPreCompiledSupported(const TensorInfo& /*input*/, - const PreCompiledDescriptor& /*descriptor*/, - Optional reasonIfUnsupported) const -{ - return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported); -} - -bool LayerSupportBase::IsPreluSupported(const TensorInfo& /*input*/, - const TensorInfo& /*alpha*/, - const TensorInfo& /*output*/, - Optional reasonIfUnsupported) const -{ - return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported); -} - -bool LayerSupportBase::IsQuantizeSupported(const armnn::TensorInfo& /*input*/, - const armnn::TensorInfo& /*output*/, - armnn::Optional reasonIfUnsupported) const -{ - return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported); -} - -bool LayerSupportBase::IsQuantizedLstmSupported(const TensorInfo& /*input*/, - const TensorInfo& /*previousCellStateIn*/, - const TensorInfo& /*previousOutputIn*/, - const TensorInfo& /*cellStateOut*/, - const TensorInfo& /*output*/, - const QuantizedLstmInputParamsInfo& /*paramsInfo*/, - Optional reasonIfUnsupported) const -{ - return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported); -} - -bool LayerSupportBase::IsReshapeSupported(const TensorInfo& /*input*/, - const TensorInfo& /*output*/, - const ReshapeDescriptor& /*descriptor*/, - Optional reasonIfUnsupported) const -{ - return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported); -} - -bool LayerSupportBase::IsResizeBilinearSupported(const TensorInfo& /*input*/, - const TensorInfo& /*output*/, - Optional reasonIfUnsupported) const -{ - return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported); -} - -bool LayerSupportBase::IsResizeSupported(const TensorInfo& /*input*/, - const TensorInfo& /*output*/, - const ResizeDescriptor& /*descriptor*/, - Optional reasonIfUnsupported) const -{ - return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported); -} - -bool LayerSupportBase::IsRsqrtSupported(const TensorInfo &/*input*/, - const TensorInfo &/*output*/, - Optional reasonIfUnsupported) const -{ - return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported); -} - -bool LayerSupportBase::IsSliceSupported(const TensorInfo& /*input*/, - const TensorInfo& /*output*/, - const SliceDescriptor& /*descriptor*/, - Optional reasonIfUnsupported) const -{ - return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported); -} - -bool LayerSupportBase::IsSoftmaxSupported(const TensorInfo& /*input*/, - const TensorInfo& /*output*/, - const SoftmaxDescriptor& /*descriptor*/, - Optional reasonIfUnsupported) const -{ - return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported); -} -/**/ -bool LayerSupportBase::IsSpaceToBatchNdSupported(const TensorInfo& /*input*/, - const TensorInfo& /*output*/, - const SpaceToBatchNdDescriptor& /*descriptor*/, - Optional reasonIfUnsupported) const -{ - return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported); -} - -bool LayerSupportBase::IsSpaceToDepthSupported(const TensorInfo& /*input*/, - const TensorInfo& /*output*/, - const SpaceToDepthDescriptor& /*descriptor*/, - Optional reasonIfUnsupported) const -{ - return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported); -} - -bool LayerSupportBase::IsSplitterSupported(const TensorInfo& /*input*/, - const ViewsDescriptor& /*descriptor*/, - Optional reasonIfUnsupported) const -{ - return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported); -} - -bool LayerSupportBase::IsSplitterSupported(const TensorInfo& /*input*/, - const std::vector>& /*outputs*/, - const ViewsDescriptor& /*descriptor*/, - Optional reasonIfUnsupported) const -{ - return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported); -} - -bool LayerSupportBase::IsStackSupported(const std::vector& /*inputs*/, - const TensorInfo& /*output*/, - const StackDescriptor& /*descriptor*/, - Optional reasonIfUnsupported) const -{ - return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported); -} - -bool LayerSupportBase::IsStandInSupported(const std::vector& /*inputs*/, - const std::vector& /*outputs*/, - const StandInDescriptor& /*descriptor*/, - Optional reasonIfUnsupported) const -{ - if (reasonIfUnsupported) - { - std::stringstream message; - message << "StandIn layer is not executable via backends"; - - reasonIfUnsupported.value() = message.str(); - } - - return false; -} - -bool LayerSupportBase::IsStridedSliceSupported(const TensorInfo& /*input*/, - const TensorInfo& /*output*/, - const StridedSliceDescriptor& /*descriptor*/, - Optional reasonIfUnsupported) const -{ - return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported); -} - -bool LayerSupportBase::IsSubtractionSupported(const TensorInfo& /*input0*/, - const TensorInfo& /*input1*/, - const TensorInfo& /*output*/, - Optional reasonIfUnsupported) const -{ - return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported); -} - -bool LayerSupportBase::IsSwitchSupported(const TensorInfo& /*input0*/, - const TensorInfo& /*input1*/, - const TensorInfo& /*output0*/, - const TensorInfo& /*output1*/, - Optional reasonIfUnsupported) const -{ - return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported); -} - -bool LayerSupportBase::IsTransposeConvolution2dSupported(const TensorInfo& /*input*/, - const TensorInfo& /*output*/, - const TransposeConvolution2dDescriptor& /*descriptor*/, - const TensorInfo& /*weights*/, - const Optional& /*biases*/, - Optional reasonIfUnsupported) const -{ - return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported); -} - -} // namespace armnn -- cgit v1.2.1