From 412424c7f3553d7469c17deb2a68d07d15a5602b Mon Sep 17 00:00:00 2001 From: Ryan OShea Date: Wed, 29 Jan 2020 16:19:55 +0000 Subject: IVGCVSW-4149 Enable quantisation multiplier > 1 in all convolutions Signed-off-by: Ryan OShea Change-Id: I9652844a868ce8e05c0433c051e7079cf203c422 --- src/backends/aclCommon/ArmComputeTensorUtils.cpp | 27 ----------------------- src/backends/aclCommon/ArmComputeTensorUtils.hpp | 4 ---- src/backends/cl/ClLayerSupport.cpp | 28 ------------------------ src/backends/neon/NeonLayerSupport.cpp | 28 ------------------------ 4 files changed, 87 deletions(-) diff --git a/src/backends/aclCommon/ArmComputeTensorUtils.cpp b/src/backends/aclCommon/ArmComputeTensorUtils.cpp index 04202ada90..a21de809f7 100644 --- a/src/backends/aclCommon/ArmComputeTensorUtils.cpp +++ b/src/backends/aclCommon/ArmComputeTensorUtils.cpp @@ -237,32 +237,5 @@ arm_compute::PixelValue GetPixelValue(arm_compute::ITensor& input, float pixelVa } } -bool IsQuantMultiplierSupported(const TensorInfo& input, - const TensorInfo& output, - const TensorInfo& weights) -{ - constexpr float maxQuantMultiplier = 1.0f; - if (weights.HasMultipleQuantizationScales()) - { - for (float weightScale : weights.GetQuantizationScales()) - { - if ((input.GetQuantizationScale() * weightScale) / output.GetQuantizationScale() > maxQuantMultiplier) - { - return false; - } - } - } - else - { - if ((input.GetQuantizationScale() * weights.GetQuantizationScale()) / - output.GetQuantizationScale() > maxQuantMultiplier) - { - return false; - } - } - - return true; -} - } // namespace armcomputetensorutils } // namespace armnn diff --git a/src/backends/aclCommon/ArmComputeTensorUtils.hpp b/src/backends/aclCommon/ArmComputeTensorUtils.hpp index 01d1dea53d..b4ff0f72ff 100644 --- a/src/backends/aclCommon/ArmComputeTensorUtils.hpp +++ b/src/backends/aclCommon/ArmComputeTensorUtils.hpp @@ -243,9 +243,5 @@ inline TensorShape GetShape(const arm_compute::TensorShape& shape) return GetTensorShape(shape, 1U); } -bool IsQuantMultiplierSupported(const TensorInfo& input, - const TensorInfo& output, - const TensorInfo& weights); - } // namespace armcomputetensorutils } // namespace armnn diff --git a/src/backends/cl/ClLayerSupport.cpp b/src/backends/cl/ClLayerSupport.cpp index 7bf7f1529e..e8548e4b5a 100644 --- a/src/backends/cl/ClLayerSupport.cpp +++ b/src/backends/cl/ClLayerSupport.cpp @@ -147,14 +147,6 @@ bool IsSupportedForDataTypeCl(Optional reasonIfUnsupported, &FalseFunc<>, std::forward(params)...); } - -#if defined(ARMCOMPUTECL_ENABLED) -#define IS_QUANT_MULTIPLIER_SUPPORTED(input, output, weights) \ -armcomputetensorutils::IsQuantMultiplierSupported(input, output, weights) -#else -#define IS_QUANT_MULTIPLIER_SUPPORTED(input, output, weights) true -#endif - } // anonymous namespace bool ClLayerSupport::IsAbsSupported(const TensorInfo& input, @@ -329,11 +321,6 @@ bool ClLayerSupport::IsConvolution2dSupported(const TensorInfo& input, const Optional& biases, Optional reasonIfUnsupported) const { - if (!IS_QUANT_MULTIPLIER_SUPPORTED(input, output, weights)) - { - return false; - } - FORWARD_WORKLOAD_VALIDATE_FUNC(ClConvolution2dWorkloadValidate, reasonIfUnsupported, input, @@ -372,11 +359,6 @@ bool ClLayerSupport::IsDepthwiseConvolutionSupported(const TensorInfo& input, const Optional& biases, Optional reasonIfUnsupported) const { - if (!IS_QUANT_MULTIPLIER_SUPPORTED(input, output, weights)) - { - return false; - } - FORWARD_WORKLOAD_VALIDATE_FUNC(ClDepthwiseConvolutionWorkloadValidate, reasonIfUnsupported, input, @@ -393,11 +375,6 @@ bool ClLayerSupport::IsDilatedDepthwiseConvolutionSupported(const TensorInfo& in const Optional& biases, Optional reasonIfUnsupported) const { - if (!IS_QUANT_MULTIPLIER_SUPPORTED(input, output, weights)) - { - return false; - } - FORWARD_WORKLOAD_VALIDATE_FUNC(ClDepthwiseConvolutionWorkloadValidate, reasonIfUnsupported, input, @@ -833,11 +810,6 @@ bool ClLayerSupport::IsTransposeConvolution2dSupported(const TensorInfo& input, const Optional& biases, Optional reasonIfUnsupported) const { - if (!IS_QUANT_MULTIPLIER_SUPPORTED(input, output, weights)) - { - return false; - } - FORWARD_WORKLOAD_VALIDATE_FUNC(ClTransposeConvolution2dWorkloadValidate, reasonIfUnsupported, input, diff --git a/src/backends/neon/NeonLayerSupport.cpp b/src/backends/neon/NeonLayerSupport.cpp index 7d6e6d8d99..0db97be62c 100644 --- a/src/backends/neon/NeonLayerSupport.cpp +++ b/src/backends/neon/NeonLayerSupport.cpp @@ -119,14 +119,6 @@ inline bool IsWorkloadSupported(FuncType& func, Optional reasonIfU #define FORWARD_WORKLOAD_VALIDATE_FUNC(func, reasonIfUnsupported, ...) \ return IsNeonBackendSupported(reasonIfUnsupported, __VA_ARGS__); #endif - -#if defined(ARMCOMPUTENEON_ENABLED) -#define IS_QUANT_MULTIPLIER_SUPPORTED(input, output, weights) \ -armcomputetensorutils::IsQuantMultiplierSupported(input, output, weights) -#else -#define IS_QUANT_MULTIPLIER_SUPPORTED(input, output, weights) true -#endif - } // anonymous namespace bool NeonLayerSupport::IsAbsSupported(const TensorInfo& input, @@ -299,11 +291,6 @@ bool NeonLayerSupport::IsConvolution2dSupported(const TensorInfo& input, const Optional& biases, Optional reasonIfUnsupported) const { - if (!IS_QUANT_MULTIPLIER_SUPPORTED(input, output, weights)) - { - return false; - } - FORWARD_WORKLOAD_VALIDATE_FUNC(NeonConvolution2dWorkloadValidate, reasonIfUnsupported, input, @@ -332,11 +319,6 @@ bool NeonLayerSupport::IsDepthwiseConvolutionSupported(const TensorInfo& input, const Optional& biases, Optional reasonIfUnsupported) const { - if (!IS_QUANT_MULTIPLIER_SUPPORTED(input, output, weights)) - { - return false; - } - FORWARD_WORKLOAD_VALIDATE_FUNC(NeonDepthwiseConvolutionWorkloadValidate, reasonIfUnsupported, input, @@ -386,11 +368,6 @@ bool NeonLayerSupport::IsDilatedDepthwiseConvolutionSupported(const TensorInfo& const Optional& biases, Optional reasonIfUnsupported) const { - if (!IS_QUANT_MULTIPLIER_SUPPORTED(input, output, weights)) - { - return false; - } - FORWARD_WORKLOAD_VALIDATE_FUNC(NeonDepthwiseConvolutionWorkloadValidate, reasonIfUnsupported, input, @@ -841,11 +818,6 @@ bool NeonLayerSupport::IsTransposeConvolution2dSupported(const TensorInfo& input const Optional& biases, Optional reasonIfUnsupported) const { - if (!IS_QUANT_MULTIPLIER_SUPPORTED(input, output, weights)) - { - return false; - } - FORWARD_WORKLOAD_VALIDATE_FUNC(NeonTransposeConvolution2dWorkloadValidate, reasonIfUnsupported, input, -- cgit v1.2.1