From 65cb8f6f8c96f9d289fc2fb6c595244d21f02b6c Mon Sep 17 00:00:00 2001 From: SiCong Li Date: Tue, 14 Feb 2023 11:08:04 +0000 Subject: Add absolute tolerance to f16 CLConv3D validation tests This fixes faulty mismatch issues. In addition, this aligns with the methodology used by f32, as well as that of cpu f16 tests Resolves COMPMID-5897 Change-Id: Id4e2088a9fc5444265c69444cfa90961dd84047e Signed-off-by: SiCong Li Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/9146 Reviewed-by: Jakub Sujak Reviewed-by: Gunes Bayir Comments-Addressed: Arm Jenkins Benchmark: Arm Jenkins Tested-by: Arm Jenkins --- tests/validation/CL/Convolution3D.cpp | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/tests/validation/CL/Convolution3D.cpp b/tests/validation/CL/Convolution3D.cpp index 9e4ca50547..ae9c47906f 100644 --- a/tests/validation/CL/Convolution3D.cpp +++ b/tests/validation/CL/Convolution3D.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021 Arm Limited. + * Copyright (c) 2021, 2023 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -38,11 +38,12 @@ namespace validation { namespace { -RelativeTolerance tolerance_fp16(half(0.2)); /**< Tolerance for floating point tests */ -RelativeTolerance tolerance_fp32(0.05f); /**< Tolerance for floating point tests */ -constexpr AbsoluteTolerance tolerance_qasymm8(1); /**< Tolerance for quantized tests */ -constexpr float abs_tolerance_f32(0.0001f); /**< Absolute tolerance for FP32 tests*/ -constexpr float tolerance_num = 0.07f; /**< Tolerance number */ +const RelativeTolerance rel_tolerance_fp16(half(0.2)); /**< Relative tolerance for FP16 tests */ +constexpr float abs_tolerance_fp16(0.02f); /**< Absolute tolerance for FP16 tests */ +constexpr RelativeTolerance rel_tolerance_fp32(0.05f); /**< Relative tolerance for FP32 tests */ +constexpr float abs_tolerance_fp32(0.0001f); /**< Absolute tolerance for FP32 tests*/ +constexpr AbsoluteTolerance abs_tolerance_qasymm8(1); /**< Absolute tolerance for quantized tests */ +constexpr float tolerance_num = 0.07f; /**< Tolerance number */ } // namespace TEST_SUITE(CL) @@ -193,7 +194,7 @@ FIXTURE_DATA_TEST_CASE(RunSmall, CLDirectConvolution3DFixture, framework:: framework::dataset::make("DataType", DataType::F16)), framework::dataset::make("DataLayout", DataLayout::NDHWC))) { - validate(CLAccessor(_target), _reference, tolerance_fp16, tolerance_num); + validate(CLAccessor(_target), _reference, rel_tolerance_fp16, tolerance_num, abs_tolerance_fp16); } TEST_SUITE_END() // FP16 @@ -221,7 +222,7 @@ FIXTURE_DATA_TEST_CASE(RunSmall, CLDirectConvolution3DFixture, framework: framework::dataset::make("DataType", DataType::F32)), framework::dataset::make("DataLayout", DataLayout::NDHWC))) { - validate(CLAccessor(_target), _reference, tolerance_fp32, 0.0, abs_tolerance_f32); + validate(CLAccessor(_target), _reference, rel_tolerance_fp32, 0.0, abs_tolerance_fp32); } // clang-format on @@ -254,7 +255,7 @@ FIXTURE_DATA_TEST_CASE(RunSmall, CLDirectConvolution3DQuantizedFixture, framework::dataset::make("WeightsQuantizationInfo", QuantizationInfo(0.3f, 20))), framework::dataset::make("DstQuantizationInfo", QuantizationInfo(0.2f, 5)))) { - validate(CLAccessor(_target), _reference, tolerance_qasymm8); + validate(CLAccessor(_target), _reference, abs_tolerance_qasymm8); } TEST_SUITE_END() // QASYMM8 @@ -285,7 +286,7 @@ FIXTURE_DATA_TEST_CASE(RunSmall, CLDirectConvolution3DQuantizedFixture, framework::dataset::make("WeightsQuantizationInfo", QuantizationInfo(0.3f, 20))), framework::dataset::make("DstQuantizationInfo", QuantizationInfo(0.2f, 5)))) { - validate(CLAccessor(_target), _reference, tolerance_qasymm8); + validate(CLAccessor(_target), _reference, abs_tolerance_qasymm8); } TEST_SUITE_END() // QASYMM8_SIGNED -- cgit v1.2.1