From 610a22597b1dd7dde06c50730b26f294de10747d Mon Sep 17 00:00:00 2001 From: Kelvin Choi Date: Mon, 23 Sep 2024 23:43:45 +0900 Subject: [PATCH] [GPU] Update range shape infer with epsilon --- .../shape_inference/include/range_shape_inference.hpp | 8 ++++++-- .../intel_gpu/tests/unit/shape_infer/range_si_test.cpp | 1 + .../intel_gpu/tests/unit/test_cases/range_gpu_test.cpp | 1 + 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/core/shape_inference/include/range_shape_inference.hpp b/src/core/shape_inference/include/range_shape_inference.hpp index 3be56a4543a7dd..c79a14623fa662 100644 --- a/src/core/shape_inference/include/range_shape_inference.hpp +++ b/src/core/shape_inference/include/range_shape_inference.hpp @@ -72,9 +72,13 @@ std::vector range_shape_infer(const Node* op, span = stop - start; } - double strided = ceil(fabs(span) / fabs(step)); + uint32_t strided = static_cast(ceil(fabs(span) / fabs(step))); + const double epsilon = 1e-06; + if (!output_is_integral && (strided - 1) * step >= span - epsilon) { + strided -= 1; + } - output_shapes[0] = TRShape{static_cast(strided)}; + output_shapes[0] = TRShape{strided}; } else { output_shapes[0] = ov::PartialShape::dynamic(1); } diff --git a/src/plugins/intel_gpu/tests/unit/shape_infer/range_si_test.cpp b/src/plugins/intel_gpu/tests/unit/shape_infer/range_si_test.cpp index b079017d5c12e0..57ca492d84e120 100644 --- a/src/plugins/intel_gpu/tests/unit/shape_infer/range_si_test.cpp +++ b/src/plugins/intel_gpu/tests/unit/shape_infer/range_si_test.cpp @@ -96,6 +96,7 @@ TEST_P(range_si_test, shape_infer) { INSTANTIATE_TEST_SUITE_P(smoke, range_si_test, testing::ValuesIn(std::vector{ + {ov::PartialShape{}, ov::PartialShape{39}, data_types::f32, {0.0f, 1.0f, 0.025641024f}}, {ov::PartialShape{}, ov::PartialShape{7}, data_types::i32, {2, 23, 3}}, {ov::PartialShape{}, ov::PartialShape{7}, data_types::i8, {2, 23, 3}}, {ov::PartialShape{}, ov::PartialShape{7}, data_types::u8, {2, 23, 3}}, diff --git a/src/plugins/intel_gpu/tests/unit/test_cases/range_gpu_test.cpp b/src/plugins/intel_gpu/tests/unit/test_cases/range_gpu_test.cpp index b163244894c492..b37ab2d9e0d21f 100644 --- a/src/plugins/intel_gpu/tests/unit/test_cases/range_gpu_test.cpp +++ b/src/plugins/intel_gpu/tests/unit/test_cases/range_gpu_test.cpp @@ -174,6 +174,7 @@ INSTANTIATE_TEST_SUITE_P(range_gpu_test, smoke_range_test, testing::ValuesIn( range_test_param_generator() + .simple_params(float_types, 0, 1.0f, 0.025641024f) .simple_params(general_types, 2, 23, 3) .simple_params(general_types, 1, 21, 2) .simple_params(float_types, 1, 2.5f, 0.5f)