|
|
|
@ -748,6 +748,10 @@ bool KernelGraph::RemoveValueNodeFromGraph(const ValueNodePtr &value_node) {
|
|
|
|
|
|
|
|
|
|
void KernelGraph::ReplaceNode(NotNull<AnfNodePtr> old_anf_node, NotNull<AnfNodePtr> new_anf_node) {
|
|
|
|
|
MS_EXCEPTION_IF_NULL(inputs_);
|
|
|
|
|
{
|
|
|
|
|
std::queue<AnfNodePtr> seed_nodes;
|
|
|
|
|
UpdateNodeEdgeList(&seed_nodes);
|
|
|
|
|
}
|
|
|
|
|
auto it = node_output_edges_.find(old_anf_node);
|
|
|
|
|
if (it != node_output_edges_.end()) {
|
|
|
|
|
const auto &outputs = it->second;
|
|
|
|
@ -778,8 +782,10 @@ void KernelGraph::ReplaceNode(NotNull<AnfNodePtr> old_anf_node, NotNull<AnfNodeP
|
|
|
|
|
// update front to backend map
|
|
|
|
|
FrontBackendlMapUpdate(old_anf_node, new_anf_node);
|
|
|
|
|
}
|
|
|
|
|
// if change the ir of graph, regenerate execution order of graph
|
|
|
|
|
SetExecOrderByDefault();
|
|
|
|
|
{
|
|
|
|
|
std::queue<AnfNodePtr> seed_nodes;
|
|
|
|
|
UpdateNodeEdgeList(&seed_nodes);
|
|
|
|
|
}
|
|
|
|
|
// update graph inputs in child graph
|
|
|
|
|
auto it_real_inputs = std::find_if(real_inputs_.begin(), real_inputs_.end(),
|
|
|
|
|
[&old_anf_node](const std::pair<AnfNodePtr, std::vector<AnfNodePtr>> &n) -> bool {
|
|
|
|
|