diff options
author | Giuseppe Rossini <giuseppe.rossini@arm.com> | 2020-01-16 16:38:56 +0000 |
---|---|---|
committer | Giuseppe Rossini <giuseppe.rossini@arm.com> | 2020-01-16 19:34:52 +0000 |
commit | 0a958cbb48816a074303ae218a90414fb619efed (patch) | |
tree | 7ddd35a9d197ae20c9202ca68a47233f61771c8d /src/runtime/CL | |
parent | 74a16960f3cf1b8a93a70c349a8fc05fe45d4b97 (diff) | |
download | ComputeLibrary-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')
-rw-r--r-- | src/runtime/CL/functions/CLGEMMDeconvolutionLayer.cpp | 13 |
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 { |