From d42dabcd43249971d15d3aa16738bb85f5238566 Mon Sep 17 00:00:00 2001 From: zhaoxinxin Date: Wed, 28 Oct 2020 14:39:52 +0800 Subject: [PATCH 1/3] 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; } From 61d3f45e9a729d0aff9f5d41eed7b5f29477a0fb Mon Sep 17 00:00:00 2001 From: zhaoxinxin Date: Wed, 28 Oct 2020 14:39:52 +0800 Subject: [PATCH 2/3] Bugfix: fix transpose fusion with input&output format check --- ge/graph/passes/transpose_transdata_pass.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ge/graph/passes/transpose_transdata_pass.cc b/ge/graph/passes/transpose_transdata_pass.cc index e8539f58..cf4bd069 100644 --- a/ge/graph/passes/transpose_transdata_pass.cc +++ b/ge/graph/passes/transpose_transdata_pass.cc @@ -48,7 +48,7 @@ Status TransposeTransDataPass::Run(NodePtr &node) { } auto input_format = op_desc->GetInputDescPtr(0)->GetFormat(); auto output_format = op_desc->GetOutputDescPtr(0)->GetFormat(); - if (intput_format == output_format) { + if (input_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(), From 9bde140ac074e8f280ace55493330a17b5fe9af1 Mon Sep 17 00:00:00 2001 From: zhaoxinxin Date: Wed, 28 Oct 2020 16:15:44 +0800 Subject: [PATCH 3/3] modified: ge/graph/passes/transop_without_reshape_fusion_pass.cc --- ge/graph/passes/transop_without_reshape_fusion_pass.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ge/graph/passes/transop_without_reshape_fusion_pass.cc b/ge/graph/passes/transop_without_reshape_fusion_pass.cc index 7adee429..81aeb831 100644 --- a/ge/graph/passes/transop_without_reshape_fusion_pass.cc +++ b/ge/graph/passes/transop_without_reshape_fusion_pass.cc @@ -131,7 +131,7 @@ graphStatus TransOpWithoutReshapeFusionPass::GetSubGraphNodesInfo() { sub_graph_has_reshape_node[i] = true; break; } - if (in_node->GetType() == TRANSOPSE || in_node->GetType() == TRANSOPSED) { + if (in_node->GetType() == TRANSPOSE || in_node->GetType() == TRANSPOSED) { auto input_format = in_node->GetOpDesc()->GetInputDescPtr(0)->GetFormat(); auto output_format = in_node->GetOpDesc()->GetOutputDescPtr(0)->GetFormat(); if (input_format == output_format) {