Skip to content

Commit

Permalink
Fix failing tests and add new ones
Browse files Browse the repository at this point in the history
  • Loading branch information
sshlyapn committed Aug 1, 2024
1 parent 93e5a8a commit bf00321
Show file tree
Hide file tree
Showing 2 changed files with 96 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -777,6 +777,85 @@ TEST(prepare_buffer_fusing, in_place_crop_dynamic) {
ASSERT_EQ(output_ptr_3[i], out3[i]);
}

TEST(prepare_buffer_fusing, in_place_crop_dynamic_reshape_unsqueeze) {
auto& engine = get_test_engine();

auto in_layout = layout{ ov::PartialShape{-1, -1, 4}, data_types::f32, format::bfyx};
auto input_mem = engine.allocate_memory({ {1, 2, 4}, data_types::f32, format::bfyx });
auto weights_mem = engine.allocate_memory({ {8, 4}, data_types::u8, format::bfyx });
auto bias_mem = engine.allocate_memory({ {1, 1, 8}, data_types::f32, format::bfyx });
auto scale_mem = engine.allocate_memory({ {8, 1}, data_types::f32, format::bfyx });
auto zp_mem = engine.allocate_memory({ {8, 1}, data_types::f32, format::bfyx });
auto axis_mem = engine.allocate_memory({ {}, data_types::i64, format::bfyx });
auto splits_length_mem = engine.allocate_memory({ {2}, data_types::i64, format::bfyx });

int64_t axis = 2;
set_values(input_mem, { -0.5f, 2.0f, 0.5f, 1.0f,
0.5f, -2.0f, -0.5f, -1.0f });
set_values<int64_t>(axis_mem, {axis});
set_values<int64_t>(splits_length_mem, { 2, 6 });
set_values<uint8_t>(weights_mem, { 1, 2, 3, 4,
5, 6, 7, 8,
9, 10, 11, 12,
13, 14, 15, 0,
15, 14, 13, 12,
11, 10, 9, 8,
7, 6, 5, 4,
3, 2, 1, 0});
set_values(bias_mem, { 1.0f, -2.0f, 3.0f, -4.0f, 5.0f, -6.0f, 7.0f, 2.0f });
set_values(scale_mem, { 2.0f, 4.0f, -2.0f, -4.0f, 0.5f, -0.5f, 2.0f, 2.0f });
set_values(zp_mem, { 1.0f, 2.0f, 2.0f, 1.0f, 4.0f, 1.0f, 6.0f, 2.0f });

std::vector<float> out1 = { 13.f, 58.f, -11.f, -62.f };
std::vector<float> out2 = { -51.f, -108.f, 18.5f, -18.f, 1.f, -4.f, 57.f, 100.f, -8.5f, 6.f, 13.f, 8.f };
std::vector<float> out3 = { 13.f, 58.f, -51.f, -108.f, 18.5f, -18.f, 1.f, -4.f, -11.f, -62.f, 57.f, 100.f, -8.5f, 6.f, 13.f, 8.f };

cldnn::crop_ngraph_op_mode op_mode = cldnn::crop_ngraph_op_mode::variadic_split;
topology topology(
input_layout("input", in_layout),
data("axis", axis_mem),
data("splits_length", splits_length_mem),
data("weights", weights_mem),
data("bias", bias_mem),
data("scale", scale_mem),
data("zp", zp_mem),
fully_connected("fc", input_info("input"), "weights", "bias", "scale", "zp", data_types::f32, 3, 2),
crop("crop1", { input_info("fc"), input_info("axis"), input_info("splits_length") }, cldnn::tensor(1), cldnn::tensor(0), op_mode, 0, axis),
reorder("output1", input_info("crop1"), format::bfyx, data_types::f32),
crop("crop2", { input_info("fc"), input_info("axis"), input_info("splits_length") }, cldnn::tensor(1), cldnn::tensor(0), op_mode, 1, axis),
reshape("reshape", input_info("crop2"), false, std::vector<int64_t>{1}, ov::PartialShape{-1, 1, -1, 6}, cldnn::reshape::reshape_mode::unsqueeze),
reorder("output2", input_info("reshape"), format::bfyx, data_types::f32, std::vector<float>(), reorder_mean_mode::subtract, padding(), true),
reorder("output3", input_info("fc"), format::bfyx, data_types::f32)
);

auto config = get_test_default_config(engine);
config.set_property(ov::intel_gpu::allow_new_shape_infer(true));
config.set_property(ov::intel_gpu::optimize_data(true));
network network(engine, topology, config);

network.set_input_data("input", input_mem);

auto outputs = network.execute();

auto output = outputs.at("output1").get_memory();
cldnn::mem_lock<float> output_ptr(output, get_test_stream());

for (size_t i = 0; i < out1.size(); i++)
ASSERT_EQ(output_ptr[i], out1[i]);

auto output_2 = outputs.at("output2").get_memory();
cldnn::mem_lock<float> output_ptr_2(output_2, get_test_stream());

for (size_t i = 0; i < out2.size(); i++)
ASSERT_EQ(output_ptr_2[i], out2[i]);

auto output_3 = outputs.at("output3").get_memory();
cldnn::mem_lock<float> output_ptr_3(output_3, get_test_stream());

for (size_t i = 0; i < out3.size(); i++)
ASSERT_EQ(output_ptr_3[i], out3[i]);
}

TEST(prepare_buffer_fusing, in_place_crop_dynamic_split_lengths) {
auto& engine = get_test_engine();

Expand Down
22 changes: 17 additions & 5 deletions src/plugins/intel_gpu/tests/unit/shape_infer/reshape_si_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,12 +35,14 @@ inline padding get_pad(format fmt, std::vector<int64_t> axes, bool is_dynamic) {
std::vector<int32_t> upper(fmt.dimension(), 0);
std::vector<int32_t> mask(fmt.dimension(), 0);

auto start_pad_val = 13;
for (auto& axis : axes) {
lower[axis] = 13 + axis;
upper[axis] = 25 + axis;
lower[axis] = start_pad_val;
upper[axis] = start_pad_val / 2;
if (is_dynamic) {
mask[axis] = 1;
}
start_pad_val += 5;
}

return padding(tensor(fmt, lower, 0).sizes(), tensor(fmt, upper, 0).sizes(), 0.0f, tensor(fmt, mask, 0));
Expand Down Expand Up @@ -280,20 +282,30 @@ INSTANTIATE_TEST_SUITE_P(smoke, unsqueeze_test,
layout{ov::PartialShape{1}, data_types::i64, format::bfyx}, {0}, ov::PartialShape::dynamic(1),
layout{ov::PartialShape{1}, data_types::f32, format::bfyx}
},
{
layout{ov::PartialShape{1, 128}, data_types::f32, format::bfyx, get_pad(format::bfyx, {0, 1}, true)},
layout{ov::PartialShape{2}, data_types::i64, format::bfyx}, {1, 3}, ov::PartialShape::dynamic(4),
layout{ov::PartialShape{1, 1, 128, 1}, data_types::f32, format::bfyx, get_pad(format::bfyx, {0, 2}, true)}
},
{
layout{ov::PartialShape{1, 1, 128}, data_types::f32, format::bfyx, get_pad(format::bfyx, {2}, true)},
layout{ov::PartialShape{1}, data_types::i64, format::bfyx}, {1}, ov::PartialShape::dynamic(4),
layout{ov::PartialShape{1, 1, 1, 128}, data_types::f32, format::bfyx, get_pad(format::bfyx, {3}, true)}
},
{
layout{ov::PartialShape{1, 10, 20, 30}, data_types::f32, format::bfyx, get_pad(format::bfyx, {2}, true)},
layout{ov::PartialShape{1}, data_types::i64, format::bfyx}, {1}, ov::PartialShape::dynamic(5),
layout{ov::PartialShape{1, 1, 10, 20, 30}, data_types::f32, format::bfzyx, get_pad(format::bfyx, {2}, true)}
layout{ov::PartialShape{1, 1, 10, 20, 30}, data_types::f32, format::bfzyx, get_pad(format::bfzyx, {3}, true)}
},
{
layout{ov::PartialShape{1, 10, 20, 30}, data_types::f32, format::bfyx, get_pad(format::bfyx, {2, 3}, true)},
layout{ov::PartialShape{1}, data_types::i64, format::bfyx}, {1}, ov::PartialShape::dynamic(5),
layout{ov::PartialShape{1, 1, 10, 20, 30}, data_types::f32, format::bfzyx, get_pad(format::bfyx, {2, 3}, true)}
layout{ov::PartialShape{1, 1, 10, 20, 30}, data_types::f32, format::bfzyx, get_pad(format::bfzyx, {3, 4}, true)}
},
{
layout{ov::PartialShape{1, 10, 20, 30}, data_types::f32, format::bfyx, get_pad(format::bfyx, {2, 3}, true)},
layout{ov::PartialShape{2}, data_types::i64, format::bfyx}, {1, 4}, ov::PartialShape::dynamic(6),
layout{ov::PartialShape{1, 1, 10, 20, 1, 30}, data_types::f32, format::bfwzyx, get_pad(format::bfyx, {2, 3}, true)}
layout{ov::PartialShape{1, 1, 10, 20, 1, 30}, data_types::f32, format::bfwzyx, get_pad(format::bfwzyx, {3, 5}, true)}
}
}));
} // shape_infer_tests

0 comments on commit bf00321

Please sign in to comment.