Skip to content

Commit a820c19

Browse files
[GPU] Update range shape infer with epsilon
1 parent e611ede commit a820c19

File tree

3 files changed

+8
-2
lines changed

3 files changed

+8
-2
lines changed

src/core/shape_inference/include/range_shape_inference.hpp

+6-2
Original file line numberDiff line numberDiff line change
@@ -72,9 +72,13 @@ std::vector<TRShape> range_shape_infer(const Node* op,
7272
span = stop - start;
7373
}
7474

75-
double strided = ceil(fabs(span) / fabs(step));
75+
uint32_t strided = static_cast<uint32_t>(ceil(fabs(span) / fabs(step)));
76+
const double epsilon = 1e-06;
77+
if (!output_is_integral && (strided - 1) * step >= 1.0f - epsilon) {
78+
strided -= 1;
79+
}
7680

77-
output_shapes[0] = TRShape{static_cast<uint32_t>(strided)};
81+
output_shapes[0] = TRShape{strided};
7882
} else {
7983
output_shapes[0] = ov::PartialShape::dynamic(1);
8084
}

src/plugins/intel_gpu/tests/unit/shape_infer/range_si_test.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ TEST_P(range_si_test, shape_infer) {
9696

9797
INSTANTIATE_TEST_SUITE_P(smoke, range_si_test,
9898
testing::ValuesIn(std::vector<range_si_test_params>{
99+
{ov::PartialShape{}, ov::PartialShape{39}, data_types::f32, {0.0f, 1.0f, 0.025641024f}},
99100
{ov::PartialShape{}, ov::PartialShape{7}, data_types::i32, {2, 23, 3}},
100101
{ov::PartialShape{}, ov::PartialShape{7}, data_types::i8, {2, 23, 3}},
101102
{ov::PartialShape{}, ov::PartialShape{7}, data_types::u8, {2, 23, 3}},

src/plugins/intel_gpu/tests/unit/test_cases/range_gpu_test.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,7 @@ INSTANTIATE_TEST_SUITE_P(range_gpu_test,
174174
smoke_range_test,
175175
testing::ValuesIn(
176176
range_test_param_generator()
177+
.simple_params(float_types, 0, 1.0f, 0.025641024f)
177178
.simple_params(general_types, 2, 23, 3)
178179
.simple_params(general_types, 1, 21, 2)
179180
.simple_params(float_types, 1, 2.5f, 0.5f)

0 commit comments

Comments
 (0)