From 710f664e41803bcb04403a1da27990d76faab6cf Mon Sep 17 00:00:00 2001 From: Aron Virginas-Tar Date: Wed, 27 Nov 2019 14:48:32 +0000 Subject: IVGCVSW-4148 Extend reporting of quant multiplier > 1 as unsupported on ACL to per-axis case Signed-off-by: Aron Virginas-Tar Change-Id: I66a8360b6d86e95325dee58927dcbe62ccf6ad58 --- src/backends/cl/ClLayerSupport.cpp | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) (limited to 'src/backends/cl') diff --git a/src/backends/cl/ClLayerSupport.cpp b/src/backends/cl/ClLayerSupport.cpp index 9a5c38381c..49312d6ea5 100644 --- a/src/backends/cl/ClLayerSupport.cpp +++ b/src/backends/cl/ClLayerSupport.cpp @@ -16,6 +16,7 @@ #if defined(ARMCOMPUTECL_ENABLED) #include +#include #include "workloads/ClAbsWorkload.hpp" #include "workloads/ClAdditionWorkload.hpp" #include "workloads/ClActivationWorkload.hpp" @@ -144,6 +145,13 @@ bool IsSupportedForDataTypeCl(Optional reasonIfUnsupported, 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, @@ -324,8 +332,7 @@ bool ClLayerSupport::IsConvolution2dSupported(const TensorInfo& input, const Optional& biases, Optional reasonIfUnsupported) const { - // Multiplier > 1.0f currently not supported in ACL - if ((input.GetQuantizationScale() * weights.GetQuantizationScale()) / output.GetQuantizationScale() > 1.0f) + if (!IS_QUANT_MULTIPLIER_SUPPORTED(input, output, weights)) { return false; } @@ -368,13 +375,7 @@ bool ClLayerSupport::IsDepthwiseConvolutionSupported(const TensorInfo& input, const Optional& biases, Optional reasonIfUnsupported) const { - if (weights.HasPerAxisQuantization()) - { - return false; - } - - // Multiplier > 1.0f currently not supported in ACL - if ((input.GetQuantizationScale() * weights.GetQuantizationScale()) / output.GetQuantizationScale() > 1.0f) + if (!IS_QUANT_MULTIPLIER_SUPPORTED(input, output, weights)) { return false; } @@ -395,8 +396,7 @@ bool ClLayerSupport::IsDilatedDepthwiseConvolutionSupported(const TensorInfo& in const Optional& biases, Optional reasonIfUnsupported) const { - // Multiplier > 1.0f currently not supported in ACL - if ((input.GetQuantizationScale() * weights.GetQuantizationScale()) / output.GetQuantizationScale() > 1.0f) + if (!IS_QUANT_MULTIPLIER_SUPPORTED(input, output, weights)) { return false; } @@ -814,8 +814,7 @@ bool ClLayerSupport::IsTransposeConvolution2dSupported(const TensorInfo& input, const Optional& biases, Optional reasonIfUnsupported) const { - // Multiplier > 1.0f currently not supported in ACL - if ((input.GetQuantizationScale() * weights.GetQuantizationScale()) / output.GetQuantizationScale() > 1.0f) + if (!IS_QUANT_MULTIPLIER_SUPPORTED(input, output, weights)) { return false; } -- cgit v1.2.1