cub::RadixRankAlgorithm
Defined in cub/block/block_radix_rank.cuh
-
enum cub::RadixRankAlgorithm
Radix ranking algorithm, the algorithm used to implement stable ranking of the keys from a single tile. Note that different ranking algorithms require different initial arrangements of keys to function properly.
Values:
-
enumerator RADIX_RANK_BASIC
Ranking using the BlockRadixRank algorithm with
MEMOIZE_OUTER_SCAN == false
. It uses thread-private histograms, and thus uses more shared memory. Requires blocked arrangement of keys. Does not support count callbacks.
-
enumerator RADIX_RANK_MEMOIZE
Ranking using the BlockRadixRank algorithm with
MEMOIZE_OUTER_SCAN == true
. Similar to RADIX_RANK BASIC, it requires blocked arrangement of keys and does not support count callbacks.
-
enumerator RADIX_RANK_MATCH
Ranking using the BlockRadixRankMatch algorithm. It uses warp-private histograms and matching for ranking the keys in a single warp. Therefore, it uses less shared memory compared to RADIX_RANK_BASIC. It requires warp-striped key arrangement and supports count callbacks.
-
enumerator RADIX_RANK_MATCH_EARLY_COUNTS_ANY
Ranking using the BlockRadixRankMatchEarlyCounts algorithm with
MATCH_ALGORITHM == WARP_MATCH_ANY
. An alternative implementation of match-based ranking that computes bin counts early. Because of this, it works better with onesweep sorting, which requires bin counts for decoupled look-back. Assumes warp-striped key arrangement and supports count callbacks.
-
enumerator RADIX_RANK_MATCH_EARLY_COUNTS_ATOMIC_OR
Ranking using the BlockRadixRankEarlyCounts algorithm with
MATCH_ALGORITHM == WARP_MATCH_ATOMIC_OR
. It uses extra space in shared memory to generate warp match masks usingatomicOr()
. This is faster when there are few matches, but can lead to slowdowns if the number of matching keys among warp lanes is high. Assumes warp-striped key arrangement and supports count callbacks.
-
enumerator RADIX_RANK_BASIC