Browse Source

atomic add should not enable for some case

tags/v1.1.1
tronzhang 5 years ago
parent
commit
a910db1498
1 changed files with 2 additions and 2 deletions
  1. +2
    -2
      mindspore/ccsrc/backend/optimizer/graph_kernel/add_atomic_clean_gpu.cc

+ 2
- 2
mindspore/ccsrc/backend/optimizer/graph_kernel/add_atomic_clean_gpu.cc View File

@@ -133,8 +133,10 @@ bool AtomicCleanInsertter::CanActivateAtomicAdd(const AnfNodePtr &anf_node) {
if (reduce_cnt != 1) {
return false;
}
real_output_num_ = inputs.size() - 1;
} else if (IsPrimitiveCNode(real_return_node, prim::kPrimReduceSum)) {
atomic_add_node_ = real_return_node->cast<CNodePtr>();
real_output_num_ = 1;
} else {
return false;
}
@@ -200,7 +202,6 @@ void AtomicCleanInsertter::CreateInplaceAssignNodeAndCorrectReturn(const FuncGra
auto retrun_node = sub_graph->get_return()->input(kFirstDataInputIndex);
if (IsPrimitiveCNode(retrun_node, prim::kPrimMakeTuple)) {
const auto &outs = retrun_node->cast<CNodePtr>()->inputs();
real_output_num_ = outs.size() - 1;
for (size_t i = 1; i < outs.size(); ++i) {
if (i != reduce_real_output_index_ + 1) {
out_node = outs[i];
@@ -209,7 +210,6 @@ void AtomicCleanInsertter::CreateInplaceAssignNodeAndCorrectReturn(const FuncGra
}
}
} else {
real_output_num_ = 1;
out_node = atomic_add_node_; // Use result data itself, and set attr "fake_out" true.
fake_out = true;
}


Loading…
Cancel
Save