diff --git a/ge/graph/passes/merge_pass.cc b/ge/graph/passes/merge_pass.cc index 61aab4aa..8938b47e 100644 --- a/ge/graph/passes/merge_pass.cc +++ b/ge/graph/passes/merge_pass.cc @@ -79,6 +79,16 @@ Status MergePass::Run(NodePtr &node) { return FAILED; } } + auto in_node = in_data_nodes.at(0); + bool memcpy_optimize_flag = (in_node != nullptr) && + ((in_node->GetType() == MEMCPYASYNC) || (in_node->GetType() == MEMCPYADDRASYNC)) && + (in_node->GetInDataNodes().size() == 1); + if (memcpy_optimize_flag) { + if (IsolateAndDeleteNode(in_node, {0}) != SUCCESS) { + GELOGE(FAILED, "Isolate and delete node %s failed.", in_node->GetName().c_str()); + return FAILED; + } + } return IsolateAndDeleteNode(node, merge_io_map); } default: {