|
|
@ -1539,14 +1539,20 @@ Status HybridModelBuilder::IdentifyVariableOutputs(NodeItem &node_item) {
|
|
|
|
in_data_anchor->GetIdx(),
|
|
|
|
in_data_anchor->GetIdx(),
|
|
|
|
src_node->GetName().c_str(),
|
|
|
|
src_node->GetName().c_str(),
|
|
|
|
src_op_type.c_str());
|
|
|
|
src_op_type.c_str());
|
|
|
|
|
|
|
|
uint32_t parent_index = 0;
|
|
|
|
|
|
|
|
GE_CHK_STATUS_RET_NOLOG(GetParentNodeOutputIndex(*net_output_desc, in_data_anchor->GetIdx(), parent_index));
|
|
|
|
|
|
|
|
GELOGD("Got parent output index = %u", parent_index);
|
|
|
|
|
|
|
|
if (src_op_type == DATA) {
|
|
|
|
|
|
|
|
int ref_i = 0;
|
|
|
|
|
|
|
|
(void)AttrUtils::GetInt(src_node->GetOpDesc(), ATTR_NAME_PARENT_NODE_INDEX, ref_i);
|
|
|
|
|
|
|
|
node_item.reuse_inputs.emplace(static_cast<int>(parent_index), ref_i);
|
|
|
|
|
|
|
|
GELOGD("[%s] output[%u] resues input[%d]", node_item.NodeName().c_str(), parent_index, ref_i);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (src_op_type != CONSTANTOP && src_op_type != CONSTANT && src_op_type != VARIABLE) {
|
|
|
|
if (src_op_type != CONSTANTOP && src_op_type != CONSTANT && src_op_type != VARIABLE) {
|
|
|
|
continue;
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
uint32_t parent_index = 0;
|
|
|
|
|
|
|
|
GE_CHK_STATUS_RET_NOLOG(GetParentNodeOutputIndex(*net_output_desc, in_data_anchor->GetIdx(), parent_index));
|
|
|
|
|
|
|
|
GELOGD("Got parent output index = %u", parent_index);
|
|
|
|
|
|
|
|
GE_CHECK_LE(parent_index, INT32_MAX);
|
|
|
|
GE_CHECK_LE(parent_index, INT32_MAX);
|
|
|
|
node_item.ref_outputs.emplace(static_cast<int>(parent_index), src_node);
|
|
|
|
node_item.ref_outputs.emplace(static_cast<int>(parent_index), src_node);
|
|
|
|
if (src_op_type == CONSTANTOP || src_op_type == CONSTANT) {
|
|
|
|
if (src_op_type == CONSTANTOP || src_op_type == CONSTANT) {
|
|
|
|