From e745a90b9a5a61e84c386a3911a65ae4d1eec3bb Mon Sep 17 00:00:00 2001 From: yuchaojie Date: Thu, 15 Apr 2021 16:37:35 +0800 Subject: [PATCH] fix conv2dbackprop_eltwise_eltwise_fusion_pass which lack output_used_num --- .../conv2dbackprop_eltwise_eltwise_fusion_pass.cc | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/mindspore/ccsrc/backend/optimizer/ascend/buffer_fusion/conv2dbackprop_eltwise_eltwise_fusion_pass.cc b/mindspore/ccsrc/backend/optimizer/ascend/buffer_fusion/conv2dbackprop_eltwise_eltwise_fusion_pass.cc index 0c61e1a84d..787771aed1 100644 --- a/mindspore/ccsrc/backend/optimizer/ascend/buffer_fusion/conv2dbackprop_eltwise_eltwise_fusion_pass.cc +++ b/mindspore/ccsrc/backend/optimizer/ascend/buffer_fusion/conv2dbackprop_eltwise_eltwise_fusion_pass.cc @@ -38,10 +38,13 @@ void Conv2DBackpropEltwiseEltwiseFusionPass::MatchConv2DBackpropInputEltwiseEltw } else { return; } + auto manager = kernel_graph.manager(); + MS_EXCEPTION_IF_NULL(manager); auto input_cnode = eltwise_input->cast(); MS_EXCEPTION_IF_NULL(input_cnode); auto double_in_eltwise_input = input_cnode->input(2); MS_EXCEPTION_IF_NULL(double_in_eltwise_input); + std::vector conv2d_bp_output_used_num; if (!double_in_eltwise_input->isa() || !AnfAlgo::IsRealCNodeKernel(double_in_eltwise_input)) { return; } @@ -50,6 +53,8 @@ void Conv2DBackpropEltwiseEltwiseFusionPass::MatchConv2DBackpropInputEltwiseEltw (void)record.insert(double_in_eltwise_input); candidate_fusion->push_back(record); SetRecordFusionId(record); + conv2d_bp_output_used_num.emplace_back(SizeToLong(manager->node_users()[double_in_eltwise_input].size())); + AnfAlgo::SetNodeAttr(kAttrOutputUsedNum, MakeValue(conv2d_bp_output_used_num), double_in_eltwise_input); } else { auto double_in_eltwise_input_1 = input_cnode->input(1); MS_EXCEPTION_IF_NULL(double_in_eltwise_input_1); @@ -61,8 +66,13 @@ void Conv2DBackpropEltwiseEltwiseFusionPass::MatchConv2DBackpropInputEltwiseEltw (void)record.insert(double_in_eltwise_input_1); candidate_fusion->push_back(record); SetRecordFusionId(record); + conv2d_bp_output_used_num.emplace_back(SizeToLong(manager->node_users()[double_in_eltwise_input_1].size())); + AnfAlgo::SetNodeAttr(kAttrOutputUsedNum, MakeValue(conv2d_bp_output_used_num), double_in_eltwise_input_1); } } + std::vector eltwise_output_used_num; + eltwise_output_used_num.emplace_back(SizeToLong(manager->node_users()[input_cnode].size())); + AnfAlgo::SetNodeAttr(kAttrOutputUsedNum, MakeValue(eltwise_output_used_num), eltwise_input); } void Conv2DBackpropEltwiseEltwiseFusionPass::MatchSingleFusionPattern(const session::KernelGraph &kernel_graph,