From e9286b023fef2b2d859b69b09ffd38d2514693f6 Mon Sep 17 00:00:00 2001 From: Andrey Prokopenko Date: Tue, 15 Oct 2024 15:38:28 -0400 Subject: [PATCH] Minor change to unify atomic_inc with consecutive fetch Co-authored-by: Damien L-G --- src/cluster/detail/ArborX_FDBSCAN.hpp | 12 +++++------- src/cluster/detail/ArborX_FDBSCANDenseBox.hpp | 6 ++---- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/src/cluster/detail/ArborX_FDBSCAN.hpp b/src/cluster/detail/ArborX_FDBSCAN.hpp index 4c2539310..80db1f9f6 100644 --- a/src/cluster/detail/ArborX_FDBSCAN.hpp +++ b/src/cluster/detail/ArborX_FDBSCAN.hpp @@ -33,14 +33,12 @@ struct CountUpToN template KOKKOS_FUNCTION auto operator()(Query const &query, Value const &) const { - auto i = getData(query); - Kokkos::atomic_inc(&_counts(i)); + int const i = getData(query); + int &count = _counts(i); + if (Kokkos::atomic_inc_fetch(&count) >= _n) + return ArborX::CallbackTreeTraversalControl::early_exit; - if (_counts(i) < _n) - return ArborX::CallbackTreeTraversalControl::normal_continuation; - - // Once count reaches threshold, terminate the traversal. - return ArborX::CallbackTreeTraversalControl::early_exit; + return ArborX::CallbackTreeTraversalControl::normal_continuation; } }; diff --git a/src/cluster/detail/ArborX_FDBSCANDenseBox.hpp b/src/cluster/detail/ArborX_FDBSCANDenseBox.hpp index aae13ef30..8b0baa911 100644 --- a/src/cluster/detail/ArborX_FDBSCANDenseBox.hpp +++ b/src/cluster/detail/ArborX_FDBSCANDenseBox.hpp @@ -74,16 +74,14 @@ struct CountUpToN_DenseBox int j = _permute(jj); if (distance(query_point, _primitives(j)) <= eps) { - Kokkos::atomic_inc(&count); - if (count >= _n) + if (Kokkos::atomic_inc_fetch(&count) >= _n) return ArborX::CallbackTreeTraversalControl::early_exit; } } } else { - Kokkos::atomic_inc(&count); - if (count >= _n) + if (Kokkos::atomic_inc_fetch(&count) >= _n) return ArborX::CallbackTreeTraversalControl::early_exit; }