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 using atomicOr(). 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.