diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/benchmark/CL/Magnitude.cpp | 12 | ||||
-rw-r--r-- | tests/benchmark/NEON/Magnitude.cpp | 24 | ||||
-rw-r--r-- | tests/benchmark/fixtures/MagnitudeFixture.h | 4 | ||||
-rw-r--r-- | tests/validation/CL/Magnitude.cpp | 22 | ||||
-rw-r--r-- | tests/validation/NEON/GEMM.cpp | 12 | ||||
-rw-r--r-- | tests/validation/NEON/Magnitude.cpp | 35 | ||||
-rw-r--r-- | tests/validation/fixtures/MagnitudeFixture.h | 10 |
7 files changed, 40 insertions, 79 deletions
diff --git a/tests/benchmark/CL/Magnitude.cpp b/tests/benchmark/CL/Magnitude.cpp index 5e7508341a..c2bb590476 100644 --- a/tests/benchmark/CL/Magnitude.cpp +++ b/tests/benchmark/CL/Magnitude.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 ARM Limited. + * Copyright (c) 2017-2018 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -47,12 +47,10 @@ using CLMagnitudeFixture = MagnitudeFixture<CLTensor, CLMagnitude, CLAccessor>; TEST_SUITE(CL) TEST_SUITE(Magnitude) -REGISTER_FIXTURE_DATA_TEST_CASE(RunSmall, CLMagnitudeFixture, framework::DatasetMode::PRECOMMIT, combine(combine(combine(datasets::SmallImageShapes(), framework::dataset::make("Format", { Format::S16, Format::S32 })), - magnitude_types), - framework::dataset::make("UseFP16", { false }))); -REGISTER_FIXTURE_DATA_TEST_CASE(RunLarge, CLMagnitudeFixture, framework::DatasetMode::NIGHTLY, combine(combine(combine(datasets::LargeImageShapes(), framework::dataset::make("Format", { Format::S16, Format::S32 })), - magnitude_types), - framework::dataset::make("UseFP16", { false }))); +REGISTER_FIXTURE_DATA_TEST_CASE(RunSmall, CLMagnitudeFixture, framework::DatasetMode::PRECOMMIT, combine(combine(datasets::SmallImageShapes(), framework::dataset::make("Format", { Format::S16, Format::S32 })), + magnitude_types)); +REGISTER_FIXTURE_DATA_TEST_CASE(RunLarge, CLMagnitudeFixture, framework::DatasetMode::NIGHTLY, combine(combine(datasets::LargeImageShapes(), framework::dataset::make("Format", { Format::S16, Format::S32 })), + magnitude_types)); TEST_SUITE_END() // Magnitude TEST_SUITE_END() // CL } // namespace benchmark diff --git a/tests/benchmark/NEON/Magnitude.cpp b/tests/benchmark/NEON/Magnitude.cpp index e2b1210453..d671b8e005 100644 --- a/tests/benchmark/NEON/Magnitude.cpp +++ b/tests/benchmark/NEON/Magnitude.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 ARM Limited. + * Copyright (c) 2017-2018 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -47,25 +47,11 @@ using NEMagnitudeFixture = MagnitudeFixture<Tensor, NEMagnitude, Accessor>; TEST_SUITE(NEON) TEST_SUITE(Magnitude) - -#ifdef __ARM_FEATURE_FP16_VECTOR_ARITHMETIC -TEST_SUITE(FP16) -REGISTER_FIXTURE_DATA_TEST_CASE(RunSmall, NEMagnitudeFixture, framework::DatasetMode::PRECOMMIT, combine(combine(combine(datasets::SmallImageShapes(), framework::dataset::make("Format", { Format::S16 })), - magnitude_types), - framework::dataset::make("UseFP16", { true }))); -REGISTER_FIXTURE_DATA_TEST_CASE(RunLarge, NEMagnitudeFixture, framework::DatasetMode::NIGHTLY, combine(combine(combine(datasets::LargeImageShapes(), framework::dataset::make("Format", { Format::S16 })), - magnitude_types), - framework::dataset::make("UseFP16", { true }))); -TEST_SUITE_END() // FP16 -#endif // __ARM_FEATURE_FP16_VECTOR_ARITHMETIC - TEST_SUITE(S16) -REGISTER_FIXTURE_DATA_TEST_CASE(RunSmall, NEMagnitudeFixture, framework::DatasetMode::PRECOMMIT, combine(combine(combine(datasets::SmallImageShapes(), framework::dataset::make("Format", { Format::S16 })), - magnitude_types), - framework::dataset::make("UseFP16", { false }))); -REGISTER_FIXTURE_DATA_TEST_CASE(RunLarge, NEMagnitudeFixture, framework::DatasetMode::NIGHTLY, combine(combine(combine(datasets::LargeImageShapes(), framework::dataset::make("Format", { Format::S16 })), - magnitude_types), - framework::dataset::make("UseFP16", { false }))); +REGISTER_FIXTURE_DATA_TEST_CASE(RunSmall, NEMagnitudeFixture, framework::DatasetMode::PRECOMMIT, combine(combine(datasets::SmallImageShapes(), framework::dataset::make("Format", { Format::S16 })), + magnitude_types)); +REGISTER_FIXTURE_DATA_TEST_CASE(RunLarge, NEMagnitudeFixture, framework::DatasetMode::NIGHTLY, combine(combine(datasets::LargeImageShapes(), framework::dataset::make("Format", { Format::S16 })), + magnitude_types)); TEST_SUITE_END() // S16 TEST_SUITE_END() // Magnitude TEST_SUITE_END() // NEON diff --git a/tests/benchmark/fixtures/MagnitudeFixture.h b/tests/benchmark/fixtures/MagnitudeFixture.h index f75540c66f..a1b8054529 100644 --- a/tests/benchmark/fixtures/MagnitudeFixture.h +++ b/tests/benchmark/fixtures/MagnitudeFixture.h @@ -41,7 +41,7 @@ class MagnitudeFixture : public framework::Fixture { public: template <typename...> - void setup(const TensorShape &shape, Format format, MagnitudeType magnitude_type, bool use_fp16) + void setup(const TensorShape &shape, Format format, MagnitudeType magnitude_type) { // Create tensors src1 = create_tensor<TensorType>(shape, format); @@ -49,7 +49,7 @@ public: dst = create_tensor<TensorType>(shape, format); // Create and configure function - magnitude_func.configure(&src1, &src2, &dst, magnitude_type, use_fp16); + magnitude_func.configure(&src1, &src2, &dst, magnitude_type); // Allocate tensors src1.allocator()->allocate(); diff --git a/tests/validation/CL/Magnitude.cpp b/tests/validation/CL/Magnitude.cpp index b002239e01..7c517a44bb 100644 --- a/tests/validation/CL/Magnitude.cpp +++ b/tests/validation/CL/Magnitude.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 ARM Limited. + * Copyright (c) 2017-2018 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -81,17 +81,15 @@ template <typename T> using CLMagnitudeFixture = MagnitudeValidationFixture<CLTensor, CLAccessor, CLMagnitude, T>; TEST_SUITE(S16) -FIXTURE_DATA_TEST_CASE(RunSmall, CLMagnitudeFixture<int16_t>, framework::DatasetMode::PRECOMMIT, combine(combine(combine(datasets::Small2DShapes(), framework::dataset::make("Format", Format::S16)), - framework::dataset::make("MagnitudeType", { MagnitudeType::L1NORM, MagnitudeType::L2NORM })), - framework::dataset::make("UseFP16", false))) +FIXTURE_DATA_TEST_CASE(RunSmall, CLMagnitudeFixture<int16_t>, framework::DatasetMode::PRECOMMIT, combine(combine(datasets::Small2DShapes(), framework::dataset::make("Format", Format::S16)), + framework::dataset::make("MagnitudeType", { MagnitudeType::L1NORM, MagnitudeType::L2NORM }))) { // Validate output validate(CLAccessor(_target), _reference, tolerance<int16_t>(_magnitude_type)); } -FIXTURE_DATA_TEST_CASE(RunLarge, CLMagnitudeFixture<int16_t>, framework::DatasetMode::NIGHTLY, combine(combine(combine(datasets::Large2DShapes(), framework::dataset::make("Format", Format::S16)), - framework::dataset::make("MagnitudeType", { MagnitudeType::L1NORM, MagnitudeType::L2NORM })), - framework::dataset::make("UseFP16", false))) +FIXTURE_DATA_TEST_CASE(RunLarge, CLMagnitudeFixture<int16_t>, framework::DatasetMode::NIGHTLY, combine(combine(datasets::Large2DShapes(), framework::dataset::make("Format", Format::S16)), + framework::dataset::make("MagnitudeType", { MagnitudeType::L1NORM, MagnitudeType::L2NORM }))) { // Validate output validate(CLAccessor(_target), _reference, tolerance<int16_t>(_magnitude_type)); @@ -99,17 +97,15 @@ FIXTURE_DATA_TEST_CASE(RunLarge, CLMagnitudeFixture<int16_t>, framework::Dataset TEST_SUITE_END() // S16 TEST_SUITE(S32) -FIXTURE_DATA_TEST_CASE(RunSmall, CLMagnitudeFixture<int32_t>, framework::DatasetMode::PRECOMMIT, combine(combine(combine(datasets::Small2DShapes(), framework::dataset::make("Format", Format::S32)), - framework::dataset::make("MagnitudeType", { MagnitudeType::L1NORM, MagnitudeType::L2NORM })), - framework::dataset::make("UseFP16", false))) +FIXTURE_DATA_TEST_CASE(RunSmall, CLMagnitudeFixture<int32_t>, framework::DatasetMode::PRECOMMIT, combine(combine(datasets::Small2DShapes(), framework::dataset::make("Format", Format::S32)), + framework::dataset::make("MagnitudeType", { MagnitudeType::L1NORM, MagnitudeType::L2NORM }))) { // Validate output validate(CLAccessor(_target), _reference, tolerance<int32_t>(_magnitude_type)); } -FIXTURE_DATA_TEST_CASE(RunLarge, CLMagnitudeFixture<int32_t>, framework::DatasetMode::NIGHTLY, combine(combine(combine(datasets::Large2DShapes(), framework::dataset::make("Format", Format::S32)), - framework::dataset::make("MagnitudeType", { MagnitudeType::L1NORM, MagnitudeType::L2NORM })), - framework::dataset::make("UseFP16", false))) +FIXTURE_DATA_TEST_CASE(RunLarge, CLMagnitudeFixture<int32_t>, framework::DatasetMode::NIGHTLY, combine(combine(datasets::Large2DShapes(), framework::dataset::make("Format", Format::S32)), + framework::dataset::make("MagnitudeType", { MagnitudeType::L1NORM, MagnitudeType::L2NORM }))) { // Validate output validate(CLAccessor(_target), _reference, tolerance<int32_t>(_magnitude_type)); diff --git a/tests/validation/NEON/GEMM.cpp b/tests/validation/NEON/GEMM.cpp index 9c64131a61..ded5ec68c4 100644 --- a/tests/validation/NEON/GEMM.cpp +++ b/tests/validation/NEON/GEMM.cpp @@ -49,8 +49,12 @@ namespace validation { namespace { -constexpr AbsoluteTolerance<float> tolerance_f(0.001f); /**< Tolerance value for comparing reference's output against implementation's output for floating point data types */ - +constexpr AbsoluteTolerance<float> tolerance_f(0.001f); /**< Tolerance value for comparing reference's output against implementation's output for FP32 data types */ +#ifdef __ARM_FEATURE_FP16_VECTOR_ARITHMETIC +RelativeTolerance<half_float::half> rel_tolerance_f16(half(0.2)); /**< Relative tolerance value for comparing reference's output against implementation's output for FP16 data types */ +const AbsoluteTolerance<float> abs_tolerance_f16(0.2f); /**< Absolute tolerance value for comparing reference's output against implementation's output for FP16 data types */ +constexpr float tolerance_num = 0.07f; /**< Tolerance number for FP16 data types */ +#endif /* __ARM_FEATURE_FP16_VECTOR_ARITHMETIC */ /** CNN data types */ const auto CNNDataTypes = framework::dataset::make("DataType", { @@ -125,13 +129,13 @@ TEST_SUITE(FP16) FIXTURE_DATA_TEST_CASE(RunSmall, NEGEMMFixture<half>, framework::DatasetMode::PRECOMMIT, combine(datasets::SmallGEMMDataset(), framework::dataset::make("DataType", DataType::F16))) { // Validate output - validate(Accessor(_target), _reference, tolerance_f); + validate(Accessor(_target), _reference, rel_tolerance_f16, tolerance_num, abs_tolerance_f16); } FIXTURE_DATA_TEST_CASE(RunLarge, NEGEMMFixture<half>, framework::DatasetMode::NIGHTLY, combine(datasets::LargeGEMMDataset(), framework::dataset::make("DataType", DataType::F16))) { // Validate output - validate(Accessor(_target), _reference, tolerance_f); + validate(Accessor(_target), _reference, rel_tolerance_f16, tolerance_num, abs_tolerance_f16); } TEST_SUITE_END() #endif /* __ARM_FEATURE_FP16_VECTOR_ARITHMETIC */ diff --git a/tests/validation/NEON/Magnitude.cpp b/tests/validation/NEON/Magnitude.cpp index 3b7562b61c..e1549a54b2 100644 --- a/tests/validation/NEON/Magnitude.cpp +++ b/tests/validation/NEON/Magnitude.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 ARM Limited. + * Copyright (c) 2017-2018 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -44,15 +44,6 @@ AbsoluteTolerance<T> tolerance(MagnitudeType magnitude_type) { return AbsoluteTolerance<T>((MagnitudeType::L1NORM == magnitude_type) ? 0 : 1); } - -#ifdef __ARM_FEATURE_FP16_VECTOR_ARITHMETIC -template <> -AbsoluteTolerance<half_float::half> tolerance(MagnitudeType magnitude_type) -{ - return AbsoluteTolerance<half_float::half>((MagnitudeType::L1NORM == magnitude_type) ? half(0.0) : half(1.0)); -} -#endif /* __ARM_FEATURE_FP16_VECTOR_ARITHMETIC */ - } // namespace TEST_SUITE(NEON) @@ -88,36 +79,22 @@ template <typename T> using NEMagnitudeFixture = MagnitudeValidationFixture<Tensor, Accessor, NEMagnitude, T>; TEST_SUITE(S16) -FIXTURE_DATA_TEST_CASE(RunSmall, NEMagnitudeFixture<int16_t>, framework::DatasetMode::PRECOMMIT, combine(combine(combine(datasets::Small2DShapes(), framework::dataset::make("Format", Format::S16)), - framework::dataset::make("MagnitudeType", { MagnitudeType::L1NORM, MagnitudeType::L2NORM })), - framework::dataset::make("UseFP16", false))) +FIXTURE_DATA_TEST_CASE(RunSmall, NEMagnitudeFixture<int16_t>, framework::DatasetMode::PRECOMMIT, combine(combine(datasets::Small2DShapes(), framework::dataset::make("Format", Format::S16)), + framework::dataset::make("MagnitudeType", { MagnitudeType::L1NORM, MagnitudeType::L2NORM }))) + { // Validate output validate(Accessor(_target), _reference, tolerance<int16_t>(_magnitude_type)); } -FIXTURE_DATA_TEST_CASE(RunLarge, NEMagnitudeFixture<int16_t>, framework::DatasetMode::NIGHTLY, combine(combine(combine(datasets::Large2DShapes(), framework::dataset::make("Format", Format::S16)), - framework::dataset::make("MagnitudeType", { MagnitudeType::L1NORM, MagnitudeType::L2NORM })), - framework::dataset::make("UseFP16", false))) +FIXTURE_DATA_TEST_CASE(RunLarge, NEMagnitudeFixture<int16_t>, framework::DatasetMode::NIGHTLY, combine(combine(datasets::Large2DShapes(), framework::dataset::make("Format", Format::S16)), + framework::dataset::make("MagnitudeType", { MagnitudeType::L1NORM, MagnitudeType::L2NORM }))) { // Validate output validate(Accessor(_target), _reference, tolerance<int16_t>(_magnitude_type)); } TEST_SUITE_END() // S16 -#ifdef __ARM_FEATURE_FP16_VECTOR_ARITHMETIC -TEST_SUITE(F16) -FIXTURE_DATA_TEST_CASE(RunSmall, NEMagnitudeFixture<half_float::half>, framework::DatasetMode::PRECOMMIT, combine(combine(combine(datasets::Small2DShapes(), framework::dataset::make("Format", - Format::S16)), - framework::dataset::make("MagnitudeType", { MagnitudeType::L1NORM, MagnitudeType::L2NORM })), - framework::dataset::make("UseFP16", true))) -{ - // Validate output - validate(Accessor(_target), _reference, tolerance<half_float::half>(_magnitude_type)); -} -TEST_SUITE_END() // F16 -#endif /* __ARM_FEATURE_FP16_VECTOR_ARITHMETIC */ - TEST_SUITE_END() TEST_SUITE_END() } // namespace validation diff --git a/tests/validation/fixtures/MagnitudeFixture.h b/tests/validation/fixtures/MagnitudeFixture.h index 1c529070a8..0930fb4117 100644 --- a/tests/validation/fixtures/MagnitudeFixture.h +++ b/tests/validation/fixtures/MagnitudeFixture.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 ARM Limited. + * Copyright (c) 2017-2018 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -43,9 +43,9 @@ class MagnitudeValidationFixture : public framework::Fixture { public: template <typename...> - void setup(TensorShape shape, Format format, MagnitudeType magnitude_type, bool use_fp16) + void setup(TensorShape shape, Format format, MagnitudeType magnitude_type) { - _target = compute_target(shape, format, magnitude_type, use_fp16); + _target = compute_target(shape, format, magnitude_type); _reference = compute_reference(shape, format, magnitude_type); _magnitude_type = magnitude_type; } @@ -57,7 +57,7 @@ protected: library->fill_tensor_uniform(tensor, seed_offset); } - TensorType compute_target(const TensorShape &shape, Format format, MagnitudeType magnitude_type, bool use_fp16) + TensorType compute_target(const TensorShape &shape, Format format, MagnitudeType magnitude_type) { DataType data_type = data_type_from_format(format); @@ -73,7 +73,7 @@ protected: // Create and configure function FunctionType magnitude; - magnitude.configure(&src1, &src2, &dst, magnitude_type, use_fp16); + magnitude.configure(&src1, &src2, &dst, magnitude_type); ARM_COMPUTE_EXPECT(src1.info()->is_resizable(), framework::LogLevel::ERRORS); ARM_COMPUTE_EXPECT(src2.info()->is_resizable(), framework::LogLevel::ERRORS); |