rocPRIM
Public Types | Static Public Attributes | List of all members
segmented_radix_sort_config< LongRadixBits, ShortRadixBits, SortConfig, WarpSortConfig > Struct Template Reference

Configuration of device-level segmented radix sort operation. More...

#include <device_segmented_radix_sort_config.hpp>

Public Types

using sort = SortConfig
 Configuration of radix sort kernel.
 
using warp_sort_config = WarpSortConfig
 Configuration of the warp sort method.
 

Static Public Attributes

static constexpr unsigned int long_radix_bits = LongRadixBits
 Number of bits in long iterations.
 
static constexpr unsigned int short_radix_bits = ShortRadixBits
 Number of bits in short iterations.
 

Detailed Description

template<unsigned int LongRadixBits, unsigned int ShortRadixBits, class SortConfig, class WarpSortConfig = DisabledWarpSortConfig>
struct segmented_radix_sort_config< LongRadixBits, ShortRadixBits, SortConfig, WarpSortConfig >

Configuration of device-level segmented radix sort operation.

Radix sort is excecuted in a few iterations (passes) depending on total number of bits to be sorted (begin_bit and end_bit), each iteration sorts either LongRadixBits or ShortRadixBits bits choosen to cover whole bit range in optimal way.

For example, if LongRadixBits is 7, ShortRadixBits is 6, begin_bit is 0 and end_bit is 32 there will be 5 iterations: 7 + 7 + 6 + 6 + 6 = 32 bits.

If a segment's element count is low ( <= warp_sort_config::items_per_thread * warp_sort_config::logical_warp_size ), it is sorted by a special warp-level sorting method.

Template Parameters
LongRadixBits- number of bits in long iterations.
ShortRadixBits- number of bits in short iterations, must be equal to or less than LongRadixBits.
SortConfig- configuration of radix sort kernel. Must be kernel_config.
WarpSortConfig- configuration of the warp sort that is used on the short segments.

The documentation for this struct was generated from the following file: