diff options
author | Michele Di Giorgio <michele.digiorgio@arm.com> | 2019-10-29 10:58:13 +0000 |
---|---|---|
committer | Michele Di Giorgio <michele.digiorgio@arm.com> | 2019-12-20 14:05:24 +0000 |
commit | f29d1b7d8bf2d1619554eb3443556b44d4aa1a4c (patch) | |
tree | 0a427f7fda2131f39e055f27b97f0a612aff990c /src/runtime/NEON/functions/NEGEMMLowpMatrixMultiplyCore.cpp | |
parent | 748a7c81245ae81d04607b3a762cf65cd39026f2 (diff) | |
download | ComputeLibrary-f29d1b7d8bf2d1619554eb3443556b44d4aa1a4c.tar.gz |
COMPMID-2608: Enable quantization with multiplier greater than 1 on NEON
Change-Id: Ib2b0c9ac88fc2b645f478c9981f71ee28f2c77fd
Signed-off-by: Michele Di Giorgio <michele.digiorgio@arm.com>
Reviewed-on: https://review.mlplatform.org/c/2425
Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
Reviewed-by: Georgios Pinitas <georgios.pinitas@arm.com>
Tested-by: Arm Jenkins <bsgcomp@arm.com>
Diffstat (limited to 'src/runtime/NEON/functions/NEGEMMLowpMatrixMultiplyCore.cpp')
-rw-r--r-- | src/runtime/NEON/functions/NEGEMMLowpMatrixMultiplyCore.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/runtime/NEON/functions/NEGEMMLowpMatrixMultiplyCore.cpp b/src/runtime/NEON/functions/NEGEMMLowpMatrixMultiplyCore.cpp index e36cb3d399..440f043527 100644 --- a/src/runtime/NEON/functions/NEGEMMLowpMatrixMultiplyCore.cpp +++ b/src/runtime/NEON/functions/NEGEMMLowpMatrixMultiplyCore.cpp @@ -344,6 +344,19 @@ Status NEGEMMLowpMatrixMultiplyCore::validate(const ITensorInfo *a, const ITenso { run_optimised = bool(NEGEMMAssemblyDispatch::validate(a_to_use, b, c, output, gemm_info)); run_optimised_requantized = run_optimised; + + const UniformQuantizationInfo a_qinfo = a_to_use->quantization_info().uniform(); + const QuantizationInfo b_qinfo = b->quantization_info(); + const UniformQuantizationInfo output_qinfo = output->quantization_info().uniform(); + for(auto const s : b_qinfo.scale()) + { + const float fmultipler = a_qinfo.scale * s / output_qinfo.scale; + if(fmultipler > 1.f) + { + run_optimised_requantized = false; + break; + } + } } else { |