aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan OShea <Ryan.OShea2@arm.com>2020-01-29 16:19:55 +0000
committerRyan O'Shea <ryan.oshea2@arm.com>2020-01-29 18:16:31 +0000
commit412424c7f3553d7469c17deb2a68d07d15a5602b (patch)
tree32e75ddcbe85131a5186eb07b8315d4b2a88f002
parente49755b914a2c8f6f8b836adfcc61bf8f9a5b3a3 (diff)
downloadarmnn-412424c7f3553d7469c17deb2a68d07d15a5602b.tar.gz
IVGCVSW-4149 Enable quantisation multiplier > 1 in all convolutions
Signed-off-by: Ryan OShea <Ryan.OShea2@arm.com> Change-Id: I9652844a868ce8e05c0433c051e7079cf203c422
-rw-r--r--src/backends/aclCommon/ArmComputeTensorUtils.cpp27
-rw-r--r--src/backends/aclCommon/ArmComputeTensorUtils.hpp4
-rw-r--r--src/backends/cl/ClLayerSupport.cpp28
-rw-r--r--src/backends/neon/NeonLayerSupport.cpp28
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,