diff options
author | Ryan OShea <Ryan.OShea2@arm.com> | 2020-01-29 16:19:55 +0000 |
---|---|---|
committer | Ryan O'Shea <ryan.oshea2@arm.com> | 2020-01-29 18:16:31 +0000 |
commit | 412424c7f3553d7469c17deb2a68d07d15a5602b (patch) | |
tree | 32e75ddcbe85131a5186eb07b8315d4b2a88f002 /src/backends | |
parent | e49755b914a2c8f6f8b836adfcc61bf8f9a5b3a3 (diff) | |
download | armnn-412424c7f3553d7469c17deb2a68d07d15a5602b.tar.gz |
IVGCVSW-4149 Enable quantisation multiplier > 1 in all convolutions
Signed-off-by: Ryan OShea <Ryan.OShea2@arm.com>
Change-Id: I9652844a868ce8e05c0433c051e7079cf203c422
Diffstat (limited to 'src/backends')
-rw-r--r-- | src/backends/aclCommon/ArmComputeTensorUtils.cpp | 27 | ||||
-rw-r--r-- | src/backends/aclCommon/ArmComputeTensorUtils.hpp | 4 | ||||
-rw-r--r-- | src/backends/cl/ClLayerSupport.cpp | 28 | ||||
-rw-r--r-- | src/backends/neon/NeonLayerSupport.cpp | 28 |
4 files changed, 0 insertions, 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<std::string&> reasonIfUnsupported, &FalseFunc<>, std::forward<Params>(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<TensorInfo>& biases, Optional<std::string&> 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<TensorInfo>& biases, Optional<std::string&> 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<TensorInfo>& biases, Optional<std::string&> 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<TensorInfo>& biases, Optional<std::string&> 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<std::string&> 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<TensorInfo>& biases, Optional<std::string&> 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<TensorInfo>& biases, Optional<std::string&> 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<TensorInfo>& biases, Optional<std::string&> 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<TensorInfo>& biases, Optional<std::string&> reasonIfUnsupported) const { - if (!IS_QUANT_MULTIPLIER_SUPPORTED(input, output, weights)) - { - return false; - } - FORWARD_WORKLOAD_VALIDATE_FUNC(NeonTransposeConvolution2dWorkloadValidate, reasonIfUnsupported, input, |