From cf9e29e3bd2fcd772c156c7866425335bfdbde6a Mon Sep 17 00:00:00 2001 From: Michele Di Giorgio Date: Thu, 8 Oct 2020 11:54:42 +0100 Subject: COMPMID-3172: Remove padding from NEGEMMMatrixMultiplyKernel Template parameter has been removed, which reduces the binary size by: - ~4 kB for armv8.2a - ~12 kB for armv8a Change-Id: Ib499a18a4980a3ee7b201507b943f900adf20a73 Signed-off-by: Michele Di Giorgio Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/4122 Tested-by: Arm Jenkins Reviewed-by: Giorgio Arena Reviewed-by: Georgios Pinitas Comments-Addressed: Arm Jenkins --- tests/validation/NEON/GEMM.cpp | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) (limited to 'tests/validation/NEON') diff --git a/tests/validation/NEON/GEMM.cpp b/tests/validation/NEON/GEMM.cpp index dfac72f3a5..25e8f28dc3 100644 --- a/tests/validation/NEON/GEMM.cpp +++ b/tests/validation/NEON/GEMM.cpp @@ -87,6 +87,20 @@ bool validate_zero_padding(unsigned int dim0_value, unsigned int dim1_value) return in.info()->padding().empty(); } +/* Zero padding test for GEMM kernels */ +bool validate_gemm_zero_padding(const TensorShape shape0, const TensorShape shape1) +{ + // Create tensors + Tensor in0 = create_tensor(shape0, DataType::F32); + Tensor in1 = create_tensor(shape1, DataType::F32); + Tensor dst; + + // Validate zero-padding + NEGEMMMatrixMultiplyKernel gemm; + gemm.configure(&in0, &in1, &dst, 1.0, false); + + return in0.info()->padding().empty() && in1.info()->padding().empty() && dst.info()->padding().empty(); +} } // namespace TEST_SUITE(NEON) @@ -182,6 +196,26 @@ template using NEGEMMFixtureDisabledC = GEMMValidationFixture; TEST_SUITE(Float) +DATA_TEST_CASE(ValidateZeroPadding, framework::DatasetMode::ALL, zip(framework::dataset::make("In0", { TensorShape(21U, 13U), + TensorShape(31U, 1U), + TensorShape(31U, 1U), + TensorShape(8U, 2U), + TensorShape(38U, 12U), + TensorShape(32U, 1U) + }), + framework::dataset::make("In1", { TensorShape(33U, 21U), + TensorShape(23U, 31U), + TensorShape(23U, 31U), + TensorShape(16U, 8U), + TensorShape(21U, 38U), + TensorShape(17U, 32U) + })), + shape0, shape1) +{ + bool status = validate_gemm_zero_padding(shape0, shape1); + ARM_COMPUTE_EXPECT(status, framework::LogLevel::ERRORS); +} + #ifdef __ARM_FEATURE_FP16_VECTOR_ARITHMETIC TEST_SUITE(FP16) FIXTURE_DATA_TEST_CASE(RunSmall, NEGEMMFixture, framework::DatasetMode::PRECOMMIT, combine(combine(datasets::SmallGEMMDataset(), -- cgit v1.2.1