aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichele Di Giorgio <michele.digiorgio@arm.com>2020-09-08 12:08:12 +0100
committerMichele Di Giorgio <michele.digiorgio@arm.com>2020-09-09 12:25:32 +0000
commit5489394cdfe10afb469171cf521f26f923eeb2e2 (patch)
treedb785e343822ebe3574ecd9d70ab07c108e7d9c1
parentfa269bb2f150b5f9f00cd8ad5c57ff02613cb628 (diff)
downloadComputeLibrary-5489394cdfe10afb469171cf521f26f923eeb2e2.tar.gz
COMPMID-3774: Investigate NEReduceMean QASYMM8_SIGNED nightly failure
Tolerance issue due to requantization. The NEON implementation does all computations in float when input and output quantization info are different and reduction on multiple axes is required. On the other hand, the reference performs the first reduction in float, then requantizes and then performs the remaining reductions in the quantized domain using the output from the first redcution. This causes small discrepancies in few cases, hence increasing the tolerance. Change-Id: Ib862f599ce3924cbad651bab77227d52e15eff88 Signed-off-by: Michele Di Giorgio <michele.digiorgio@arm.com> Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/3937 Tested-by: Arm Jenkins <bsgcomp@arm.com> Reviewed-by: Georgios Pinitas <georgios.pinitas@arm.com> Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
-rw-r--r--tests/validation/NEON/ReduceMean.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/tests/validation/NEON/ReduceMean.cpp b/tests/validation/NEON/ReduceMean.cpp
index e5a5a175fb..1802b8a941 100644
--- a/tests/validation/NEON/ReduceMean.cpp
+++ b/tests/validation/NEON/ReduceMean.cpp
@@ -47,7 +47,11 @@ constexpr AbsoluteTolerance<float> tolerance_f32(0.001f); /**< Tolerance value f
constexpr AbsoluteTolerance<float> tolerance_f16(0.03f); /**< Tolerance value for comparing reference's output against implementation's output for 16-bit floating-point type */
#endif // __ARM_FEATURE_FP16_VECTOR_ARITHMETIC
constexpr AbsoluteTolerance<uint8_t> tolerance_u8(1); /**< Tolerance value for comparing reference's output against implementation's output for unsigned 8-bit asymmetric quantized type */
+#ifdef __aarch64__
constexpr AbsoluteTolerance<int8_t> tolerance_s8(1); /**< Tolerance value for comparing reference's output against implementation's output for signed 8-bit asymmetric quantized type */
+#else // __aarch64__
+constexpr AbsoluteTolerance<int8_t> tolerance_s8(2); /**< Tolerance value for comparing reference's output against implementation's output for signed 8-bit asymmetric quantized type */
+#endif // __aarch64__
const auto axis_keep = combine(framework::dataset::make("Axis", { Coordinates(0), Coordinates(1, 0), Coordinates(1, 2), Coordinates(0, 2), Coordinates(1, 3), Coordinates(0, 1, 2, 3) }),
framework::dataset::make("KeepDims", { true }));