diff options
author | Gunes Bayir <gunes.bayir@arm.com> | 2023-01-19 15:56:00 +0000 |
---|---|---|
committer | Gunes Bayir <gunes.bayir@arm.com> | 2023-01-24 09:40:01 +0000 |
commit | cc2877368d5e15d9ea89d31c84ec651fc0fffd13 (patch) | |
tree | c57a3a406125b3a31e2d4aff6126ce99f4ade395 /tests/validation/dynamic_fusion/gpu/cl/Resize.cpp | |
parent | a6a153817302793732e28b07c3b4046df3f91a60 (diff) | |
download | ComputeLibrary-cc2877368d5e15d9ea89d31c84ec651fc0fffd13.tar.gz |
Change dynamic fusion API to return destination tensor info
The new dynamic fusion API is introduced in the following patch:
https://review.mlplatform.org/c/ml/ComputeLibrary/+/8906
For each operator (except Conv2D, which is migrated in the above patch), we
- remove destination tensor from is_supported, validate and create calls
- make create_op return ITensorInfo* to the intermediate destination object
Affected operators:
- DepthwiseConv2D
- Cast
- Elementwise Ops
- Clamp
- Reshape
- Resize
Resolves: COMPMID-5777
Change-Id: Ib60ec8a5f081752808455d7a7d790f2ed0627059
Signed-off-by: Gunes Bayir <gunes.bayir@arm.com>
Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/8991
Reviewed-by: Ramy Elgammal <ramy.elgammal@arm.com>
Reviewed-by: Jakub Sujak <jakub.sujak@arm.com>
Dynamic-Fusion: Ramy Elgammal <ramy.elgammal@arm.com>
Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
Tested-by: Arm Jenkins <bsgcomp@arm.com>
Benchmark: Arm Jenkins <bsgcomp@arm.com>
Diffstat (limited to 'tests/validation/dynamic_fusion/gpu/cl/Resize.cpp')
-rw-r--r-- | tests/validation/dynamic_fusion/gpu/cl/Resize.cpp | 48 |
1 files changed, 20 insertions, 28 deletions
diff --git a/tests/validation/dynamic_fusion/gpu/cl/Resize.cpp b/tests/validation/dynamic_fusion/gpu/cl/Resize.cpp index 3791aef44c..696be54c92 100644 --- a/tests/validation/dynamic_fusion/gpu/cl/Resize.cpp +++ b/tests/validation/dynamic_fusion/gpu/cl/Resize.cpp @@ -1,5 +1,5 @@ /* -* Copyright (c) 2022 Arm Limited. +* Copyright (c) 2022-2023 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -86,8 +86,8 @@ TEST_SUITE(Validate) const auto default_input_shape = TensorShape{ 2, 3, 3, 2 }; const auto default_output_shape = TensorShape{ 4, 6, 3, 2 }; -constexpr auto default_data_type = DataType::U8; -constexpr auto default_data_layout = DataLayout::NHWC; +constexpr auto default_data_type = DataType::U8; +constexpr auto default_data_layout = DataLayout::NHWC; TEST_CASE(NullPtr, framework::DatasetMode::ALL) { @@ -98,15 +98,10 @@ TEST_CASE(NullPtr, framework::DatasetMode::ALL) GpuWorkloadContext gpu_ctx = GpuWorkloadContext{ &cl_compile_ctx }; GpuWorkloadSketch sketch{ &gpu_ctx }; - const TensorInfo sketch_input_info = sketch.create_tensor_info(input_info); - const TensorInfo sketch_output_info = sketch.create_tensor_info(output_info); + const TensorInfo sketch_input_info = sketch.create_tensor_info(input_info); // nullptr is given as input - Status status = GpuResize::validate_op(sketch, nullptr, &sketch_output_info, ResizeAttributes()); - ARM_COMPUTE_EXPECT(bool(status) == false, framework::LogLevel::ERRORS); - - // nullptr is given as output - status = GpuResize::validate_op(sketch, &sketch_input_info, nullptr, ResizeAttributes()); + Status status = GpuResize::validate_op(sketch, nullptr, ResizeAttributes()); ARM_COMPUTE_EXPECT(bool(status) == false, framework::LogLevel::ERRORS); } @@ -137,18 +132,19 @@ TEST_CASE(SupportDataType, framework::DatasetMode::ALL) for(auto &kv : supported_data_types) { - const TensorInfo input_info = TensorInfo{ default_input_shape, 1, kv.first, default_data_layout }; - const TensorInfo output_info = TensorInfo{ default_output_shape, 1, kv.first, default_data_layout }; + const TensorInfo input_info = TensorInfo{ default_input_shape, 1, kv.first, default_data_layout }; CLCompileContext cl_compile_ctx = CLKernelLibrary::get().get_compile_context(); GpuWorkloadContext gpu_ctx = GpuWorkloadContext{ &cl_compile_ctx }; GpuWorkloadSketch sketch{ &gpu_ctx }; - const TensorInfo sketch_input_info = sketch.create_tensor_info(input_info); - const TensorInfo sketch_output_info = sketch.create_tensor_info(output_info); + const TensorInfo sketch_input_info = sketch.create_tensor_info(input_info); + + ResizeAttributes attributes; + attributes.output_width(default_output_shape[0]); // shape is not important unless it's empty + attributes.output_height(default_output_shape[1]); - // nullptr is given as input - Status status = GpuResize::validate_op(sketch, &sketch_input_info, &sketch_output_info, ResizeAttributes()); + Status status = GpuResize::validate_op(sketch, &sketch_input_info, attributes); ARM_COMPUTE_EXPECT(bool(status) == kv.second, framework::LogLevel::ERRORS); } } @@ -164,10 +160,9 @@ TEST_CASE(MismatchingDataType, framework::DatasetMode::ALL) GpuWorkloadContext gpu_ctx = GpuWorkloadContext{ &cl_compile_ctx }; GpuWorkloadSketch sketch{ &gpu_ctx }; - const TensorInfo sketch_input_info = sketch.create_tensor_info(input_info); - const TensorInfo sketch_output_info = sketch.create_tensor_info(output_info); + const TensorInfo sketch_input_info = sketch.create_tensor_info(input_info); - Status status = GpuResize::validate_op(sketch, &sketch_input_info, &sketch_output_info, ResizeAttributes()); + Status status = GpuResize::validate_op(sketch, &sketch_input_info, ResizeAttributes()); ARM_COMPUTE_EXPECT(bool(status) == false, framework::LogLevel::ERRORS); } @@ -185,15 +180,14 @@ TEST_CASE(AlignedCornerNotSupported, framework::DatasetMode::ALL) GpuWorkloadContext gpu_ctx = GpuWorkloadContext{ &cl_compile_ctx }; GpuWorkloadSketch sketch{ &gpu_ctx }; - const TensorInfo sketch_input_info = sketch.create_tensor_info(input_info); - const TensorInfo sketch_output_info = sketch.create_tensor_info(output_info); + const TensorInfo sketch_input_info = sketch.create_tensor_info(input_info); ResizeAttributes attributes{}; attributes.interpolation_policy(interpolation_policy) .sampling_policy(sampling_policy) .align_corners(align_corners); - Status status = GpuResize::validate_op(sketch, &sketch_input_info, &sketch_output_info, attributes); + Status status = GpuResize::validate_op(sketch, &sketch_input_info, attributes); ARM_COMPUTE_EXPECT(bool(status) == false, framework::LogLevel::ERRORS); } @@ -207,13 +201,12 @@ TEST_CASE(UnsupportedInterpolationPolicy, framework::DatasetMode::ALL) GpuWorkloadContext gpu_ctx = GpuWorkloadContext{ &cl_compile_ctx }; GpuWorkloadSketch sketch{ &gpu_ctx }; - const TensorInfo sketch_input_info = sketch.create_tensor_info(input_info); - const TensorInfo sketch_output_info = sketch.create_tensor_info(output_info); + const TensorInfo sketch_input_info = sketch.create_tensor_info(input_info); ResizeAttributes attributes{}; attributes.interpolation_policy(interpolation_policy); - Status status = GpuResize::validate_op(sketch, &sketch_input_info, &sketch_output_info, attributes); + Status status = GpuResize::validate_op(sketch, &sketch_input_info, attributes); ARM_COMPUTE_EXPECT(bool(status) == false, framework::LogLevel::ERRORS); } @@ -227,13 +220,12 @@ TEST_CASE(UnsupportedLayout, framework::DatasetMode::ALL) GpuWorkloadContext gpu_ctx = GpuWorkloadContext{ &cl_compile_ctx }; GpuWorkloadSketch sketch{ &gpu_ctx }; - const TensorInfo sketch_input_info = sketch.create_tensor_info(input_info); - const TensorInfo sketch_output_info = sketch.create_tensor_info(output_info); + const TensorInfo sketch_input_info = sketch.create_tensor_info(input_info); ResizeAttributes attributes{}; attributes.interpolation_policy(interpolation_policy); - Status status = GpuResize::validate_op(sketch, &sketch_input_info, &sketch_output_info, attributes); + Status status = GpuResize::validate_op(sketch, &sketch_input_info, attributes); ARM_COMPUTE_EXPECT(bool(status) == false, framework::LogLevel::ERRORS); } |