aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/CL/functions/CLGEMMDeconvolutionLayer.cpp
diff options
context:
space:
mode:
authorGiuseppe Rossini <giuseppe.rossini@arm.com>2020-01-16 16:38:56 +0000
committerGiuseppe Rossini <giuseppe.rossini@arm.com>2020-01-16 19:34:52 +0000
commit0a958cbb48816a074303ae218a90414fb619efed (patch)
tree7ddd35a9d197ae20c9202ca68a47233f61771c8d /src/runtime/CL/functions/CLGEMMDeconvolutionLayer.cpp
parent74a16960f3cf1b8a93a70c349a8fc05fe45d4b97 (diff)
downloadComputeLibrary-0a958cbb48816a074303ae218a90414fb619efed.tar.gz
COMPMID-3013: Transpose Convolution 2D VTS/CTS failures on CL
Change-Id: If19eec7f7a09e1008cc83ddcc673de145fca471d Signed-off-by: Giuseppe Rossini <giuseppe.rossini@arm.com> Reviewed-on: https://review.mlplatform.org/c/2599 Tested-by: Arm Jenkins <bsgcomp@arm.com> Reviewed-by: Michele Di Giorgio <michele.digiorgio@arm.com> Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
Diffstat (limited to 'src/runtime/CL/functions/CLGEMMDeconvolutionLayer.cpp')
-rw-r--r--src/runtime/CL/functions/CLGEMMDeconvolutionLayer.cpp13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/runtime/CL/functions/CLGEMMDeconvolutionLayer.cpp b/src/runtime/CL/functions/CLGEMMDeconvolutionLayer.cpp
index 604147a37a..14bda11f5f 100644
--- a/src/runtime/CL/functions/CLGEMMDeconvolutionLayer.cpp
+++ b/src/runtime/CL/functions/CLGEMMDeconvolutionLayer.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2019 ARM Limited.
+ * Copyright (c) 2019-2020 ARM Limited.
*
* SPDX-License-Identifier: MIT
*
@@ -239,7 +239,18 @@ void CLGEMMDeconvolutionLayer::configure(const ICLTensor *input, const ICLTensor
// Configure output stage for asymmetric quantized types
if(_is_quantized)
{
+ // gemmlowp adds the offsets (instead of subtracting them). Thus, we need to negate the original
+ // and restore them back to make it work properly.
+ QuantizationInfo iq_info = input->info()->quantization_info();
+ QuantizationInfo wq_info = weights->info()->quantization_info();
+
+ input_to_use->info()->set_quantization_info(QuantizationInfo(iq_info.uniform().scale, -iq_info.uniform().offset));
+ _reshaped_weights_t.info()->set_quantization_info(QuantizationInfo(wq_info.uniform().scale, -wq_info.uniform().offset));
+
_mm_gemmlowp.configure(input_to_use, &_reshaped_weights_t, nullptr, &_gemm_output, gemm_info);
+
+ input_to_use->info()->set_quantization_info(iq_info);
+ _reshaped_weights_t.info()->set_quantization_info(wq_info);
}
else
{