24
24
25
25
namespace KokkosKernels {
26
26
27
+ namespace Impl {
28
+ template <typename Value>
29
+ struct DefaultComparator {
30
+ KOKKOS_INLINE_FUNCTION bool operator ()(const Value lhs, const Value rhs) const { return lhs < rhs; }
31
+ };
32
+ } // namespace Impl
33
+
27
34
// ----------------------------
28
35
// General device-level sorting
29
36
// ----------------------------
30
37
31
38
// Bitonic sort: sorts v according to the comparator object's operator().
32
39
// Default comparator is just operator< for v's element type.
33
40
template <typename View, typename ExecSpace, typename Ordinal,
34
- typename Comparator = Kokkos::Experimental:: Impl::StdAlgoLessThanBinaryPredicate <typename View::value_type>>
41
+ typename Comparator = Impl::DefaultComparator <typename View::value_type>>
35
42
void bitonicSort (View v, const Comparator& comp = Comparator());
36
43
37
44
// --------------------------------------------------------
@@ -366,7 +373,7 @@ KOKKOS_INLINE_FUNCTION void SerialRadixSort2(ValueType* values, ValueType* value
366
373
// memory references are coalesced Con: O(n log^2(n)) serial time is bad on CPUs
367
374
// Good diagram of the algorithm at https://en.wikipedia.org/wiki/Bitonic_sorter
368
375
template <typename Ordinal, typename ValueType, typename TeamMember,
369
- typename Comparator = Kokkos::Experimental:: Impl::StdAlgoLessThanBinaryPredicate <ValueType>>
376
+ typename Comparator = Impl::DefaultComparator <ValueType>>
370
377
[[deprecated(" Use Kokkos::Experimental::sort_team instead" )]] KOKKOS_INLINE_FUNCTION void TeamBitonicSort (
371
378
ValueType* values, Ordinal n, const TeamMember mem, const Comparator& comp = Comparator()) {
372
379
Kokkos::View<ValueType*, Kokkos::AnonymousSpace> valuesView (values, n);
@@ -375,7 +382,7 @@ template <typename Ordinal, typename ValueType, typename TeamMember,
375
382
376
383
// Sort "values", while applying the same swaps to "perm"
377
384
template <typename Ordinal, typename ValueType, typename PermType, typename TeamMember,
378
- typename Comparator = Kokkos::Experimental:: Impl::StdAlgoLessThanBinaryPredicate <ValueType>>
385
+ typename Comparator = Impl::DefaultComparator <ValueType>>
379
386
[[deprecated(" Use Kokkos::Experimental::sort_by_key_team instead" )]] KOKKOS_INLINE_FUNCTION void TeamBitonicSort2 (
380
387
ValueType* values, PermType* perm, Ordinal n, const TeamMember mem, const Comparator& comp = Comparator()) {
381
388
Kokkos::View<ValueType*, Kokkos::AnonymousSpace> valuesView (values, n);
0 commit comments