parent
1f9b2c2ba6
commit
ea3a37b1ba
File diff suppressed because it is too large
Load Diff
@ -34,27 +34,6 @@ struct deconv_test_params {
|
|||||||
size_t expected_fused_primitives;
|
size_t expected_fused_primitives;
|
||||||
size_t expected_fused_primitives_onednn;
|
size_t expected_fused_primitives_onednn;
|
||||||
size_t expected_not_fused_primitives;
|
size_t expected_not_fused_primitives;
|
||||||
bool operator<(const deconv_test_params& o)const {
|
|
||||||
auto to_tuple = [](const deconv_test_params& p) {
|
|
||||||
return make_tuple(p.in_shape,
|
|
||||||
p.out_shape,
|
|
||||||
p.kernel,
|
|
||||||
p.stride,
|
|
||||||
p.pad,
|
|
||||||
p.dilation,
|
|
||||||
p.groups,
|
|
||||||
static_cast<size_t>(p.data_type),
|
|
||||||
p.input_format,
|
|
||||||
static_cast<size_t>(p.weights_type),
|
|
||||||
p.weights_format,
|
|
||||||
static_cast<size_t>(p.default_type),
|
|
||||||
p.default_format,
|
|
||||||
p.expected_fused_primitives,
|
|
||||||
p.expected_fused_primitives_onednn,
|
|
||||||
p.expected_not_fused_primitives);
|
|
||||||
};
|
|
||||||
return to_tuple(*this)<to_tuple(o);
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct deconv_eltw_test_params {
|
struct deconv_eltw_test_params {
|
||||||
@ -80,10 +59,12 @@ struct deconv_eltw_test_params {
|
|||||||
class DeconvolutionFusingTest : public ::BaseFusingTest<deconv_test_params> {
|
class DeconvolutionFusingTest : public ::BaseFusingTest<deconv_test_params> {
|
||||||
public:
|
public:
|
||||||
void execute(deconv_test_params& p) {
|
void execute(deconv_test_params& p) {
|
||||||
|
execute(p, get_mem(get_input_layout(p)));
|
||||||
|
}
|
||||||
|
void execute(deconv_test_params& p, cldnn::memory::ptr input_prim) {
|
||||||
if (engine.get_device_info().supports_immad)
|
if (engine.get_device_info().supports_immad)
|
||||||
p.expected_fused_primitives = p.expected_fused_primitives_onednn;
|
p.expected_fused_primitives = p.expected_fused_primitives_onednn;
|
||||||
|
|
||||||
auto input_prim = get_mem(get_input_layout(p));
|
|
||||||
network network_not_fused(this->engine, this->topology_non_fused, bo_not_fused);
|
network network_not_fused(this->engine, this->topology_non_fused, bo_not_fused);
|
||||||
network network_fused(this->engine, this->topology_fused, bo_fused);
|
network network_fused(this->engine, this->topology_fused, bo_fused);
|
||||||
network_fused.set_input_data("input", input_prim);
|
network_fused.set_input_data("input", input_prim);
|
||||||
@ -398,30 +379,30 @@ TEST_P(deconv_scale, basic) {
|
|||||||
auto p = GetParam();
|
auto p = GetParam();
|
||||||
create_topologies(
|
create_topologies(
|
||||||
input_layout("input", get_input_layout(p)),
|
input_layout("input", get_input_layout(p)),
|
||||||
data("weights", get_mem(get_weights_layout(p))),
|
data("weights", get_mem(get_weights_layout(p), -4, 4)),
|
||||||
data("scale_data", get_mem(get_per_channel_layout(p), 1.0f/p.kernel.count())),
|
data("scale_data", get_mem(get_per_channel_layout(p), 1.0f/p.kernel.count())),
|
||||||
deconvolution("deconv", input_info("input"), { "weights" }, p.groups, p.stride, p.pad),
|
deconvolution("deconv", input_info("input"), { "weights" }, p.groups, p.stride, p.pad),
|
||||||
eltwise("scale", { input_info("deconv"), input_info("scale_data") }, eltwise_mode::prod),
|
eltwise("scale", { input_info("deconv"), input_info("scale_data") }, eltwise_mode::prod),
|
||||||
reorder("out", input_info("scale"), p.default_format, data_types::f32)
|
reorder("out", input_info("scale"), p.default_format, data_types::f32)
|
||||||
);
|
);
|
||||||
|
|
||||||
tolerance = 1e-5f;
|
tolerance = default_tolerance(p.data_type);
|
||||||
execute(p);
|
execute(p, get_mem(get_input_layout(p), 0, 16));
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_P(deconv_scale, fp16_scale_out) {
|
TEST_P(deconv_scale, fp16_scale_out) {
|
||||||
auto p = GetParam();
|
auto p = GetParam();
|
||||||
create_topologies(
|
create_topologies(
|
||||||
input_layout("input", get_input_layout(p)),
|
input_layout("input", get_input_layout(p)),
|
||||||
data("weights", get_mem(get_weights_layout(p))),
|
data("weights", get_mem(get_weights_layout(p), -4, 4)),
|
||||||
data("scale_data", get_mem(get_per_channel_layout(p), 1.0f/p.kernel.count())),
|
data("scale_data", get_mem(get_per_channel_layout(p), 1.0f/p.kernel.count())),
|
||||||
deconvolution("deconv", input_info("input"), { "weights" }, p.groups, p.stride, p.pad),
|
deconvolution("deconv", input_info("input"), { "weights" }, p.groups, p.stride, p.pad),
|
||||||
eltwise("scale", { input_info("deconv"), input_info("scale_data") }, eltwise_mode::prod, data_types::f16),
|
eltwise("scale", { input_info("deconv"), input_info("scale_data") }, eltwise_mode::prod, data_types::f16),
|
||||||
reorder("out", input_info("scale"), p.default_format, data_types::f32)
|
reorder("out", input_info("scale"), p.default_format, data_types::f32)
|
||||||
);
|
);
|
||||||
|
|
||||||
tolerance = 1e-5f;
|
tolerance = default_tolerance(p.data_type);
|
||||||
execute(p);
|
execute(p, get_mem(get_input_layout(p), 0, 16));
|
||||||
}
|
}
|
||||||
|
|
||||||
INSTANTIATE_TEST_SUITE_P(fusings_gpu, deconv_scale, ::testing::ValuesIn(std::vector<deconv_test_params>{
|
INSTANTIATE_TEST_SUITE_P(fusings_gpu, deconv_scale, ::testing::ValuesIn(std::vector<deconv_test_params>{
|
||||||
@ -584,81 +565,81 @@ TEST_P(deconv_scale_actv_quant_i8, basic) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
INSTANTIATE_TEST_SUITE_P(fusings_gpu, deconv_scale_actv_quant_i8, ::testing::ValuesIn(std::vector<deconv_test_params>{
|
INSTANTIATE_TEST_SUITE_P(fusings_gpu, deconv_scale_actv_quant_i8, ::testing::ValuesIn(std::vector<deconv_test_params>{
|
||||||
deconv_test_params{ CASE_DECONV_FP32_1, 2, 2, 5 },
|
deconv_test_params{ CASE_DECONV_FP32_1, 2, 3, 5 },
|
||||||
deconv_test_params{ CASE_DECONV_FP32_2, 2, 2, 5 },
|
deconv_test_params{ CASE_DECONV_FP32_2, 2, 3, 5 },
|
||||||
deconv_test_params{ CASE_DECONV_FP32_3, 2, 2, 5 },
|
deconv_test_params{ CASE_DECONV_FP32_3, 2, 3, 5 },
|
||||||
deconv_test_params{ CASE_DECONV_FP32_4, 2, 2, 5 },
|
deconv_test_params{ CASE_DECONV_FP32_4, 2, 3, 5 },
|
||||||
deconv_test_params{ CASE_DECONV_FP32_5, 2, 2, 5 },
|
deconv_test_params{ CASE_DECONV_FP32_5, 2, 3, 5 },
|
||||||
deconv_test_params{ CASE_DECONV_FP32_6, 2, 2, 5 },
|
deconv_test_params{ CASE_DECONV_FP32_6, 2, 3, 5 },
|
||||||
deconv_test_params{ CASE_DECONV_FP32_7, 2, 2, 5 },
|
deconv_test_params{ CASE_DECONV_FP32_7, 2, 3, 5 },
|
||||||
deconv_test_params{ CASE_DECONV_FP32_8, 2, 2, 5 },
|
deconv_test_params{ CASE_DECONV_FP32_8, 2, 3, 5 },
|
||||||
|
|
||||||
deconv_test_params{ CASE_DECONV_FP16_1, 2, 2, 5 },
|
deconv_test_params{ CASE_DECONV_FP16_1, 2, 3, 5 },
|
||||||
deconv_test_params{ CASE_DECONV_FP16_2, 2, 2, 5 },
|
deconv_test_params{ CASE_DECONV_FP16_2, 2, 3, 5 },
|
||||||
deconv_test_params{ CASE_DECONV_FP16_3, 2, 2, 5 },
|
deconv_test_params{ CASE_DECONV_FP16_3, 2, 3, 5 },
|
||||||
deconv_test_params{ CASE_DECONV_FP16_4, 2, 2, 5 },
|
deconv_test_params{ CASE_DECONV_FP16_4, 2, 3, 5 },
|
||||||
deconv_test_params{ CASE_DECONV_FP16_5, 2, 2, 5 },
|
deconv_test_params{ CASE_DECONV_FP16_5, 2, 3, 5 },
|
||||||
deconv_test_params{ CASE_DECONV_FP16_6, 2, 2, 5 },
|
deconv_test_params{ CASE_DECONV_FP16_6, 2, 3, 5 },
|
||||||
deconv_test_params{ CASE_DECONV_FP16_7, 2, 2, 5 },
|
deconv_test_params{ CASE_DECONV_FP16_7, 2, 3, 5 },
|
||||||
deconv_test_params{ CASE_DECONV_FP16_8, 2, 2, 5 },
|
deconv_test_params{ CASE_DECONV_FP16_8, 2, 3, 5 },
|
||||||
|
|
||||||
deconv_test_params{ CASE_DECONV_U8S8_1, 2, 2, 5 },
|
deconv_test_params{ CASE_DECONV_U8S8_1, 2, 3, 5 },
|
||||||
deconv_test_params{ CASE_DECONV_U8S8_2, 2, 2, 5 },
|
deconv_test_params{ CASE_DECONV_U8S8_2, 2, 3, 5 },
|
||||||
deconv_test_params{ CASE_DECONV_U8S8_3, 2, 2, 5 },
|
deconv_test_params{ CASE_DECONV_U8S8_3, 2, 3, 5 },
|
||||||
// deconv_test_params{ CASE_DECONV_U8S8_4, 2, 5 },
|
// deconv_test_params{ CASE_DECONV_U8S8_4, 2, 5 },
|
||||||
deconv_test_params{ CASE_DECONV_U8S8_5, 2, 2, 5 },
|
deconv_test_params{ CASE_DECONV_U8S8_5, 2, 3, 5 },
|
||||||
deconv_test_params{ CASE_DECONV_U8S8_6, 2, 2, 5 },
|
deconv_test_params{ CASE_DECONV_U8S8_6, 2, 3, 5 },
|
||||||
deconv_test_params{ CASE_DECONV_U8S8_7, 2, 2, 5 },
|
deconv_test_params{ CASE_DECONV_U8S8_7, 2, 3, 5 },
|
||||||
deconv_test_params{ CASE_DECONV_U8S8_8, 2, 2, 5 },
|
deconv_test_params{ CASE_DECONV_U8S8_8, 2, 3, 5 },
|
||||||
|
|
||||||
deconv_test_params{ CASE_DECONV_S8S8_1, 2, 2, 5 },
|
deconv_test_params{ CASE_DECONV_S8S8_1, 2, 3, 5 },
|
||||||
deconv_test_params{ CASE_DECONV_S8S8_2, 2, 2, 5 },
|
deconv_test_params{ CASE_DECONV_S8S8_2, 2, 3, 5 },
|
||||||
deconv_test_params{ CASE_DECONV_S8S8_3, 2, 2, 5 },
|
deconv_test_params{ CASE_DECONV_S8S8_3, 2, 3, 5 },
|
||||||
// deconv_test_params{ CASE_DECONV_S8S8_4, 2, 5 },
|
// deconv_test_params{ CASE_DECONV_S8S8_4, 2, 5 },
|
||||||
deconv_test_params{ CASE_DECONV_S8S8_5, 2, 2, 5 },
|
deconv_test_params{ CASE_DECONV_S8S8_5, 2, 3, 5 },
|
||||||
deconv_test_params{ CASE_DECONV_S8S8_6, 2, 2, 5 },
|
deconv_test_params{ CASE_DECONV_S8S8_6, 2, 3, 5 },
|
||||||
deconv_test_params{ CASE_DECONV_S8S8_7, 2, 2, 5 },
|
deconv_test_params{ CASE_DECONV_S8S8_7, 2, 3, 5 },
|
||||||
deconv_test_params{ CASE_DECONV_S8S8_8, 2, 2, 5 },
|
deconv_test_params{ CASE_DECONV_S8S8_8, 2, 3, 5 },
|
||||||
|
|
||||||
deconv_test_params{ CASE_DECONV_FP32_3D_1, 2, 2, 5 },
|
deconv_test_params{ CASE_DECONV_FP32_3D_1, 2, 3, 5 },
|
||||||
deconv_test_params{ CASE_DECONV_FP32_3D_2, 2, 2, 5 },
|
deconv_test_params{ CASE_DECONV_FP32_3D_2, 2, 3, 5 },
|
||||||
deconv_test_params{ CASE_DECONV_FP32_3D_3, 2, 2, 5 },
|
deconv_test_params{ CASE_DECONV_FP32_3D_3, 2, 3, 5 },
|
||||||
deconv_test_params{ CASE_DECONV_FP32_3D_4, 2, 2, 5 },
|
deconv_test_params{ CASE_DECONV_FP32_3D_4, 2, 3, 5 },
|
||||||
deconv_test_params{ CASE_DECONV_FP32_3D_5, 2, 2, 5 },
|
deconv_test_params{ CASE_DECONV_FP32_3D_5, 2, 3, 5 },
|
||||||
deconv_test_params{ CASE_DECONV_FP32_3D_6, 2, 2, 5 },
|
deconv_test_params{ CASE_DECONV_FP32_3D_6, 2, 3, 5 },
|
||||||
deconv_test_params{ CASE_DECONV_FP32_3D_7, 2, 2, 5 },
|
deconv_test_params{ CASE_DECONV_FP32_3D_7, 2, 3, 5 },
|
||||||
deconv_test_params{ CASE_DECONV_FP32_3D_8, 2, 2, 5 },
|
deconv_test_params{ CASE_DECONV_FP32_3D_8, 2, 3, 5 },
|
||||||
// FIXME no quantize implementation for bs_fs_yx_bsv16_fsv16 format AND add_required_reorders pass completely ruins data types
|
// FIXME no quantize implementation for bs_fs_yx_bsv16_fsv16 format AND add_required_reorders pass completely ruins data types
|
||||||
// add_required_reorders pass tries to reorder everything to output type if no format exists, this ruins fp32 -> int8 quantize
|
// add_required_reorders pass tries to reorder everything to output type if no format exists, this ruins fp32 -> int8 quantize
|
||||||
//deconv_test_params{ CASE_DECONV_FP32_3D_9, 3, 3, 5 },
|
//deconv_test_params{ CASE_DECONV_FP32_3D_9, 3, 3, 5 },
|
||||||
|
|
||||||
deconv_test_params{ CASE_DECONV_FP16_3D_1, 2, 2, 5 },
|
deconv_test_params{ CASE_DECONV_FP16_3D_1, 2, 3, 5 },
|
||||||
deconv_test_params{ CASE_DECONV_FP16_3D_2, 2, 2, 5 },
|
deconv_test_params{ CASE_DECONV_FP16_3D_2, 2, 3, 5 },
|
||||||
deconv_test_params{ CASE_DECONV_FP16_3D_3, 2, 2, 5 },
|
deconv_test_params{ CASE_DECONV_FP16_3D_3, 2, 3, 5 },
|
||||||
deconv_test_params{ CASE_DECONV_FP16_3D_4, 2, 2, 5 },
|
deconv_test_params{ CASE_DECONV_FP16_3D_4, 2, 3, 5 },
|
||||||
deconv_test_params{ CASE_DECONV_FP16_3D_5, 2, 2, 5 },
|
deconv_test_params{ CASE_DECONV_FP16_3D_5, 2, 3, 5 },
|
||||||
deconv_test_params{ CASE_DECONV_FP16_3D_6, 2, 2, 5 },
|
deconv_test_params{ CASE_DECONV_FP16_3D_6, 2, 3, 5 },
|
||||||
deconv_test_params{ CASE_DECONV_FP16_3D_7, 2, 2, 5 },
|
deconv_test_params{ CASE_DECONV_FP16_3D_7, 2, 3, 5 },
|
||||||
deconv_test_params{ CASE_DECONV_FP16_3D_8, 2, 2, 5 },
|
deconv_test_params{ CASE_DECONV_FP16_3D_8, 2, 3, 5 },
|
||||||
//deconv_test_params{ CASE_DECONV_FP16_3D_9, 3, 3, 5 },
|
//deconv_test_params{ CASE_DECONV_FP16_3D_9, 3, 3, 5 },
|
||||||
|
|
||||||
deconv_test_params{ CASE_DECONV_U8S8_3D_1, 2, 2, 5 },
|
deconv_test_params{ CASE_DECONV_U8S8_3D_1, 2, 3, 5 },
|
||||||
deconv_test_params{ CASE_DECONV_U8S8_3D_2, 2, 2, 5 },
|
deconv_test_params{ CASE_DECONV_U8S8_3D_2, 2, 3, 5 },
|
||||||
deconv_test_params{ CASE_DECONV_U8S8_3D_3, 2, 2, 5 },
|
deconv_test_params{ CASE_DECONV_U8S8_3D_3, 2, 3, 5 },
|
||||||
deconv_test_params{ CASE_DECONV_U8S8_3D_4, 2, 2, 5 },
|
deconv_test_params{ CASE_DECONV_U8S8_3D_4, 2, 3, 5 },
|
||||||
deconv_test_params{ CASE_DECONV_U8S8_3D_5, 2, 2, 5 },
|
deconv_test_params{ CASE_DECONV_U8S8_3D_5, 2, 3, 5 },
|
||||||
deconv_test_params{ CASE_DECONV_U8S8_3D_6, 2, 2, 5 },
|
deconv_test_params{ CASE_DECONV_U8S8_3D_6, 2, 3, 5 },
|
||||||
deconv_test_params{ CASE_DECONV_U8S8_3D_7, 2, 2, 5 },
|
deconv_test_params{ CASE_DECONV_U8S8_3D_7, 2, 3, 5 },
|
||||||
deconv_test_params{ CASE_DECONV_U8S8_3D_8, 2, 2, 5 },
|
deconv_test_params{ CASE_DECONV_U8S8_3D_8, 2, 3, 5 },
|
||||||
|
|
||||||
deconv_test_params{ CASE_DECONV_S8S8_3D_1, 2, 2, 5 },
|
deconv_test_params{ CASE_DECONV_S8S8_3D_1, 2, 3, 5 },
|
||||||
deconv_test_params{ CASE_DECONV_S8S8_3D_2, 2, 2, 5 },
|
deconv_test_params{ CASE_DECONV_S8S8_3D_2, 2, 3, 5 },
|
||||||
deconv_test_params{ CASE_DECONV_S8S8_3D_3, 2, 2, 5 },
|
deconv_test_params{ CASE_DECONV_S8S8_3D_3, 2, 3, 5 },
|
||||||
deconv_test_params{ CASE_DECONV_S8S8_3D_4, 2, 2, 5 },
|
deconv_test_params{ CASE_DECONV_S8S8_3D_4, 2, 3, 5 },
|
||||||
deconv_test_params{ CASE_DECONV_S8S8_3D_5, 2, 2, 5 },
|
deconv_test_params{ CASE_DECONV_S8S8_3D_5, 2, 3, 5 },
|
||||||
deconv_test_params{ CASE_DECONV_S8S8_3D_6, 2, 2, 5 },
|
deconv_test_params{ CASE_DECONV_S8S8_3D_6, 2, 3, 5 },
|
||||||
deconv_test_params{ CASE_DECONV_S8S8_3D_7, 2, 2, 5 },
|
deconv_test_params{ CASE_DECONV_S8S8_3D_7, 2, 3, 5 },
|
||||||
deconv_test_params{ CASE_DECONV_S8S8_3D_8, 2, 2, 5 },
|
deconv_test_params{ CASE_DECONV_S8S8_3D_8, 2, 3, 5 },
|
||||||
}));
|
}));
|
||||||
|
|
||||||
class deconv_scale_actv_quant_u8_eltw_scale_actv_quant_i8 : public DeconvolutionFusingTest {};
|
class deconv_scale_actv_quant_u8_eltw_scale_actv_quant_i8 : public DeconvolutionFusingTest {};
|
||||||
|
@ -35,6 +35,8 @@ struct mvn_test_params {
|
|||||||
class MVNFusingTest : public ::BaseFusingTest<mvn_test_params> {
|
class MVNFusingTest : public ::BaseFusingTest<mvn_test_params> {
|
||||||
public:
|
public:
|
||||||
void execute(mvn_test_params& p) {
|
void execute(mvn_test_params& p) {
|
||||||
|
if (engine.get_device_info().supports_immad)
|
||||||
|
p.expected_fused_primitives = p.expected_fused_primitives_onednn;
|
||||||
auto input_prim = get_mem(get_input_layout(p));
|
auto input_prim = get_mem(get_input_layout(p));
|
||||||
|
|
||||||
network network_not_fused(this->engine, this->topology_non_fused, bo_not_fused);
|
network network_not_fused(this->engine, this->topology_non_fused, bo_not_fused);
|
||||||
@ -211,30 +213,30 @@ INSTANTIATE_TEST_SUITE_P(fusings_gpu, mvn_scale_activation_eltwise_fp32_quantize
|
|||||||
// mvn_test_params{ CASE_MVN_F16_2, 2, 7 },
|
// mvn_test_params{ CASE_MVN_F16_2, 2, 7 },
|
||||||
// mvn_test_params{ CASE_MVN_3D_F16_1, 2, 7 },
|
// mvn_test_params{ CASE_MVN_3D_F16_1, 2, 7 },
|
||||||
// mvn_test_params{ CASE_MVN_3D_F16_2, 2, 7 },
|
// mvn_test_params{ CASE_MVN_3D_F16_2, 2, 7 },
|
||||||
mvn_test_params{ CASE_MVN_I8_1, 2, 3, 6 },
|
mvn_test_params{ CASE_MVN_I8_1, 2, 4, 6 },
|
||||||
mvn_test_params{ CASE_MVN_I8_2, 2, 3, 6 },
|
mvn_test_params{ CASE_MVN_I8_2, 2, 4, 6 },
|
||||||
mvn_test_params{ CASE_MVN_I8_3, 2, 3, 6 },
|
mvn_test_params{ CASE_MVN_I8_3, 2, 4, 6 },
|
||||||
mvn_test_params{ CASE_MVN_I8_4, 2, 3, 6 },
|
mvn_test_params{ CASE_MVN_I8_4, 2, 4, 6 },
|
||||||
mvn_test_params{ CASE_MVN_I8_5, 2, 3, 6 },
|
mvn_test_params{ CASE_MVN_I8_5, 2, 4, 6 },
|
||||||
mvn_test_params{ CASE_MVN_I8_6, 2, 3, 6 },
|
mvn_test_params{ CASE_MVN_I8_6, 2, 4, 6 },
|
||||||
mvn_test_params{ CASE_MVN_I8_7, 3, 3, 6 },
|
mvn_test_params{ CASE_MVN_I8_7, 3, 4, 6 },
|
||||||
mvn_test_params{ CASE_MVN_3D_I8_1, 2, 3, 6 },
|
mvn_test_params{ CASE_MVN_3D_I8_1, 2, 4, 6 },
|
||||||
mvn_test_params{ CASE_MVN_3D_I8_2, 2, 3, 6 },
|
mvn_test_params{ CASE_MVN_3D_I8_2, 2, 4, 6 },
|
||||||
mvn_test_params{ CASE_MVN_3D_I8_3, 2, 3, 6 },
|
mvn_test_params{ CASE_MVN_3D_I8_3, 2, 4, 6 },
|
||||||
mvn_test_params{ CASE_MVN_3D_I8_4, 2, 3, 6 },
|
mvn_test_params{ CASE_MVN_3D_I8_4, 2, 4, 6 },
|
||||||
mvn_test_params{ CASE_MVN_3D_I8_5, 3, 3, 6 },
|
mvn_test_params{ CASE_MVN_3D_I8_5, 3, 4, 6 },
|
||||||
mvn_test_params{ CASE_MVN_U8_1, 2, 3, 6 },
|
mvn_test_params{ CASE_MVN_U8_1, 2, 4, 6 },
|
||||||
mvn_test_params{ CASE_MVN_U8_2, 2, 3, 6 },
|
mvn_test_params{ CASE_MVN_U8_2, 2, 4, 6 },
|
||||||
mvn_test_params{ CASE_MVN_U8_3, 2, 3, 6 },
|
mvn_test_params{ CASE_MVN_U8_3, 2, 4, 6 },
|
||||||
mvn_test_params{ CASE_MVN_U8_4, 2, 3, 6 },
|
mvn_test_params{ CASE_MVN_U8_4, 2, 4, 6 },
|
||||||
mvn_test_params{ CASE_MVN_U8_5, 2, 3, 6 },
|
mvn_test_params{ CASE_MVN_U8_5, 2, 4, 6 },
|
||||||
mvn_test_params{ CASE_MVN_U8_6, 2, 3, 6 },
|
mvn_test_params{ CASE_MVN_U8_6, 2, 4, 6 },
|
||||||
mvn_test_params{ CASE_MVN_U8_7, 3, 3, 6 },
|
mvn_test_params{ CASE_MVN_U8_7, 3, 4, 6 },
|
||||||
mvn_test_params{ CASE_MVN_3D_U8_1, 2, 3, 6 },
|
mvn_test_params{ CASE_MVN_3D_U8_1, 2, 4, 6 },
|
||||||
mvn_test_params{ CASE_MVN_3D_U8_2, 2, 3, 6 },
|
mvn_test_params{ CASE_MVN_3D_U8_2, 2, 4, 6 },
|
||||||
mvn_test_params{ CASE_MVN_3D_U8_3, 2, 3, 6 },
|
mvn_test_params{ CASE_MVN_3D_U8_3, 2, 4, 6 },
|
||||||
mvn_test_params{ CASE_MVN_3D_U8_4, 2, 3, 6 },
|
mvn_test_params{ CASE_MVN_3D_U8_4, 2, 4, 6 },
|
||||||
mvn_test_params{ CASE_MVN_3D_U8_5, 3, 3, 6 },
|
mvn_test_params{ CASE_MVN_3D_U8_5, 3, 4, 6 },
|
||||||
}));
|
}));
|
||||||
|
|
||||||
class mvn_eltwise : public MVNFusingTest {};
|
class mvn_eltwise : public MVNFusingTest {};
|
||||||
|
@ -33,6 +33,8 @@ struct pooling_test_params {
|
|||||||
class PoolingFusingTest : public ::BaseFusingTest<pooling_test_params> {
|
class PoolingFusingTest : public ::BaseFusingTest<pooling_test_params> {
|
||||||
public:
|
public:
|
||||||
void execute(pooling_test_params& p) {
|
void execute(pooling_test_params& p) {
|
||||||
|
if (engine.get_device_info().supports_immad)
|
||||||
|
p.expected_fused_primitives = p.expected_fused_primitives_onednn;
|
||||||
auto input_prim = get_mem(get_input_layout(p));
|
auto input_prim = get_mem(get_input_layout(p));
|
||||||
build_options options;
|
build_options options;
|
||||||
options.set_option(build_option::optimize_data(true));
|
options.set_option(build_option::optimize_data(true));
|
||||||
@ -313,7 +315,7 @@ TEST_P(pooling_scale_activation_quantize, per_channel) {
|
|||||||
data("scale_data", get_mem(get_per_channel_layout(p), 1.0f / 16.0f)),
|
data("scale_data", get_mem(get_per_channel_layout(p), 1.0f / 16.0f)),
|
||||||
pooling("pooling", input_info("input"), p.pool_mode, kernel, stride, pads_begin, pads_end),
|
pooling("pooling", input_info("input"), p.pool_mode, kernel, stride, pads_begin, pads_end),
|
||||||
eltwise("scale", { input_info("pooling"), input_info("scale_data") }, eltwise_mode::prod, p.default_type),
|
eltwise("scale", { input_info("pooling"), input_info("scale_data") }, eltwise_mode::prod, p.default_type),
|
||||||
activation("activation", input_info("scale"), activation_func::hyperbolic_tan),
|
activation("activation", input_info("scale"), activation_func::relu),
|
||||||
quantize("quantize", input_info("activation"), input_info("in_lo"), input_info("in_hi"),
|
quantize("quantize", input_info("activation"), input_info("in_lo"), input_info("in_hi"),
|
||||||
input_info("out_lo"), input_info("out_hi"), 255, data_types::u8),
|
input_info("out_lo"), input_info("out_hi"), 255, data_types::u8),
|
||||||
reorder("output_reorder", input_info("quantize"), p.default_format, data_types::f32)
|
reorder("output_reorder", input_info("quantize"), p.default_format, data_types::f32)
|
||||||
@ -325,40 +327,40 @@ TEST_P(pooling_scale_activation_quantize, per_channel) {
|
|||||||
|
|
||||||
INSTANTIATE_TEST_SUITE_P(fusings_gpu, pooling_scale_activation_quantize, ::testing::ValuesIn(std::vector<pooling_test_params>{
|
INSTANTIATE_TEST_SUITE_P(fusings_gpu, pooling_scale_activation_quantize, ::testing::ValuesIn(std::vector<pooling_test_params>{
|
||||||
// Input type: FP32
|
// Input type: FP32
|
||||||
pooling_test_params{ CASE_POOLING_F32_3, 2, 3, 5, pooling_mode::average, "pooling_gpu_bfyx_block_opt" },
|
pooling_test_params{ CASE_POOLING_F32_3, 2, 2, 5, pooling_mode::average, "pooling_gpu_bfyx_block_opt" },
|
||||||
pooling_test_params{ CASE_POOLING_F32_3, 2, 3, 5, pooling_mode::max, "pooling_gpu_bfyx_block_opt" },
|
pooling_test_params{ CASE_POOLING_F32_3, 2, 2, 5, pooling_mode::max, "pooling_gpu_bfyx_block_opt" },
|
||||||
pooling_test_params{ CASE_POOLING_F32_3, 2, 3, 5, pooling_mode::average, "pooling_gpu_ref" },
|
pooling_test_params{ CASE_POOLING_F32_3, 2, 2, 5, pooling_mode::average, "pooling_gpu_ref" },
|
||||||
pooling_test_params{ CASE_POOLING_F32_3, 2, 3, 5, pooling_mode::max, "pooling_gpu_ref" },
|
pooling_test_params{ CASE_POOLING_F32_3, 2, 2, 5, pooling_mode::max, "pooling_gpu_ref" },
|
||||||
pooling_test_params{ CASE_POOLING_F32_4, 2, 3, 5, pooling_mode::average, "pooling_gpu_fs_b_yx_fsv32" },
|
pooling_test_params{ CASE_POOLING_F32_4, 2, 2, 5, pooling_mode::average, "pooling_gpu_fs_b_yx_fsv32" },
|
||||||
pooling_test_params{ CASE_POOLING_F32_4, 2, 3, 5, pooling_mode::max, "pooling_gpu_fs_b_yx_fsv32" },
|
pooling_test_params{ CASE_POOLING_F32_4, 2, 2, 5, pooling_mode::max, "pooling_gpu_fs_b_yx_fsv32" },
|
||||||
pooling_test_params{ CASE_POOLING_F32_5, 2, 3, 5, pooling_mode::average, "pooling_gpu_byxf_padding_opt" },
|
pooling_test_params{ CASE_POOLING_F32_5, 2, 2, 5, pooling_mode::average, "pooling_gpu_byxf_padding_opt" },
|
||||||
pooling_test_params{ CASE_POOLING_F32_5, 2, 3, 5, pooling_mode::max, "pooling_gpu_byxf_padding_opt" },
|
pooling_test_params{ CASE_POOLING_F32_5, 2, 2, 5, pooling_mode::max, "pooling_gpu_byxf_padding_opt" },
|
||||||
pooling_test_params{ CASE_POOLING_F32_6, 2, 3, 5, pooling_mode::average, "pooling_gpu_byxf_opt" },
|
pooling_test_params{ CASE_POOLING_F32_6, 2, 2, 5, pooling_mode::average, "pooling_gpu_byxf_opt" },
|
||||||
pooling_test_params{ CASE_POOLING_F32_6, 2, 3, 5, pooling_mode::max, "pooling_gpu_byxf_opt" },
|
pooling_test_params{ CASE_POOLING_F32_6, 2, 2, 5, pooling_mode::max, "pooling_gpu_byxf_opt" },
|
||||||
pooling_test_params{ CASE_POOLING_F32_7, 2, 3, 5, pooling_mode::average, "pooling_gpu_bsv16_fsv16" },
|
pooling_test_params{ CASE_POOLING_F32_7, 2, 2, 5, pooling_mode::average, "pooling_gpu_bsv16_fsv16" },
|
||||||
pooling_test_params{ CASE_POOLING_F32_7, 2, 3, 5, pooling_mode::max, "pooling_gpu_bsv16_fsv16" },
|
pooling_test_params{ CASE_POOLING_F32_7, 2, 2, 5, pooling_mode::max, "pooling_gpu_bsv16_fsv16" },
|
||||||
pooling_test_params{ CASE_POOLING_F32_8, 2, 3, 5, pooling_mode::average, "pooling_gpu_blocked" },
|
pooling_test_params{ CASE_POOLING_F32_8, 2, 2, 5, pooling_mode::average, "pooling_gpu_blocked" },
|
||||||
pooling_test_params{ CASE_POOLING_F32_8, 2, 3, 5, pooling_mode::max, "pooling_gpu_blocked" },
|
pooling_test_params{ CASE_POOLING_F32_8, 2, 2, 5, pooling_mode::max, "pooling_gpu_blocked" },
|
||||||
pooling_test_params{ CASE_POOLING_F32_9, 2, 3, 5, pooling_mode::average, "pooling_gpu_ref" },
|
pooling_test_params{ CASE_POOLING_F32_9, 2, 2, 5, pooling_mode::average, "pooling_gpu_ref" },
|
||||||
pooling_test_params{ CASE_POOLING_F32_9, 2, 3, 5, pooling_mode::max, "pooling_gpu_ref" },
|
pooling_test_params{ CASE_POOLING_F32_9, 2, 2, 5, pooling_mode::max, "pooling_gpu_ref" },
|
||||||
pooling_test_params{ CASE_POOLING_F32_10, 2, 3, 5, pooling_mode::average, "pooling_gpu_bsv16_fsv16" },
|
pooling_test_params{ CASE_POOLING_F32_10, 2, 2, 5, pooling_mode::average, "pooling_gpu_bsv16_fsv16" },
|
||||||
pooling_test_params{ CASE_POOLING_F32_10, 2, 3, 5, pooling_mode::max, "pooling_gpu_bsv16_fsv16" },
|
pooling_test_params{ CASE_POOLING_F32_10, 2, 2, 5, pooling_mode::max, "pooling_gpu_bsv16_fsv16" },
|
||||||
|
|
||||||
// Input type: INT8
|
// Input type: INT8
|
||||||
pooling_test_params{ CASE_POOLING_I8_5, 2, 3, 5, pooling_mode::average, "pooling_gpu_b_fs_yx_fsv4" },
|
pooling_test_params{ CASE_POOLING_I8_5, 2, 2, 5, pooling_mode::average, "pooling_gpu_b_fs_yx_fsv4" },
|
||||||
pooling_test_params{ CASE_POOLING_I8_5, 2, 3, 5, pooling_mode::max, "pooling_gpu_b_fs_yx_fsv4" },
|
pooling_test_params{ CASE_POOLING_I8_5, 2, 2, 5, pooling_mode::max, "pooling_gpu_b_fs_yx_fsv4" },
|
||||||
pooling_test_params{ CASE_POOLING_I8_6, 2, 3, 5, pooling_mode::average, "pooling_gpu_int8_ref" },
|
pooling_test_params{ CASE_POOLING_I8_6, 2, 2, 5, pooling_mode::average, "pooling_gpu_int8_ref" },
|
||||||
pooling_test_params{ CASE_POOLING_I8_6, 2, 3, 5, pooling_mode::max, "pooling_gpu_int8_ref" },
|
pooling_test_params{ CASE_POOLING_I8_6, 2, 2, 5, pooling_mode::max, "pooling_gpu_int8_ref" },
|
||||||
|
|
||||||
// Input type: UINT8
|
// Input type: UINT8
|
||||||
pooling_test_params{ CASE_POOLING_U8_3, 2, 3, 5, pooling_mode::average, "pooling_gpu_int8_ref" },
|
pooling_test_params{ CASE_POOLING_U8_3, 2, 2, 5, pooling_mode::average, "pooling_gpu_int8_ref" },
|
||||||
pooling_test_params{ CASE_POOLING_U8_3, 2, 3, 5, pooling_mode::max, "pooling_gpu_int8_ref" },
|
pooling_test_params{ CASE_POOLING_U8_3, 2, 2, 5, pooling_mode::max, "pooling_gpu_int8_ref" },
|
||||||
pooling_test_params{ CASE_POOLING_U8_3, 2, 3, 5, pooling_mode::average, "pooling_gpu_b_fs_yx_fsv4" },
|
pooling_test_params{ CASE_POOLING_U8_3, 2, 2, 5, pooling_mode::average, "pooling_gpu_b_fs_yx_fsv4" },
|
||||||
pooling_test_params{ CASE_POOLING_U8_3, 2, 3, 5, pooling_mode::max, "pooling_gpu_b_fs_yx_fsv4" },
|
pooling_test_params{ CASE_POOLING_U8_3, 2, 2, 5, pooling_mode::max, "pooling_gpu_b_fs_yx_fsv4" },
|
||||||
pooling_test_params{ CASE_POOLING_U8_5, 2, 3, 5, pooling_mode::average, "pooling_gpu_int8_ref" },
|
pooling_test_params{ CASE_POOLING_U8_5, 2, 2, 5, pooling_mode::average, "pooling_gpu_int8_ref" },
|
||||||
pooling_test_params{ CASE_POOLING_U8_5, 2, 3, 5, pooling_mode::max, "pooling_gpu_int8_ref" },
|
pooling_test_params{ CASE_POOLING_U8_5, 2, 2, 5, pooling_mode::max, "pooling_gpu_int8_ref" },
|
||||||
pooling_test_params{ CASE_POOLING_U8_6, 2, 3, 5, pooling_mode::average, "pooling_gpu_int8_ref" },
|
pooling_test_params{ CASE_POOLING_U8_6, 2, 2, 5, pooling_mode::average, "pooling_gpu_int8_ref" },
|
||||||
pooling_test_params{ CASE_POOLING_U8_6, 2, 3, 5, pooling_mode::max, "pooling_gpu_int8_ref" },
|
pooling_test_params{ CASE_POOLING_U8_6, 2, 2, 5, pooling_mode::max, "pooling_gpu_int8_ref" },
|
||||||
}));
|
}));
|
||||||
|
|
||||||
INSTANTIATE_TEST_SUITE_P(DISABLED_fusings_gpu, pooling_scale_activation_quantize, ::testing::ValuesIn(std::vector<pooling_test_params>{
|
INSTANTIATE_TEST_SUITE_P(DISABLED_fusings_gpu, pooling_scale_activation_quantize, ::testing::ValuesIn(std::vector<pooling_test_params>{
|
||||||
|
@ -180,6 +180,11 @@ class binary_convolution_test : public ::testing::TestWithParam<TestParams> {
|
|||||||
|
|
||||||
TEST_P(binary_convolution_test, conv) {
|
TEST_P(binary_convolution_test, conv) {
|
||||||
auto& engine = get_test_engine();
|
auto& engine = get_test_engine();
|
||||||
|
|
||||||
|
// DG2 is not validated for binary convolution: https://github.com/openvinotoolkit/openvino/pull/12486
|
||||||
|
if(engine.get_device_info().supports_immad)
|
||||||
|
return;
|
||||||
|
|
||||||
cldnn::build_options options;
|
cldnn::build_options options;
|
||||||
options.set_option(cldnn::build_option::optimize_data(true));
|
options.set_option(cldnn::build_option::optimize_data(true));
|
||||||
topology topology_bin;
|
topology topology_bin;
|
||||||
@ -337,6 +342,9 @@ static void set_binary_values(cldnn::memory::ptr mem, std::vector<T> args) {
|
|||||||
|
|
||||||
TEST(binary_convolution, basic_convolution_1x1_single_packed_channel) {
|
TEST(binary_convolution, basic_convolution_1x1_single_packed_channel) {
|
||||||
auto& engine = get_test_engine();
|
auto& engine = get_test_engine();
|
||||||
|
// DG2 is not validated for binary convolution: https://github.com/openvinotoolkit/openvino/pull/12486
|
||||||
|
if(engine.get_device_info().supports_immad)
|
||||||
|
return;
|
||||||
|
|
||||||
auto input = engine.allocate_memory({ data_types::bin, format::b_fs_yx_32fp, { 1, 16, 2, 2 } });
|
auto input = engine.allocate_memory({ data_types::bin, format::b_fs_yx_32fp, { 1, 16, 2, 2 } });
|
||||||
auto weights = engine.allocate_memory({ data_types::bin, format::bfyx, { 4, 16, 1, 1 } });
|
auto weights = engine.allocate_memory({ data_types::bin, format::bfyx, { 4, 16, 1, 1 } });
|
||||||
@ -420,6 +428,9 @@ TEST(binary_convolution, basic_convolution_1x1_single_packed_channel) {
|
|||||||
|
|
||||||
TEST(binary_convolution, basic_convolution_1x1_single_packed_channel_fp16) {
|
TEST(binary_convolution, basic_convolution_1x1_single_packed_channel_fp16) {
|
||||||
auto& engine = get_test_engine();
|
auto& engine = get_test_engine();
|
||||||
|
// DG2 is not validated for binary convolution: https://github.com/openvinotoolkit/openvino/pull/12486
|
||||||
|
if(engine.get_device_info().supports_immad)
|
||||||
|
return;
|
||||||
|
|
||||||
auto input = engine.allocate_memory({ data_types::bin, format::b_fs_yx_32fp, { 1, 16, 2, 2 } });
|
auto input = engine.allocate_memory({ data_types::bin, format::b_fs_yx_32fp, { 1, 16, 2, 2 } });
|
||||||
auto weights = engine.allocate_memory({ data_types::bin, format::bfyx, { 4, 16, 1, 1 } });
|
auto weights = engine.allocate_memory({ data_types::bin, format::bfyx, { 4, 16, 1, 1 } });
|
||||||
|
@ -393,7 +393,7 @@ double default_tolerance(data_types dt) {
|
|||||||
return 1e-5;
|
return 1e-5;
|
||||||
case data_types::i8:
|
case data_types::i8:
|
||||||
case data_types::u8:
|
case data_types::u8:
|
||||||
return 1.;
|
return 1.5;
|
||||||
default:
|
default:
|
||||||
IE_THROW() << "Unknown";
|
IE_THROW() << "Unknown";
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user