From 74b80995ebd747aee566cef2bf0eaf09dbf1a73a Mon Sep 17 00:00:00 2001 From: Margaret_wangrui Date: Tue, 30 Nov 2021 10:24:40 +0800 Subject: [PATCH] Filter the func_graph node where the current node is located when make Interpret Node --- mindspore/ccsrc/pipeline/jit/parse/parse.cc | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/mindspore/ccsrc/pipeline/jit/parse/parse.cc b/mindspore/ccsrc/pipeline/jit/parse/parse.cc index 6c72fea7536..1ba04482b38 100644 --- a/mindspore/ccsrc/pipeline/jit/parse/parse.cc +++ b/mindspore/ccsrc/pipeline/jit/parse/parse.cc @@ -1869,7 +1869,20 @@ AnfNodePtr Parser::HandleInterpret(const FunctionBlockPtr &block, const AnfNodeP auto global_dict_node = NewValueNode(globals_converted_value); // Prepare local parameters. auto [keys, values] = block->local_py_params(); - auto local_dict_node = ParseDictByKeysAndValues(block, keys, values); + // Filter the func_graph node where the current node is located. + auto current_fg = value_node->func_graph(); + std::vector filter_keys; + std::vector filter_values; + for (size_t index = 0; index < values.size(); ++index) { + auto value = values[index]; + auto fg = GetValueNode(value); + if (fg == current_fg) { + continue; + } + (void)filter_keys.emplace_back(keys[index]); + (void)filter_values.emplace_back(value); + } + auto local_dict_node = ParseDictByKeysAndValues(block, filter_keys, filter_values); // Update the valued node if it need interpreting. constexpr int recursive_level = 2; MS_LOG(INFO) << "[" << block->func_graph()->ToString() << "] script_text: `" << script_text