aboutsummaryrefslogtreecommitdiff
path: root/tests/validation/CL
diff options
context:
space:
mode:
authorJakub Sujak <jakub.sujak@arm.com>2023-10-05 10:20:59 +0100
committerJakub Sujak <jakub.sujak@arm.com>2023-10-05 20:38:57 +0000
commita23b4686a091a7960a4b336d0fe53f15db4ae538 (patch)
tree1ad99168638177ccbf4f7c991ac539b5dd270eca /tests/validation/CL
parent3831111db26d791cade87fd2d7fe2663e2ceb4a6 (diff)
downloadComputeLibrary-a23b4686a091a7960a4b336d0fe53f15db4ae538.tar.gz
Optimize CLTranspose operator
* Transpose higher dimensional tensors (>2D) by collapsing higher dimensions into the third dimension thus avoiding multiple dispatches of the CL kernel * Maximize tile size without register spilling Resolves: COMPMID-6448 Change-Id: Iac094b8c428bdf319d9c28a8334cb55d58e2d14b Signed-off-by: Jakub Sujak <jakub.sujak@arm.com> Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/10443 Tested-by: Arm Jenkins <bsgcomp@arm.com> Reviewed-by: Viet-Hoa Do <viet-hoa.do@arm.com> Comments-Addressed: Arm Jenkins <bsgcomp@arm.com> Benchmark: Arm Jenkins <bsgcomp@arm.com>
Diffstat (limited to 'tests/validation/CL')
-rw-r--r--tests/validation/CL/Transpose.cpp25
1 files changed, 23 insertions, 2 deletions
diff --git a/tests/validation/CL/Transpose.cpp b/tests/validation/CL/Transpose.cpp
index 943534058b..6cf5fe8537 100644
--- a/tests/validation/CL/Transpose.cpp
+++ b/tests/validation/CL/Transpose.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017-2021 Arm Limited.
+ * Copyright (c) 2017-2021, 2023 Arm Limited.
*
* SPDX-License-Identifier: MIT
*
@@ -50,12 +50,14 @@ DATA_TEST_CASE(Validate, framework::DatasetMode::ALL, zip(zip(
framework::dataset::make("InputInfo", { TensorInfo(TensorShape(21U, 13U), 1, DataType::U16), // Invalid shape
TensorInfo(TensorShape(20U, 13U), 1, DataType::U8), // Wrong data type
TensorInfo(TensorShape(20U, 16U), 1, DataType::U32), // Valid
+ TensorInfo(TensorShape(20U, 16U, 3U, 3U), 1, DataType::U16), // Transpose only first two dimensions
}),
framework::dataset::make("OutputInfo",{ TensorInfo(TensorShape(13U, 20U), 1, DataType::U32),
TensorInfo(TensorShape(31U, 20U), 1, DataType::U16),
TensorInfo(TensorShape(16U, 20U), 1, DataType::U32),
+ TensorInfo(TensorShape(16U, 20U, 3U, 3U), 1, DataType::U16),
})),
- framework::dataset::make("Expected", { false, false, true })),
+ framework::dataset::make("Expected", { false, false, true, true })),
a_info, output_info, expected)
{
// Lock tensors
@@ -80,6 +82,16 @@ FIXTURE_DATA_TEST_CASE(RunLarge, CLTransposeFixture<uint8_t>, framework::Dataset
// Validate output
validate(CLAccessor(_target), _reference);
}
+FIXTURE_DATA_TEST_CASE(RunLargeHighDimensional,
+ CLTransposeFixture<uint8_t>,
+ framework::DatasetMode::NIGHTLY,
+ combine(concat(concat(datasets::Large3DShapes(), datasets::Large4DShapes()),
+ datasets::Large5dShapes()),
+ framework::dataset::make("DataType", DataType::U8)))
+{
+ // Validate output
+ validate(CLAccessor(_target), _reference);
+}
TEST_SUITE_END() // U8
TEST_SUITE(U16)
@@ -106,6 +118,15 @@ FIXTURE_DATA_TEST_CASE(RunSmall, CLTransposeFixture<uint32_t>, framework::Datase
// Validate output
validate(CLAccessor(_target), _reference);
}
+FIXTURE_DATA_TEST_CASE(RunSmallHighDimensional,
+ CLTransposeFixture<uint32_t>,
+ framework::DatasetMode::PRECOMMIT,
+ combine(concat(datasets::Small3DShapes(), datasets::Small4DShapes()),
+ framework::dataset::make("DataType", DataType::U32)))
+{
+ // Validate output
+ validate(CLAccessor(_target), _reference);
+}
FIXTURE_DATA_TEST_CASE(RunLarge, CLTransposeFixture<uint32_t>, framework::DatasetMode::NIGHTLY, combine(concat(datasets::Large1DShapes(), datasets::Large2DShapes()),
framework::dataset::make("DataType", DataType::U32)))
{