aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGian Marco Iodice <gianmarco.iodice@arm.com>2019-08-21 17:01:53 +0100
committerMichele Di Giorgio <michele.digiorgio@arm.com>2019-08-21 17:22:14 +0000
commitec8cce82e1c2cdf07ea07a6ffb3a02470d3ab47f (patch)
tree1ecf15442c0f6e8c308bf6a7cb28575f791cdb9a /src
parent205eed8cf22d221fbee6442df73be9870879c9b5 (diff)
downloadComputeLibrary-ec8cce82e1c2cdf07ea07a6ffb3a02470d3ab47f.tar.gz
COMPMID-2602: FullyConnected VTS failure on CL and Neon TENSOR_QUANT8_ASYMM
Change-Id: I918d2b9e6d1297cf78c7e567b2a95406875f82ad Signed-off-by: Gian Marco Iodice <gianmarco.iodice@arm.com> Reviewed-on: https://review.mlplatform.org/c/1782 Reviewed-by: Georgios Pinitas <georgios.pinitas@arm.com> Comments-Addressed: Arm Jenkins <bsgcomp@arm.com> Tested-by: Arm Jenkins <bsgcomp@arm.com>
Diffstat (limited to 'src')
-rw-r--r--src/runtime/CL/functions/CLFullyConnectedLayer.cpp7
-rw-r--r--src/runtime/NEON/functions/NEFullyConnectedLayer.cpp7
2 files changed, 14 insertions, 0 deletions
diff --git a/src/runtime/CL/functions/CLFullyConnectedLayer.cpp b/src/runtime/CL/functions/CLFullyConnectedLayer.cpp
index 87d4c56a0e..c5da649e30 100644
--- a/src/runtime/CL/functions/CLFullyConnectedLayer.cpp
+++ b/src/runtime/CL/functions/CLFullyConnectedLayer.cpp
@@ -331,6 +331,13 @@ Status CLFullyConnectedLayer::validate(const ITensorInfo *input, const ITensorIn
// Validate output stage for asymmetric quantized types
if(is_quantized)
{
+ const UniformQuantizationInfo iq_info = input->quantization_info().uniform();
+ const UniformQuantizationInfo wq_info = weights->quantization_info().uniform();
+ const UniformQuantizationInfo oq_info = output->quantization_info().uniform();
+ const float multiplier = iq_info.scale * wq_info.scale / oq_info.scale;
+
+ ARM_COMPUTE_UNUSED(multiplier);
+ ARM_COMPUTE_RETURN_ERROR_ON(multiplier > 1.0f);
ARM_COMPUTE_RETURN_ON_ERROR(CLGEMMLowpQuantizeDownInt32ToUint8ScaleByFixedPoint::validate(&gemmlowp_output, biases, output));
}
diff --git a/src/runtime/NEON/functions/NEFullyConnectedLayer.cpp b/src/runtime/NEON/functions/NEFullyConnectedLayer.cpp
index 7a74a7ea90..12a5a1d724 100644
--- a/src/runtime/NEON/functions/NEFullyConnectedLayer.cpp
+++ b/src/runtime/NEON/functions/NEFullyConnectedLayer.cpp
@@ -328,6 +328,13 @@ Status NEFullyConnectedLayer::validate(const ITensorInfo *input, const ITensorIn
// Validate output stage for asymmetric quantized types
if(is_quantized)
{
+ const UniformQuantizationInfo iq_info = input->quantization_info().uniform();
+ const UniformQuantizationInfo wq_info = weights->quantization_info().uniform();
+ const UniformQuantizationInfo oq_info = output->quantization_info().uniform();
+ const float multiplier = iq_info.scale * wq_info.scale / oq_info.scale;
+
+ ARM_COMPUTE_UNUSED(multiplier);
+ ARM_COMPUTE_RETURN_ERROR_ON(multiplier > 1.0f);
ARM_COMPUTE_RETURN_ON_ERROR(NEGEMMLowpQuantizeDownInt32ToUint8ScaleByFixedPoint::validate(&gemmlowp_output, biases, output));
}