From aa912a9f71d05cf1409d2b97f2adb879b17c5adc Mon Sep 17 00:00:00 2001 From: yvetteliu Date: Tue, 12 May 2020 16:50:35 +0800 Subject: [PATCH] Simplify node traversal strategy. Simplify node traversal strategy. Add a case when the node is a parameter. format Standardize operation. --- mindspore/ccsrc/optimizer/opt.cc | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/mindspore/ccsrc/optimizer/opt.cc b/mindspore/ccsrc/optimizer/opt.cc index 987c3c27bc..069c9d8ddd 100644 --- a/mindspore/ccsrc/optimizer/opt.cc +++ b/mindspore/ccsrc/optimizer/opt.cc @@ -88,6 +88,22 @@ AnfNodePtr Substitution::operator()(const OptimizerPtr &optimizer, const AnfNode return result; } +inline bool isTraversable(const AnfNodePtr &node) { + if (node == nullptr) { + return false; + } + + if (node->isa() || node->isa()) { + return true; + } + + if (IsValueNode(node) || IsValueNode(node)) { + return true; + } + + return false; +} + bool SubstitutionList::ApplyTransform(const OptimizerPtr &optimizer, const AnfNodePtr &root_node, const SubstitutionPtr &transform) const { #ifdef ENABLE_PROFILE @@ -106,7 +122,7 @@ bool SubstitutionList::ApplyTransform(const OptimizerPtr &optimizer, const AnfNo todo.pop_front(); // check whether this node has been matched. - if (node == nullptr || node->seen_ == seen || !all_nodes.contains(node)) { + if (node == nullptr || node->seen_ == seen || !isTraversable(node) || !all_nodes.contains(node)) { continue; } node->seen_ = seen;