From af7e60026f74a7cbb2156862f72508fd9147ea56 Mon Sep 17 00:00:00 2001 From: Pablo Tello Date: Mon, 8 Oct 2018 15:53:14 +0100 Subject: COMPMID-1628: NEWinograd mismatches in the nightly. Since this is floating point arithmetic the Winograd results will not be exactly the same as direct convolution. Changed to use relative tolerance for the nightly tests. Change-Id: I45c6d60a097c2d4fb53650a2a33eb29a3e51d7ec Reviewed-on: https://eu-gerrit-1.euhpc.arm.com/152324 Tested-by: bsgcomp Reviewed-by: Michele DiGiorgio --- tests/validation/NEON/ConvolutionLayer.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'tests/validation/NEON/ConvolutionLayer.cpp') diff --git a/tests/validation/NEON/ConvolutionLayer.cpp b/tests/validation/NEON/ConvolutionLayer.cpp index 72e67a9acc..d216d9db86 100644 --- a/tests/validation/NEON/ConvolutionLayer.cpp +++ b/tests/validation/NEON/ConvolutionLayer.cpp @@ -47,9 +47,10 @@ namespace validation { namespace { -RelativeTolerance rel_tolerance_f32(0.01f); /**< Relative tolerance for FP32 types */ -const AbsoluteTolerance abs_tolerance_f32(0.002f); /**< Absolute tolerance for FP32 types */ -const AbsoluteTolerance abs_tolerance_1xN_f32(0.0041f); /**< Absolute tolerance for FP32 types */ +const RelativeTolerance rel_tolerance_f32(0.01f); /**< Relative tolerance for FP32 types */ +const RelativeTolerance rel_tolerance_winograd_3x3_f32(0.05f); /**< Relative tolerance for FP32 types */ +const AbsoluteTolerance abs_tolerance_f32(0.002f); /**< Absolute tolerance for FP32 types */ +const AbsoluteTolerance abs_tolerance_1xN_f32(0.0041f); /**< Absolute tolerance for FP32 types */ #ifdef __ARM_FEATURE_FP16_VECTOR_ARITHMETIC const RelativeTolerance rel_tolerance_f16(half_float::half(0.2f)); /**< Relative tolerance value for FP16 types */ @@ -274,7 +275,8 @@ FIXTURE_DATA_TEST_CASE(RunLarge, NEWinogradConvolutionLayerFixture, frame { // Validate output - validate(Accessor(_target), _reference, abs_tolerance_f32); + // floating point arithmetic the Winograd results will not be exactly the same as direct convolution, especially for big shapes + validate(Accessor(_target), _reference, rel_tolerance_winograd_3x3_f32, 0.f, float(abs_tolerance_f32)); } TEST_SUITE_END() // Conv3x3 -- cgit v1.2.1