Skip to content

Commit 0b26855

Browse files
[GPU] Add int8 input type for pooling ref kernel to cover fs_b_yx_fsv32 and int8 case
1 parent c4d6d2b commit 0b26855

File tree

2 files changed

+44
-0
lines changed

2 files changed

+44
-0
lines changed

src/plugins/intel_gpu/src/kernel_selector/kernels/pooling/pooling_kernel_gpu_ref.cpp

+2
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ ParamsKey PoolingKernelGPURef::GetSupportedKey() const {
99
ParamsKey k;
1010
k.EnableInputDataType(Datatype::F16);
1111
k.EnableInputDataType(Datatype::F32);
12+
k.EnableInputDataType(Datatype::UINT8);
13+
k.EnableInputDataType(Datatype::INT8);
1214
k.EnableOutputDataType(Datatype::F16);
1315
k.EnableOutputDataType(Datatype::F32);
1416
k.EnableOutputDataType(Datatype::UINT8);

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

+42
Original file line numberDiff line numberDiff line change
@@ -1517,6 +1517,48 @@ TEST(pooling_forward_gpu, b_fs_yx_fsv4)
15171517
} // for (int j = 0; F_array[j]; i++)
15181518
}
15191519

1520+
TEST(pooling_forward_gpu, fs_b_yx_fsv32_int8)
1521+
{
1522+
auto& engine = get_test_engine();
1523+
1524+
auto input_prim = engine.allocate_memory({ data_types::f32, format::yxfb, { 1, 32, 1, 2 } });
1525+
1526+
topology topology;
1527+
topology.add(input_layout("input", input_prim->get_layout()));
1528+
topology.add(reorder("reorder_input", input_info("input"), layout(data_types::i8, format::fs_b_yx_fsv32, { 1, 32, 1, 2 })));
1529+
topology.add(pooling("avg_pooling", input_info("reorder_input"), pooling_mode::average, { 7, 7 }, { 2, 2 }));
1530+
topology.add(reorder("reorder_after_pooling", input_info("avg_pooling"), layout(data_types::f32, format::fs_b_yx_fsv32, { 1, 32, 1, 1 })));
1531+
1532+
network network(engine, topology, get_test_default_config(engine));
1533+
set_values(input_prim, { 41.f, 42.f, 43.f, 44.f, 45.f, 46.f, 47.f, 48.f,
1534+
11.f, 12.f, 13.f, 14.f, 15.f, 16.f, 17.f, 18.f,
1535+
21.f, 22.f, 23.f, 24.f, 25.f, 26.f, 27.f, 28.f,
1536+
31.f, 32.f, 33.f, 34.f, 35.f, 36.f, 37.f, 38.f,
1537+
1538+
31.f, 32.f, 33.f, 34.f, 35.f, 36.f, 37.f, 38.f,
1539+
21.f, 22.f, 23.f, 24.f, 25.f, 26.f, 27.f, 28.f,
1540+
51.f, 52.f, 53.f, 54.f, 55.f, 56.f, 57.f, 58.f,
1541+
11.f, 12.f, 13.f, 14.f, 15.f, 16.f, 17.f, 18.f });
1542+
network.set_input_data("input", input_prim);
1543+
1544+
auto outputs = network.execute();
1545+
ASSERT_EQ(outputs.size(), size_t(1));
1546+
ASSERT_EQ(outputs.begin()->first, "reorder_after_pooling");
1547+
1548+
auto output_prim = outputs.begin()->second.get_memory();
1549+
1550+
cldnn::mem_lock<float> output_ptr(output_prim, get_test_stream());
1551+
1552+
std::vector<float> ref_data = { 36.f, 37.f, 38.f, 39.f, 40.f, 41.f, 42.f, 43.f,
1553+
16.f, 17.f, 18.f, 19.f, 20.f, 21.f, 22.f, 23.f,
1554+
36.f, 37.f, 38.f, 39.f, 40.f, 41.f, 42.f, 43.f,
1555+
21.f, 22.f, 23.f, 24.f, 25.f, 26.f, 27.f, 28.f };
1556+
1557+
for (size_t i = 0; i < ref_data.size(); i++) {
1558+
ASSERT_EQ(ref_data[i], float(output_ptr[i]));
1559+
}
1560+
}
1561+
15201562
TEST(pooling_forward_gpu, fs_b_yx_fsv32_avg_3x3_input_2x2_pool_1x1_stride_2x2_output)
15211563
{
15221564
auto& engine = get_test_engine();

0 commit comments

Comments
 (0)