From bc6c374f5bc6c17c3e9b5462f5f8c3c5a5e8a13e Mon Sep 17 00:00:00 2001 From: Gian Marco Iodice Date: Mon, 19 Oct 2020 12:49:44 +0100 Subject: COMPMID-3740: Remove OpenCL padding: CLWinogradInputTransformKernel - Remove padding requirement from the OpenCL kernels - Extend test to validate zero padding requirement Change-Id: I1ddf04eba783721858792efb08a2c97f11f7297e Signed-off-by: Gian Marco Iodice Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/4206 Tested-by: Arm Jenkins Reviewed-by: Michele Di Giorgio Comments-Addressed: Arm Jenkins --- tests/validation/CL/Winograd.cpp | 39 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) (limited to 'tests') diff --git a/tests/validation/CL/Winograd.cpp b/tests/validation/CL/Winograd.cpp index 771acf9461..d1522f3e7f 100644 --- a/tests/validation/CL/Winograd.cpp +++ b/tests/validation/CL/Winograd.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018-2019 Arm Limited. + * Copyright (c) 2018-2020 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -182,6 +182,29 @@ const auto ActivationFunctionsSmallDataset = framework::dataset::make("Activatio ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::LEAKY_RELU), ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::SOFT_RELU) }); + +/** Zero padding test */ +bool validate_zero_padding(unsigned int width, unsigned height) +{ + TensorShape shape(width, height, 11, 1); + + WinogradInfo winograd_info = WinogradInfo(Size2D(4U, 4U), Size2D(5U, 5U), Size2D(width, height), PadStrideInfo(), DataLayout::NHWC); + + // Create tensors + CLTensor src = create_tensor(shape, DataType::F32, 1, QuantizationInfo(), DataLayout::NHWC); + CLTensor dst; + + src.info()->set_quantization_info(QuantizationInfo(1.f / 256.f, 0)); + dst.info()->set_quantization_info(QuantizationInfo(1.f / 256.f, 0)); + + CLWinogradInputTransform input_transform; + + input_transform.configure(&src, &dst, winograd_info); + + // Padding can be added along rhs and bias's X dimension + return src.info()->padding().empty() && dst.info()->padding().empty(); +} + } // namespace using namespace arm_compute::misc::shape_calculator; @@ -190,6 +213,20 @@ TEST_SUITE(CL) TEST_SUITE(Winograd) TEST_SUITE(InputTransform) + +/** Validate zero padding tests + * + * A series of validation tests to check that no padding is added + */ +DATA_TEST_CASE(ValidateZeroPadding, framework::DatasetMode::ALL, zip( +framework::dataset::make("Width", { 32U, 37U, 12U, 1U }), +framework::dataset::make("Height", { 13U, 27U, 19U, 1U })), +width, height) +{ + bool status = validate_zero_padding(width, height); + ARM_COMPUTE_EXPECT(status, framework::LogLevel::ERRORS); +} + DATA_TEST_CASE(Validate, framework::DatasetMode::ALL, zip(zip(zip( framework::dataset::make("InputInfo",{ TensorInfo(TensorShape(53U, 21U, 5U, 3U), 1, DataType::F16), // F16 not supported -- cgit v1.2.1