| @@ -607,6 +607,9 @@ Status ge::GraphPartitioner::AddPartitionsToGraphNode(vector<ge::SubGraphInfoPtr | |||||
| return FAILED; | return FAILED; | ||||
| } | } | ||||
| auto &engine_name = graph_info_.partitions_.at(sub_graph); | auto &engine_name = graph_info_.partitions_.at(sub_graph); | ||||
| (void)AttrUtils::SetStr(sub_graph, ATTR_NAME_PARENT_GRAPH_NAME, compute_graph->GetName()); | |||||
| GELOGD("set attr success. subgraph(%s) with parent graph(%s)", sub_graph->GetName().c_str(), | |||||
| compute_graph->GetName().c_str()); | |||||
| GE_DUMP(sub_graph, sub_graph->GetName() + "_" + mode_2_str_[graph_info_.mode_]); | GE_DUMP(sub_graph, sub_graph->GetName() + "_" + mode_2_str_[graph_info_.mode_]); | ||||
| if (!session_graph_id.empty()) { | if (!session_graph_id.empty()) { | ||||
| GE_IF_BOOL_EXEC(!AttrUtils::SetStr(sub_graph, ATTR_NAME_SESSION_GRAPH_ID, session_graph_id), | GE_IF_BOOL_EXEC(!AttrUtils::SetStr(sub_graph, ATTR_NAME_SESSION_GRAPH_ID, session_graph_id), | ||||
| @@ -614,9 +617,6 @@ Status ge::GraphPartitioner::AddPartitionsToGraphNode(vector<ge::SubGraphInfoPtr | |||||
| } | } | ||||
| // flush parent node of subgraph | // flush parent node of subgraph | ||||
| sub_graph->SetParentNode(compute_graph->GetParentNode()); | sub_graph->SetParentNode(compute_graph->GetParentNode()); | ||||
| (void)AttrUtils::SetStr(*sub_graph, ATTR_NAME_PARENT_GRAPH_NAME, compute_graph->GetName()); | |||||
| GELOGD("set attr success. subgraph(%s) with parent graph(%s)", sub_graph->GetName().c_str(), | |||||
| compute_graph->GetName().c_str()); | |||||
| auto sgi = MakeShared<SubGraphInfo>(); | auto sgi = MakeShared<SubGraphInfo>(); | ||||
| if (sgi == nullptr) { | if (sgi == nullptr) { | ||||
| GELOGE(GE_GRAPH_PARAM_NULLPTR, "[GraphPartitioner]: MakeShared sub graph info failed."); | GELOGE(GE_GRAPH_PARAM_NULLPTR, "[GraphPartitioner]: MakeShared sub graph info failed."); | ||||
| @@ -805,8 +805,19 @@ Status ge::GraphPartitioner::SplitSubGraphs(ge::ComputeGraphPtr compute_graph) { | |||||
| GELOGD("In anchor index is %d", AnchorUtils::GetIdx(in_anchor)); | GELOGD("In anchor index is %d", AnchorUtils::GetIdx(in_anchor)); | ||||
| for (auto &peer_out_anchor : in_anchor->GetPeerAnchors()) { | for (auto &peer_out_anchor : in_anchor->GetPeerAnchors()) { | ||||
| GELOGD("Peer out anchor index is %d", AnchorUtils::GetIdx(peer_out_anchor)); | GELOGD("Peer out anchor index is %d", AnchorUtils::GetIdx(peer_out_anchor)); | ||||
| // All nodes have a copy in corresponding_node_in_partitions_, so function at can not be execption | |||||
| auto parent_node = graph_info_.corresponding_node_in_partitions_.at(peer_out_anchor->GetOwnerNode()); | |||||
| // Normally, all nodes have a copy in corresponding_node_in_partitions_, so function at can not be exception | |||||
| auto iter = graph_info_.corresponding_node_in_partitions_.find(peer_out_anchor->GetOwnerNode()); | |||||
| if (iter == graph_info_.corresponding_node_in_partitions_.end()) { | |||||
| GELOGE(GRAPH_FAILED, | |||||
| "[SpiltSubGraphs]: node[%s]id[%ld]'s parent_node[%s]id[%ld]" | |||||
| "should make corresponding in advance", | |||||
| node->GetOpDesc()->GetName().c_str(), node->GetOpDesc()->GetId(), | |||||
| peer_out_anchor->GetOwnerNode()->GetOpDesc()->GetName().c_str(), | |||||
| peer_out_anchor->GetOwnerNode()->GetOpDesc()->GetId()); | |||||
| return GRAPH_FAILED; | |||||
| } | |||||
| auto parent_node = iter->second; | |||||
| GE_CHECK_NOTNULL(parent_node); | |||||
| GELOGD("Parent node name is %s", parent_node->GetName().c_str()); | GELOGD("Parent node name is %s", parent_node->GetName().c_str()); | ||||
| // add edge | // add edge | ||||
| auto src_anchor = parent_node->GetOutAnchor(AnchorUtils::GetIdx(peer_out_anchor)); | auto src_anchor = parent_node->GetOutAnchor(AnchorUtils::GetIdx(peer_out_anchor)); | ||||