[GPU] Fix LCM notebook failure issue for int8 model. (#20944)
Fix to use partial_shape in dynamic case. Not get_dims(). Signed-off-by: hyunback <hyunback.kim@intel.com>
This commit is contained in:
@@ -530,6 +530,10 @@ void prepare_quantization::prepare_asymmetric_quantization(program &p, convoluti
|
||||
in1.get_output_layout().data_type != data_types::i8)
|
||||
return;
|
||||
|
||||
const size_t feature_idx = 1;
|
||||
if (asymmetric_data && in0.get_output_layout().get_partial_shape()[feature_idx].is_dynamic())
|
||||
return;
|
||||
|
||||
auto old_conv_prim = convolution_node.get_primitive();
|
||||
|
||||
primitive_id input = old_conv_prim->input[0].pid;
|
||||
@@ -546,7 +550,7 @@ void prepare_quantization::prepare_asymmetric_quantization(program &p, convoluti
|
||||
wl = wl.convert_to_weights_layout(convolution_node.typed_desc()->grouped_weights_shape);
|
||||
}
|
||||
int ofm = wl.group() * wl.ofm();
|
||||
int ifm = in0.get_output_layout().feature();
|
||||
int ifm = in0.get_output_layout().get_partial_shape()[feature_idx].get_length();
|
||||
int ofm_aligned = align_to(ofm, 32);
|
||||
int ifm_aligned = align_to(ifm, 32);
|
||||
|
||||
|
||||
@@ -44,4 +44,30 @@ TEST(prepare_quantization, program_replace_check_num_of_nodes) {
|
||||
program_wrapper::apply_opt_pass<prepare_quantization>(*prog);
|
||||
|
||||
ASSERT_TRUE(prog->get_node("quantize").get_dependencies().size() == 9);
|
||||
}
|
||||
}
|
||||
|
||||
TEST(prepare_quantization, dynamic_conv_asymmetric_data_weight_no_failure) {
|
||||
auto& engine = get_test_engine();
|
||||
|
||||
ov::Shape in_shape = { 1, 15, 4, 5 };
|
||||
auto in_layout = layout{ ov::PartialShape::dynamic(in_shape.size()), data_types::u8, format::bfyx };
|
||||
auto input_ptr = engine.allocate_memory({ data_types::u8, format::bfyx, { 1, 15, 4, 5 } });
|
||||
auto w_mem_ptr = engine.allocate_memory({ ov::PartialShape{ 30, 15, 3, 3 }, data_types::i8, format::bfyx });
|
||||
auto zp_mem_ptr = engine.allocate_memory({ in_shape, data_types::u8, format::bfyx });
|
||||
|
||||
topology topology;
|
||||
|
||||
topology.add(input_layout("input", in_layout));
|
||||
topology.add(data("weights", w_mem_ptr));
|
||||
topology.add(data("a_zp", zp_mem_ptr));
|
||||
topology.add(eltwise("a_sub", { input_info("input"), input_info("a_zp") }, eltwise_mode::sub, data_types::f32));
|
||||
topology.add(convolution("conv_prim", input_info("a_sub"), "weights", "", 1, {1, 1}, {1, 1}, {0, 0}, {0, 0}, false));
|
||||
|
||||
ExecutionConfig 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_ptr);
|
||||
|
||||
EXPECT_NO_THROW(network.execute());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user