From 6a468ef0ff6c8611a6d3d6dbf121d12007346d48 Mon Sep 17 00:00:00 2001 From: Georgios Pinitas Date: Tue, 4 Dec 2018 13:46:48 +0000 Subject: COMPMID-1820: (Nightly) NEON/DepthConvertLayer/F16_to_F32 fails -Removes shift from depth conversion tests. -Changes Cast tolerance between float conversions to zero Change-Id: I6c456f7d910eb3c02069f1e4d5df7b257d6d784e Reviewed-on: https://review.mlplatform.org/341 Reviewed-by: Anthony Barbier Tested-by: Arm Jenkins --- tests/validation/CL/Cast.cpp | 4 +-- tests/validation/NEON/DepthConvertLayer.cpp | 33 ++++++++++++------------ tests/validation/reference/DepthConvertLayer.cpp | 18 ++++++++++--- 3 files changed, 33 insertions(+), 22 deletions(-) (limited to 'tests') diff --git a/tests/validation/CL/Cast.cpp b/tests/validation/CL/Cast.cpp index 107edcd11e..854290db9d 100644 --- a/tests/validation/CL/Cast.cpp +++ b/tests/validation/CL/Cast.cpp @@ -226,7 +226,7 @@ CAST_SUITE(F16_to_U16, DataType::F16, DataType::U16, CLCastToU16Fixture, C CAST_SUITE(F16_to_S16, DataType::F16, DataType::S16, CLCastToS16Fixture, CastF16toS16Dataset, one_tolerance) CAST_SUITE(F16_to_U32, DataType::F16, DataType::U32, CLCastToU32Fixture, CastF16toU32Dataset, one_tolerance) CAST_SUITE(F16_to_S32, DataType::F16, DataType::S32, CLCastToS32Fixture, CastF16toS32Dataset, one_tolerance) -CAST_SUITE(F16_to_F32, DataType::F16, DataType::F32, CLCastToF32Fixture, CastF16toF32Dataset, one_tolerance) +CAST_SUITE(F16_to_F32, DataType::F16, DataType::F32, CLCastToF32Fixture, CastF16toF32Dataset, zero_tolerance) // F32 CAST_SUITE(F32_to_U8, DataType::F32, DataType::U8, CLCastToU8Fixture, CastF32toU8Dataset, one_tolerance) @@ -235,7 +235,7 @@ CAST_SUITE(F32_to_U16, DataType::F32, DataType::U16, CLCastToU16Fixture, CAST_SUITE(F32_to_S16, DataType::F32, DataType::S16, CLCastToS16Fixture, CastF32toS16Dataset, one_tolerance) CAST_SUITE(F32_to_U32, DataType::F32, DataType::U32, CLCastToU32Fixture, CastF32toU32Dataset, one_tolerance) CAST_SUITE(F32_to_S32, DataType::F32, DataType::S32, CLCastToS32Fixture, CastF32toS32Dataset, one_tolerance) -CAST_SUITE(F32_to_F16, DataType::F32, DataType::F16, CLCastToF16Fixture, CastF32toF16Dataset, one_tolerance) +CAST_SUITE(F32_to_F16, DataType::F32, DataType::F16, CLCastToF16Fixture, CastF32toF16Dataset, zero_tolerance) TEST_SUITE_END() // Cast TEST_SUITE_END() // CL diff --git a/tests/validation/NEON/DepthConvertLayer.cpp b/tests/validation/NEON/DepthConvertLayer.cpp index 40700f85bb..133ff4f735 100644 --- a/tests/validation/NEON/DepthConvertLayer.cpp +++ b/tests/validation/NEON/DepthConvertLayer.cpp @@ -44,16 +44,17 @@ namespace validation namespace { /** Input data sets **/ -const auto DepthConvertLayerU8toU16Dataset = combine(framework::dataset::make("DataType", DataType::U8), framework::dataset::make("DataType", DataType::U16)); -const auto DepthConvertLayerU8toS16Dataset = combine(framework::dataset::make("DataType", DataType::U8), framework::dataset::make("DataType", DataType::S16)); -const auto DepthConvertLayerU8toS32Dataset = combine(framework::dataset::make("DataType", DataType::U8), framework::dataset::make("DataType", DataType::S32)); -const auto DepthConvertLayerU16toU8Dataset = combine(framework::dataset::make("DataType", DataType::U16), framework::dataset::make("DataType", DataType::U8)); -const auto DepthConvertLayerU16toU32Dataset = combine(framework::dataset::make("DataType", DataType::U16), framework::dataset::make("DataType", DataType::U32)); -const auto DepthConvertLayerS16toU8Dataset = combine(framework::dataset::make("DataType", DataType::S16), framework::dataset::make("DataType", DataType::U8)); -const auto DepthConvertLayerS16toS32Dataset = combine(framework::dataset::make("DataType", DataType::S16), framework::dataset::make("DataType", DataType::S32)); -const auto DepthConvertLayerF16toF32Dataset = combine(framework::dataset::make("DataType", DataType::F16), framework::dataset::make("DataType", DataType::F32)); -const auto DepthConvertLayerF32toF16Dataset = combine(framework::dataset::make("DataType", DataType::F32), framework::dataset::make("DataType", DataType::F16)); -const auto DepthConvertLayerShiftDataset = framework::dataset::make("Shift", 0, 7); +const auto DepthConvertLayerU8toU16Dataset = combine(framework::dataset::make("DataType", DataType::U8), framework::dataset::make("DataType", DataType::U16)); +const auto DepthConvertLayerU8toS16Dataset = combine(framework::dataset::make("DataType", DataType::U8), framework::dataset::make("DataType", DataType::S16)); +const auto DepthConvertLayerU8toS32Dataset = combine(framework::dataset::make("DataType", DataType::U8), framework::dataset::make("DataType", DataType::S32)); +const auto DepthConvertLayerU16toU8Dataset = combine(framework::dataset::make("DataType", DataType::U16), framework::dataset::make("DataType", DataType::U8)); +const auto DepthConvertLayerU16toU32Dataset = combine(framework::dataset::make("DataType", DataType::U16), framework::dataset::make("DataType", DataType::U32)); +const auto DepthConvertLayerS16toU8Dataset = combine(framework::dataset::make("DataType", DataType::S16), framework::dataset::make("DataType", DataType::U8)); +const auto DepthConvertLayerS16toS32Dataset = combine(framework::dataset::make("DataType", DataType::S16), framework::dataset::make("DataType", DataType::S32)); +const auto DepthConvertLayerF16toF32Dataset = combine(framework::dataset::make("DataType", DataType::F16), framework::dataset::make("DataType", DataType::F32)); +const auto DepthConvertLayerF32toF16Dataset = combine(framework::dataset::make("DataType", DataType::F32), framework::dataset::make("DataType", DataType::F16)); +const auto DepthConvertLayerShiftDataset = framework::dataset::make("Shift", 0, 7); +const auto DepthConvertLayerZeroShiftDataset = framework::dataset::make("Shift", 0); } // namespace TEST_SUITE(NEON) @@ -351,7 +352,7 @@ TEST_SUITE_END() #ifdef __ARM_FEATURE_FP16_VECTOR_ARITHMETIC TEST_SUITE(F16_to_F32) DATA_TEST_CASE(Configuration, framework::DatasetMode::ALL, combine(combine(framework::dataset::concat(datasets::SmallShapes(), datasets::LargeShapes()), framework::dataset::make("ConvertPolicy", { ConvertPolicy::SATURATE, ConvertPolicy::WRAP })), - DepthConvertLayerShiftDataset), + DepthConvertLayerZeroShiftDataset), shape, policy, shift) { // Create tensors @@ -374,14 +375,14 @@ DATA_TEST_CASE(Configuration, framework::DatasetMode::ALL, combine(combine(frame FIXTURE_DATA_TEST_CASE(RunSmall, NEDepthConvertLayerToF32Fixture, framework::DatasetMode::PRECOMMIT, combine(combine(combine(datasets::SmallShapes(), DepthConvertLayerF16toF32Dataset), framework::dataset::make("ConvertPolicy", { ConvertPolicy::SATURATE, ConvertPolicy::WRAP })), - DepthConvertLayerShiftDataset)) + DepthConvertLayerZeroShiftDataset)) { // Validate output validate(Accessor(_target), _reference); } FIXTURE_DATA_TEST_CASE(RunLarge, NEDepthConvertLayerToF32Fixture, framework::DatasetMode::NIGHTLY, combine(combine(combine(datasets::LargeShapes(), DepthConvertLayerF16toF32Dataset), framework::dataset::make("ConvertPolicy", { ConvertPolicy::SATURATE, ConvertPolicy::WRAP })), - DepthConvertLayerShiftDataset)) + DepthConvertLayerZeroShiftDataset)) { // Validate output validate(Accessor(_target), _reference); @@ -390,7 +391,7 @@ TEST_SUITE_END() TEST_SUITE(F32_to_F16) DATA_TEST_CASE(Configuration, framework::DatasetMode::ALL, combine(combine(framework::dataset::concat(datasets::SmallShapes(), datasets::LargeShapes()), framework::dataset::make("ConvertPolicy", { ConvertPolicy::SATURATE, ConvertPolicy::WRAP })), - DepthConvertLayerShiftDataset), + DepthConvertLayerZeroShiftDataset), shape, policy, shift) { // Create tensors @@ -413,14 +414,14 @@ DATA_TEST_CASE(Configuration, framework::DatasetMode::ALL, combine(combine(frame FIXTURE_DATA_TEST_CASE(RunSmall, NEDepthConvertLayerToF16Fixture, framework::DatasetMode::PRECOMMIT, combine(combine(combine(datasets::SmallShapes(), DepthConvertLayerF32toF16Dataset), framework::dataset::make("ConvertPolicy", { ConvertPolicy::SATURATE, ConvertPolicy::WRAP })), - DepthConvertLayerShiftDataset)) + DepthConvertLayerZeroShiftDataset)) { // Validate output validate(Accessor(_target), _reference); } FIXTURE_DATA_TEST_CASE(RunLarge, NEDepthConvertLayerToF16Fixture, framework::DatasetMode::NIGHTLY, combine(combine(combine(datasets::LargeShapes(), DepthConvertLayerF32toF16Dataset), framework::dataset::make("ConvertPolicy", { ConvertPolicy::SATURATE, ConvertPolicy::WRAP })), - DepthConvertLayerShiftDataset)) + DepthConvertLayerZeroShiftDataset)) { // Validate output validate(Accessor(_target), _reference); diff --git a/tests/validation/reference/DepthConvertLayer.cpp b/tests/validation/reference/DepthConvertLayer.cpp index 4d5b97b478..c1fd9c51f7 100644 --- a/tests/validation/reference/DepthConvertLayer.cpp +++ b/tests/validation/reference/DepthConvertLayer.cpp @@ -70,11 +70,21 @@ SimpleTensor depth_convert(const SimpleTensor &src, DataType dt_out, Con ARM_COMPUTE_ERROR_ON(shift != 0); ARM_COMPUTE_UNUSED(policy, shift); - // Always saturate on floats - for(int i = 0; i < src.num_elements(); ++i) + if(!is_floating_point::value) { - T1 val = utils::rounding::round_half_away_from_zero(src[i]); - result[i] = utils::cast::saturate_cast(val); + // Always saturate on floats + for(int i = 0; i < src.num_elements(); ++i) + { + T1 val = utils::rounding::round_half_away_from_zero(src[i]); + result[i] = utils::cast::saturate_cast(val); + } + } + else + { + for(int i = 0; i < src.num_elements(); ++i) + { + result[i] = static_cast(src[i]); + } } return result; } -- cgit v1.2.1