diff --git a/ge/hybrid/executor/subgraph_context.cc b/ge/hybrid/executor/subgraph_context.cc index 99ea10f7..b6763ffd 100644 --- a/ge/hybrid/executor/subgraph_context.cc +++ b/ge/hybrid/executor/subgraph_context.cc @@ -106,6 +106,8 @@ NodeStatePtr SubgraphContext::GetOrCreateNodeState(const NodeItem *node_item) { FrameStatePtr SubgraphContext::GetOrCreateFrameState(const NodeItem &node_item) { auto &frame_state = frame_states_[node_item.frame_index_]; if (frame_state == nullptr) { + GELOGD("[%s] Create FrameState, frame index: %ld, parent frame index: %ld", + node_item.node_name.c_str(), node_item.frame_index_, node_item.parent_frame_); frame_state.reset(new(std::nothrow)FrameState(node_item.frame_index_)); if (node_item.frame_index_ != -1) { // -1 is root frame. frame_state->parent_frame_ = frame_states_[node_item.parent_frame_]; diff --git a/ge/hybrid/model/hybrid_model_builder.cc b/ge/hybrid/model/hybrid_model_builder.cc index bbde3ffa..251b463f 100755 --- a/ge/hybrid/model/hybrid_model_builder.cc +++ b/ge/hybrid/model/hybrid_model_builder.cc @@ -2358,13 +2358,15 @@ Status HybridModelBuilder::BuildFrameGroupIndex(NodeItem &node_item) { int64_t ctrl_flow_group = -1; if (node_item.IsEnterOp() && AttrUtils::GetInt(node_item.op_desc, ATTR_NAME_CONTROL_FLOW_GROUP, ctrl_flow_group)) { node_item.frame_index_ = ctrl_flow_group; - if (node_item.IsEnterOp()) { - const auto src_node = node_item.node->GetInDataNodes().at(0); + for (const auto src_node : node_item.node->GetInDataNodes()) { NodeItem *src_node_item = nullptr; GE_CHK_STATUS_RET(GetOrCreateNodeItem(src_node, &src_node_item), "[%s] failed to get or create node item", src_node->GetName().c_str()); if (!src_node_item->is_root_node_) { + GELOGD("[%s] frame index: %ld, from [%s] get parent frame index: %ld", node_item.node_name.c_str(), + node_item.frame_index_, src_node_item->node_name.c_str(), src_node_item->frame_index_); parent_frame_group_[node_item.frame_index_] = src_node_item->frame_index_; + break; } } @@ -2390,7 +2392,7 @@ Status HybridModelBuilder::BuildFrameGroupIndex(NodeItem &node_item) { node_item.frame_index_ = src_node_item->frame_index_; } - const auto it = parent_frame_group_.find(src_node_item->frame_index_); + const auto it = parent_frame_group_.find(node_item.frame_index_); node_item.parent_frame_ = (it != parent_frame_group_.end()) ? it->second : -1; GELOGD("[%s] control flow frame group: %ld, parent frame: %ld", node_item.node_name.c_str(), node_item.frame_index_, node_item.parent_frame_);