Skip to content

Commit 46b0852

Browse files
[NPUW] Extend ConvToMatmul pattern (openvinotoolkit#27561)
Support case where Const has no Convert after it
1 parent ea36b83 commit 46b0852

File tree

1 file changed

+3
-2
lines changed
  • src/plugins/intel_npu/src/plugin/npuw/partitioning/patterns

1 file changed

+3
-2
lines changed

src/plugins/intel_npu/src/plugin/npuw/partitioning/patterns/opt.cpp

+3-2
Original file line numberDiff line numberDiff line change
@@ -1501,6 +1501,7 @@ ConvToMatmul::ConvToMatmul(Context::Ref ctx) {
15011501
auto matched_node_transpose_in = node_to_output.at(transpose_in).get_node_shared_ptr();
15021502
auto matched_node_transpose_out = node_to_output.at(transpose_out).get_node_shared_ptr();
15031503
auto matched_node_multiply = node_to_output.at(multiply).get_node_shared_ptr();
1504+
const auto& cvt2_or_multiply = uat::_(node_to_output).at_or_at(convert2, multiply);
15041505

15051506
const auto& shape = matched_node_param->get_shape();
15061507
const auto& shape2 = matched_node_param2->get_shape();
@@ -1536,10 +1537,10 @@ ConvToMatmul::ConvToMatmul(Context::Ref ctx) {
15361537
auto new_reshape2 = std::make_shared<ov::op::v1::Reshape>(matched_node_param2, new_const2, false);
15371538

15381539
// Connect to Reshape
1539-
if (ov::op::util::is_parameter(matched_node_param2)) {
1540+
if (cvt2_or_multiply == matched_node_multiply) { // param -> multiply
15401541
matched_node_multiply->input(1).replace_source_output(new_reshape2);
15411542
matched_node_multiply->validate_and_infer_types();
1542-
} else { // constant -> convert -> multiply
1543+
} else { // constant -> (convert) -> multiply
15431544
node_to_output.at(convert2).get_node_shared_ptr()->input(0).replace_source_output(new_reshape2);
15441545
node_to_output.at(convert2).get_node_shared_ptr()->validate_and_infer_types();
15451546
matched_node_multiply->validate_and_infer_types();

0 commit comments

Comments
 (0)