From 5489394cdfe10afb469171cf521f26f923eeb2e2 Mon Sep 17 00:00:00 2001 From: Michele Di Giorgio Date: Tue, 8 Sep 2020 12:08:12 +0100 Subject: 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 Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/3937 Tested-by: Arm Jenkins Reviewed-by: Georgios Pinitas Comments-Addressed: Arm Jenkins --- tests/validation/NEON/ReduceMean.cpp | 4 ++++ 1 file changed, 4 insertions(+) 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 tolerance_f32(0.001f); /**< Tolerance value f constexpr AbsoluteTolerance 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 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 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 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 })); -- cgit v1.2.1