|
|
@ -296,7 +296,7 @@ bool AtomicAddrCleanPass::CheckAtomicFromOpsKernel(const NodePtr &node) {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
OpsKernelManager &ops_kernel_manager = instance_ptr->OpsKernelManagerObj();
|
|
|
|
OpsKernelManager &ops_kernel_manager = instance_ptr->OpsKernelManagerObj();
|
|
|
|
vector<OpInfo> op_info_vec = ops_kernel_manager.GetOpsKernelInfo(op_desc->GetType());
|
|
|
|
vector<OpInfo> op_info_vec = ops_kernel_manager.GetOpsKernelInfo(node->GetType());
|
|
|
|
for (const auto &op_info : op_info_vec) {
|
|
|
|
for (const auto &op_info : op_info_vec) {
|
|
|
|
if (op_info.isAtomic) {
|
|
|
|
if (op_info.isAtomic) {
|
|
|
|
// check peer input is DATA
|
|
|
|
// check peer input is DATA
|
|
|
@ -305,12 +305,12 @@ bool AtomicAddrCleanPass::CheckAtomicFromOpsKernel(const NodePtr &node) {
|
|
|
|
in_data_anchor->GetPeerOutAnchor()->GetOwnerNode() != nullptr) {
|
|
|
|
in_data_anchor->GetPeerOutAnchor()->GetOwnerNode() != nullptr) {
|
|
|
|
auto peer_in_node = in_data_anchor->GetPeerOutAnchor()->GetOwnerNode();
|
|
|
|
auto peer_in_node = in_data_anchor->GetPeerOutAnchor()->GetOwnerNode();
|
|
|
|
if (peer_in_node->GetType() == DATA) {
|
|
|
|
if (peer_in_node->GetType() == DATA) {
|
|
|
|
GELOGI("Recognized atomic op %s from %s engine and input is DATA.", op_desc->GetName().c_str(), op_info.engine.c_str());
|
|
|
|
GELOGI("Recognized atomic op %s from %s engine and input is DATA.", node->GetName().c_str(), op_info.engine.c_str());
|
|
|
|
return false;
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
GELOGI("Recognized atomic op %s from %s engine.", op_desc->GetName().c_str(), op_info.engine.c_str());
|
|
|
|
GELOGI("Recognized atomic op %s from %s engine.", node->GetName().c_str(), op_info.engine.c_str());
|
|
|
|
hcom_node_vec_.push_back(node);
|
|
|
|
hcom_node_vec_.push_back(node);
|
|
|
|
return true;
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -318,7 +318,7 @@ bool AtomicAddrCleanPass::CheckAtomicFromOpsKernel(const NodePtr &node) {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bool AtomicAddrCleanPass::IsOutputIndexPeerInputAtomic(const ge::NodePtr &node, int64_t output_index) {
|
|
|
|
bool AtomicAddrCleanPass::IsOutputIndexPeerInputAtomic(const ge::NodePtr &node, int64_t output_index) {
|
|
|
|
auto out_data_anchor = node->GetAllInDataAnchors().at(output_index);
|
|
|
|
auto out_data_anchor = node->GetAllOutDataAnchors().at(output_index);
|
|
|
|
if (out_data_anchor == nullptr) {
|
|
|
|
if (out_data_anchor == nullptr) {
|
|
|
|
return false;
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|