Browse Source

remove ValueNode<KernelGraphPtr> after replace call to lagelgoto in

order to fix mutual reference in while
tags/v1.0.0
wenchunjiang 5 years ago
parent
commit
f0db47aba8
3 changed files with 15 additions and 0 deletions
  1. +1
    -0
      mindspore/ccsrc/backend/session/ascend_control_parser.cc
  2. +13
    -0
      mindspore/ccsrc/backend/session/kernel_graph.cc
  3. +1
    -0
      mindspore/ccsrc/backend/session/kernel_graph.h

+ 1
- 0
mindspore/ccsrc/backend/session/ascend_control_parser.cc View File

@@ -565,6 +565,7 @@ void AscendControlParser::RecurseCall(NotNull<KernelGraphPtr> kg, NotNull<CNodeP
cur_node->set_inputs(new_inputs); cur_node->set_inputs(new_inputs);
cur_node->set_abstract(nullptr); cur_node->set_abstract(nullptr);
AnfAlgo::SetNodeAttr(kAttrChildGraph, MakeValue<std::vector<KernelGraphPtr>>({call_kg}), cur_node.get()); AnfAlgo::SetNodeAttr(kAttrChildGraph, MakeValue<std::vector<KernelGraphPtr>>({call_kg}), cur_node.get());
kg->RemoveNodeFromGraph(origin_inputs[kCNodeCallArg]);
origin_inputs.assign(origin_inputs.begin() + kCNodeCallArg + 1, origin_inputs.end()); origin_inputs.assign(origin_inputs.begin() + kCNodeCallArg + 1, origin_inputs.end());
AttachOriginalInputsToGraph(kg, origin_inputs); AttachOriginalInputsToGraph(kg, origin_inputs);
MS_LOG(INFO) << "Succeed processing call func " << cur_node->DebugString(); MS_LOG(INFO) << "Succeed processing call func " << cur_node->DebugString();


+ 13
- 0
mindspore/ccsrc/backend/session/kernel_graph.cc View File

@@ -1188,6 +1188,19 @@ void KernelGraph::UpdateChildGraphOrder() {
child_graph_order_ = child_graph_order; child_graph_order_ = child_graph_order;
} }


void KernelGraph::RemoveNodeFromGraph(const AnfNodePtr &node) {
if (backend_front_anf_map_.find(node) != backend_front_anf_map_.end()) {
auto front_node = backend_front_anf_map_[node];
(void)backend_front_anf_map_.erase(node);
(void)front_backend_anf_map_.erase(front_node);
}
if (node->isa<ValueNode>()) {
if (graph_value_nodes_.find(node->cast<ValueNodePtr>()) != graph_value_nodes_.end()) {
(void)graph_value_nodes_.erase(node->cast<ValueNodePtr>());
}
}
}

std::string KernelGraph::ToString() const { return std::string("kernel_graph_").append(std::to_string(graph_id_)); } std::string KernelGraph::ToString() const { return std::string("kernel_graph_").append(std::to_string(graph_id_)); }


KernelGraph::~KernelGraph() { KernelGraph::~KernelGraph() {


+ 1
- 0
mindspore/ccsrc/backend/session/kernel_graph.h View File

@@ -174,6 +174,7 @@ class KernelGraph : public FuncGraph {
return nullptr; return nullptr;
} }
} }
void RemoveNodeFromGraph(const AnfNodePtr &node);


private: private:
// remove value node form graph // remove value node form graph


Loading…
Cancel
Save