From d42dabcd43249971d15d3aa16738bb85f5238566 Mon Sep 17 00:00:00 2001 From: zhaoxinxin Date: Wed, 28 Oct 2020 14:39:52 +0800 Subject: [PATCH] Bugfix: fix transpose fusion with input&output format check --- ge/graph/passes/transop_without_reshape_fusion_pass.cc | 8 ++++++++ ge/graph/passes/transpose_transdata_pass.cc | 9 +++++++++ 2 files changed, 17 insertions(+) diff --git a/ge/graph/passes/transop_without_reshape_fusion_pass.cc b/ge/graph/passes/transop_without_reshape_fusion_pass.cc index 61bca6b8..7adee429 100644 --- a/ge/graph/passes/transop_without_reshape_fusion_pass.cc +++ b/ge/graph/passes/transop_without_reshape_fusion_pass.cc @@ -131,6 +131,14 @@ graphStatus TransOpWithoutReshapeFusionPass::GetSubGraphNodesInfo() { sub_graph_has_reshape_node[i] = true; break; } + if (in_node->GetType() == TRANSOPSE || in_node->GetType() == TRANSOPSED) { + auto input_format = in_node->GetOpDesc()->GetInputDescPtr(0)->GetFormat(); + auto output_format = in_node->GetOpDesc()->GetOutputDescPtr(0)->GetFormat(); + if (input_format == output_format) { + sub_graph_has_reshape_node[i] = true; + break; + } + } auto out_anchor = iter->first; GE_CHECK_NOTNULL(out_anchor); diff --git a/ge/graph/passes/transpose_transdata_pass.cc b/ge/graph/passes/transpose_transdata_pass.cc index b9bd59be..e8539f58 100644 --- a/ge/graph/passes/transpose_transdata_pass.cc +++ b/ge/graph/passes/transpose_transdata_pass.cc @@ -46,6 +46,15 @@ Status TransposeTransDataPass::Run(NodePtr &node) { if (op_desc->GetType() != TRANSPOSED) { return SUCCESS; } + auto input_format = op_desc->GetInputDescPtr(0)->GetFormat(); + auto output_format = op_desc->GetOutputDescPtr(0)->GetFormat(); + if (intput_format == output_format) { + GELOGW("Node %s input format is %s, output format is %s, should not happend. Ignore pass.", + op_desc->GetName().c_str(), + TypeUtils::FormatToSerialString(input_format).c_str(), + TypeUtils::FormatToSerialString(output_format).c_str()); + return SUCCESS; + } if (CheckOneInAndOneOutDataAnchor(node) != SUCCESS) { return FAILED; }