diff options
author | Michele Di Giorgio <michele.digiorgio@arm.com> | 2020-09-08 12:08:12 +0100 |
---|---|---|
committer | Michele Di Giorgio <michele.digiorgio@arm.com> | 2020-09-09 12:25:32 +0000 |
commit | 5489394cdfe10afb469171cf521f26f923eeb2e2 (patch) | |
tree | db785e343822ebe3574ecd9d70ab07c108e7d9c1 /tests/validation/NEON | |
parent | fa269bb2f150b5f9f00cd8ad5c57ff02613cb628 (diff) | |
download | ComputeLibrary-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>
Diffstat (limited to 'tests/validation/NEON')
-rw-r--r-- | tests/validation/NEON/ReduceMean.cpp | 4 |
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 })); |