From 55c0c0c9559c08baed7f1c783404b83dff8c8e89 Mon Sep 17 00:00:00 2001 From: Sheri Zhang Date: Tue, 14 Apr 2020 21:58:37 +0100 Subject: COMPMID-3291: Test improvement for CLWeightsReshapeKernel Signed-off-by: Sheri Zhang Change-Id: I9956a3bdfa4ddbb205111ff2524ff40cf57644e0 Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/3052 Tested-by: Arm Jenkins Reviewed-by: Michele Di Giorgio Reviewed-by: Michalis Spyrou Comments-Addressed: Arm Jenkins --- tests/validation/CL/WeightsReshape.cpp | 125 ++++++++++++++++++--------------- 1 file changed, 69 insertions(+), 56 deletions(-) (limited to 'tests') diff --git a/tests/validation/CL/WeightsReshape.cpp b/tests/validation/CL/WeightsReshape.cpp index 47cb975527..ff7ed82d79 100644 --- a/tests/validation/CL/WeightsReshape.cpp +++ b/tests/validation/CL/WeightsReshape.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018-2019 ARM Limited. + * Copyright (c) 2018-2020 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -23,9 +23,8 @@ */ #include "arm_compute/core/CL/kernels/CLWeightsReshapeKernel.h" #include "arm_compute/core/Types.h" -#include "tests/CL/Helper.h" - #include "tests/CL/CLAccessor.h" +#include "tests/CL/Helper.h" #include "tests/datasets/ShapeDatasets.h" #include "tests/framework/Asserts.h" #include "tests/framework/Macros.h" @@ -44,87 +43,101 @@ TEST_SUITE(WeightsReshape) using CLWeightsReshape = CLSynthetizeFunction; -// *INDENT-OFF* -// clang-format off -DATA_TEST_CASE(Validate, framework::DatasetMode::ALL, zip(zip(zip( - framework::dataset::make("InputInfo", { TensorInfo(TensorShape(3U, 3U, 2U, 4U), 1, DataType::F32), // Mismatching data type - TensorInfo(TensorShape(3U, 3U, 2U, 4U), 1, DataType::QASYMM8), // Bias not supported with QASYMM8 - TensorInfo(TensorShape(3U, 3U, 2U, 4U), 1, DataType::F32), - }), - framework::dataset::make("BiasesInfo", { TensorInfo(TensorShape(4U), 1, DataType::F16), - TensorInfo(TensorShape(4U), 1, DataType::QASYMM8), - TensorInfo(TensorShape(4U), 1, DataType::F32), - })), - framework::dataset::make("OutputInfo", { TensorInfo(TensorShape(4U, 19U), 1, DataType::F16), - TensorInfo(TensorShape(4U, 19U), 1, DataType::QASYMM8), - TensorInfo(TensorShape(4U, 19U), 1, DataType::F32), - })), - framework::dataset::make("Expected", { false, false, true })), - input_info, biases_info, output_info, expected) +/** Validate tests + * + * A series of validation tests on configurations which according to the API specification + * the function should fail against. + * + * Checks performed in order: + * - Mismachting data type: bias need to has same data type as input + * - Mismachting data type: output need to has same data type as input + * - Bias only supports FP32/FP16 + * - num_groups != 1 is only supported for NCHW data layout + * - Bias' shape need to match input's shape. + */ +DATA_TEST_CASE(Validate, framework::DatasetMode::ALL, zip(zip(zip(zip( + framework::dataset::make("InputInfo", +{ + TensorInfo(TensorShape(3U, 3U, 2U, 4U), 1, DataType::F32), // Mismatching data type + TensorInfo(TensorShape(3U, 3U, 2U, 4U), 1, DataType::F32), // Mismatching data type + TensorInfo(TensorShape(3U, 3U, 2U, 4U), 1, DataType::QASYMM8), // Bias only supports FP32/FP16 + TensorInfo(TensorShape(3U, 3U, 2U, 4U), 1, DataType::F32, DataLayout::NHWC), // num_groups != 1 is only supported for NCHW data layout + TensorInfo(TensorShape(3U, 3U, 2U, 4U, 4U), 1, DataType::F32), // Bias' shape need to match input's shape + TensorInfo(TensorShape(3U, 3U, 2U, 4U, 4U), 1, DataType::F32), // Bias' shape need to match input's shape +}), +framework::dataset::make("BiasesInfo", +{ + TensorInfo(TensorShape(4U), 1, DataType::F16), + TensorInfo(TensorShape(4U), 1, DataType::F32), + TensorInfo(TensorShape(4U), 1, DataType::QASYMM8), + TensorInfo(TensorShape(4U), 1, DataType::F32), + TensorInfo(TensorShape(4U, 3U), 1, DataType::F32), + TensorInfo(TensorShape(3U, 4U), 1, DataType::F32), +})), +framework::dataset::make("OutputInfo", +{ + TensorInfo(TensorShape(4U, 19U), 1, DataType::F32), + TensorInfo(TensorShape(4U, 19U), 1, DataType::F16), + TensorInfo(TensorShape(4U, 19U), 1, DataType::QASYMM8), + TensorInfo(TensorShape(4U, 19U), 1, DataType::F32), + TensorInfo(TensorShape(4U, 19U), 1, DataType::F32), + TensorInfo(TensorShape(4U, 19U), 1, DataType::F32), +})), +framework::dataset::make("NumGroups", { 1, 1, 1, 2, 1, 2 })), +framework::dataset::make("Expected", { false, false, false, false, false, false })), +input_info, biases_info, output_info, num_groups, expected) { - bool status = bool(CLWeightsReshape::validate(&input_info, &biases_info, &output_info)); + bool status = bool(CLWeightsReshape::validate(&input_info, &biases_info, &output_info, num_groups)); ARM_COMPUTE_EXPECT(status == expected, framework::LogLevel::ERRORS); } -// clang-format on -// *INDENT-ON* template using CLWeightsReshapeFixture = WeightsReshapeValidationFixture; TEST_SUITE(Float) -TEST_SUITE(FP32) -FIXTURE_DATA_TEST_CASE(RunSmall, CLWeightsReshapeFixture, framework::DatasetMode::ALL, combine(combine(combine(datasets::GroupedWeightsSmallShapes(), framework::dataset::make("DataType", - DataType::F32)), - framework::dataset::make("HasBias", { true, false })), - framework::dataset::make("NumGroups", { 1, 2, 3, 4 }))) +FIXTURE_DATA_TEST_CASE(FP32, CLWeightsReshapeFixture, framework::DatasetMode::ALL, combine(combine(combine(framework::dataset::make("InputShape", { TensorShape(3U, 3U, 48U, 120U) }), + framework::dataset::make("DataType", DataType::F32)), + framework::dataset::make("HasBias", { true, false })), + framework::dataset::make("NumGroups", { 1, 2 }))) { // Validate output validate(CLAccessor(_target), _reference); } -FIXTURE_DATA_TEST_CASE(RunLarge, CLWeightsReshapeFixture, framework::DatasetMode::NIGHTLY, combine(combine(combine(datasets::GroupedWeightsLargeShapes(), framework::dataset::make("DataType", - DataType::F32)), - framework::dataset::make("HasBias", { true, false })), - framework::dataset::make("NumGroups", { 1, 2, 3, 4 }))) -{ - // Validate output - validate(CLAccessor(_target), _reference); -} -TEST_SUITE_END() -TEST_SUITE(FP16) -FIXTURE_DATA_TEST_CASE(RunSmall, CLWeightsReshapeFixture, framework::DatasetMode::ALL, combine(combine(combine(datasets::GroupedWeightsSmallShapes(), framework::dataset::make("DataType", - DataType::F16)), - framework::dataset::make("HasBias", { true, false })), - framework::dataset::make("NumGroups", { 1, 2, 3 }))) +FIXTURE_DATA_TEST_CASE(FP16, CLWeightsReshapeFixture, framework::DatasetMode::ALL, combine(combine(combine(framework::dataset::make("InputShape", { TensorShape(13U, 13U, 96U, 240U) }), + framework::dataset::make("DataType", DataType::F16)), + framework::dataset::make("HasBias", { true, false })), + framework::dataset::make("NumGroups", { 3, 4 }))) { // Validate output validate(CLAccessor(_target), _reference); } -FIXTURE_DATA_TEST_CASE(RunLarge, CLWeightsReshapeFixture, framework::DatasetMode::NIGHTLY, combine(combine(combine(datasets::GroupedWeightsLargeShapes(), framework::dataset::make("DataType", - DataType::F16)), - framework::dataset::make("HasBias", { true, false })), - framework::dataset::make("NumGroups", { 1, 2, 3 }))) + +FIXTURE_DATA_TEST_CASE(BFloat16, CLWeightsReshapeFixture, framework::DatasetMode::ALL, combine(combine(combine(framework::dataset::make("InputShape", { TensorShape(9U, 9U, 96U, 240U) }), + framework::dataset::make("DataType", DataType::BFLOAT16)), + framework::dataset::make("HasBias", { false })), + framework::dataset::make("NumGroups", { 3, 4 }))) { // Validate output validate(CLAccessor(_target), _reference); } -TEST_SUITE_END() TEST_SUITE_END() -TEST_SUITE(QASYMM8) -FIXTURE_DATA_TEST_CASE(RunSmall, CLWeightsReshapeFixture, framework::DatasetMode::ALL, combine(combine(combine(datasets::GroupedWeightsSmallShapes(), framework::dataset::make("DataType", - DataType::QASYMM8)), - framework::dataset::make("HasBias", { false })), - framework::dataset::make("NumGroups", { 1, 2, 3 }))) +TEST_SUITE(Quantized) +FIXTURE_DATA_TEST_CASE(QASYMM8, CLWeightsReshapeFixture, framework::DatasetMode::ALL, combine(combine(combine(framework::dataset::make("InputShape", { TensorShape(5U, 5U, 48U, 120U) }), + framework::dataset::make("DataType", DataType::QASYMM8)), + framework::dataset::make("HasBias", { false })), + framework::dataset::make("NumGroups", { 1, 2 }))) { // Validate output validate(CLAccessor(_target), _reference); } -FIXTURE_DATA_TEST_CASE(RunLarge, CLWeightsReshapeFixture, framework::DatasetMode::NIGHTLY, combine(combine(combine(datasets::GroupedWeightsLargeShapes(), framework::dataset::make("DataType", - DataType::QASYMM8)), - framework::dataset::make("HasBias", { false })), - framework::dataset::make("NumGroups", { 1, 2, 3 }))) + +FIXTURE_DATA_TEST_CASE(QASYMM8_SIGNED, CLWeightsReshapeFixture, framework::DatasetMode::ALL, combine(combine(combine(framework::dataset::make("InputShape", { TensorShape(5U, 5U, 48U, 120U) }), + framework::dataset::make("DataType", DataType::QASYMM8_SIGNED)), + framework::dataset::make("HasBias", { false })), + framework::dataset::make("NumGroups", { 1, 2 }))) { // Validate output validate(CLAccessor(_target), _reference); -- cgit v1.2.1