|
@@ -15,6 +15,7 @@ |
|
|
*/ |
|
|
*/ |
|
|
|
|
|
|
|
|
#include "hybrid/model/hybrid_model_builder.h" |
|
|
#include "hybrid/model/hybrid_model_builder.h" |
|
|
|
|
|
#include <algorithm> |
|
|
#include "common/math/math_util.h" |
|
|
#include "common/math/math_util.h" |
|
|
#include "graph/ge_context.h" |
|
|
#include "graph/ge_context.h" |
|
|
#include "graph/build/memory/var_mem_assign_util.h" |
|
|
#include "graph/build/memory/var_mem_assign_util.h" |
|
@@ -70,7 +71,7 @@ Status CollectDependenciesForFusedGraph(NodeItem &node_item, std::set<OpDesc *> |
|
|
|
|
|
|
|
|
for (auto &input_name : depends) { |
|
|
for (auto &input_name : depends) { |
|
|
auto input_index = op_desc->GetInputIndexByName(input_name); |
|
|
auto input_index = op_desc->GetInputIndexByName(input_name); |
|
|
const auto &in_anchor = ge_node->GetInDataAnchor(input_index); |
|
|
|
|
|
|
|
|
const auto &in_anchor = node->GetInDataAnchor(input_index); |
|
|
GE_CHECK_NOTNULL(in_anchor); |
|
|
GE_CHECK_NOTNULL(in_anchor); |
|
|
const auto &peer_out_anchor = in_anchor->GetPeerOutAnchor(); |
|
|
const auto &peer_out_anchor = in_anchor->GetPeerOutAnchor(); |
|
|
GE_CHECK_NOTNULL(peer_out_anchor); |
|
|
GE_CHECK_NOTNULL(peer_out_anchor); |
|
@@ -307,7 +308,7 @@ Status HybridModelBuilder::ParseDependentInputNodes(NodeItem &node_item, const s |
|
|
node_item.dependents_for_shape_inference.emplace_back(dep_node); |
|
|
node_item.dependents_for_shape_inference.emplace_back(dep_node); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
GE_CHK_STATUS_RET(ParseDependentForFusedSubgraph(noe_item)); |
|
|
|
|
|
|
|
|
GE_CHK_STATUS_RET(ParseDependentForFusedSubgraph(node_item)); |
|
|
return SUCCESS; |
|
|
return SUCCESS; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
@@ -320,10 +321,10 @@ Status HybridModelBuilder::ParseDependentForFusedSubgraph(NodeItem &node_item) { |
|
|
GE_CHK_STATUS_RET_NOLOG(CollectDependenciesForFusedGraph(node_item, data_ops)); |
|
|
GE_CHK_STATUS_RET_NOLOG(CollectDependenciesForFusedGraph(node_item, data_ops)); |
|
|
for (auto &op_desc : data_ops) { |
|
|
for (auto &op_desc : data_ops) { |
|
|
uint32_t parent_index = 0; |
|
|
uint32_t parent_index = 0; |
|
|
if (!AttrUtils::GetInt(data_op_desc, ATTR_NAME_PARENT_NODE_INDEX, parent_index)) { |
|
|
|
|
|
|
|
|
if (!AttrUtils::GetInt(*op_desc, ATTR_NAME_PARENT_NODE_INDEX, parent_index)) { |
|
|
GELOGE(INTERNAL_ERROR, |
|
|
GELOGE(INTERNAL_ERROR, |
|
|
"[%s] Failed to get attr [%s]", |
|
|
"[%s] Failed to get attr [%s]", |
|
|
data_op_desc->GetName().c_str(), |
|
|
|
|
|
|
|
|
op_desc->GetName().c_str(), |
|
|
ATTR_NAME_PARENT_NODE_INDEX.c_str()); |
|
|
ATTR_NAME_PARENT_NODE_INDEX.c_str()); |
|
|
return INTERNAL_ERROR; |
|
|
return INTERNAL_ERROR; |
|
|
} |
|
|
} |
|
@@ -337,7 +338,7 @@ Status HybridModelBuilder::ParseDependentForFusedSubgraph(NodeItem &node_item) { |
|
|
NodeItem *src_node_item = nullptr; |
|
|
NodeItem *src_node_item = nullptr; |
|
|
GE_CHK_STATUS_RET_NOLOG(GetOrCreateNodeItem(src_node, &src_node_item)); |
|
|
GE_CHK_STATUS_RET_NOLOG(GetOrCreateNodeItem(src_node, &src_node_item)); |
|
|
op_desc->SetId(src_node_item->op_desc->GetId()); |
|
|
op_desc->SetId(src_node_item->op_desc->GetId()); |
|
|
GELOGD("[%S::%S] Node id was set to that of outer src node's, src_node = %s", |
|
|
|
|
|
|
|
|
GELOGD("[%s::%s] Node id was set to that of outer src node's, src_node = %s", |
|
|
node_item.NodeName().c_str(), |
|
|
node_item.NodeName().c_str(), |
|
|
op_desc->GetName().c_str(), |
|
|
op_desc->GetName().c_str(), |
|
|
src_node_item->NodeName().c_str()); |
|
|
src_node_item->NodeName().c_str()); |
|
|