| @@ -335,7 +335,8 @@ Status MarkRWTypeForSubgraph(const ComputeGraphPtr &sub_graph) { | |||||
| auto pre_output_rw_type = GetOutputRWTypeByIndex(*pre_node, pre_out_anchor->GetIdx()); | auto pre_output_rw_type = GetOutputRWTypeByIndex(*pre_node, pre_out_anchor->GetIdx()); | ||||
| GELOGD("Output rw type of Node %s %dth output anchor is %s", pre_node->GetName().c_str(), | GELOGD("Output rw type of Node %s %dth output anchor is %s", pre_node->GetName().c_str(), | ||||
| pre_out_anchor->GetIdx(), OutputRWTypeToSerialString(pre_output_rw_type).c_str()); | pre_out_anchor->GetIdx(), OutputRWTypeToSerialString(pre_output_rw_type).c_str()); | ||||
| if (pre_output_rw_type == OutputRWType::kWriteable) { | |||||
| auto parent_node = sub_graph->GetParentNode(); | |||||
| if (pre_output_rw_type == OutputRWType::kWriteable && parent_node->GetType() != PARTITIONEDCALL) { | |||||
| // insert identity | // insert identity | ||||
| auto identity_node = CreateIdentityAfterSrcNode(*pre_node, pre_out_anchor->GetIdx()); | auto identity_node = CreateIdentityAfterSrcNode(*pre_node, pre_out_anchor->GetIdx()); | ||||
| GE_CHECK_NOTNULL(identity_node); | GE_CHECK_NOTNULL(identity_node); | ||||
| @@ -346,8 +347,9 @@ Status MarkRWTypeForSubgraph(const ComputeGraphPtr &sub_graph) { | |||||
| } | } | ||||
| GELOGI("InsertNode %s between %s and %s successfully.", identity_node->GetName().c_str(), | GELOGI("InsertNode %s between %s and %s successfully.", identity_node->GetName().c_str(), | ||||
| pre_node->GetName().c_str(), node->GetName().c_str()); | pre_node->GetName().c_str(), node->GetName().c_str()); | ||||
| pre_output_rw_type = OutputRWType::kSoftRead; | |||||
| } | } | ||||
| output_rw_type_map.emplace(std::make_pair(in_data_anchor->GetIdx(), OutputRWType::kSoftRead)); | |||||
| output_rw_type_map.emplace(std::make_pair(in_data_anchor->GetIdx(), pre_output_rw_type)); | |||||
| } | } | ||||
| NodeInputOutputRWType output_rw_type{{}, output_rw_type_map}; | NodeInputOutputRWType output_rw_type{{}, output_rw_type_map}; | ||||
| node_rwtype_map_.emplace(std::make_pair(node->GetName(), output_rw_type)); | node_rwtype_map_.emplace(std::make_pair(node->GetName(), output_rw_type)); | ||||