rocPRIM
Static Public Attributes | List of all members
WarpSortConfig< LogicalWarpSizeSmall, ItemsPerThreadSmall, BlockSizeSmall, PartitioningThreshold, EnableUnpartitionedWarpSort, LogicalWarpSizeMedium, ItemsPerThreadMedium, BlockSizeMedium > Struct Template Reference

Configuration of the warp sort part of the device segmented radix sort operation. More...

#include <device_segmented_radix_sort_config.hpp>

Static Public Attributes

static constexpr unsigned int logical_warp_size_small = LogicalWarpSizeSmall
 The number of threads in the logical warp in the small segment processing kernel.
 
static constexpr unsigned int items_per_thread_small = ItemsPerThreadSmall
 The number of items processed by a thread in the small segment processing kernel.
 
static constexpr unsigned int block_size_small = BlockSizeSmall
 The number of threads per block in the small segment processing kernel.
 
static constexpr unsigned int partitioning_threshold = PartitioningThreshold
 If the number of segments is at least partitioning_threshold, then the segments are partitioned into small and large segment groups, and each group is handled by a different, specialized kernel. More...
 
static constexpr bool enable_unpartitioned_warp_sort = EnableUnpartitionedWarpSort
 If set to true, warp sort can be used to sort the small segments, even if the total number of segments is below PartitioningThreshold. More...
 
static constexpr unsigned int logical_warp_size_medium = LogicalWarpSizeMedium
 The number of threads in the logical warp in the medium segment processing kernel.
 
static constexpr unsigned int items_per_thread_medium = ItemsPerThreadMedium
 The number of items processed by a thread in the medium segment processing kernel.
 
static constexpr unsigned int block_size_medium = BlockSizeMedium
 The number of threads per block in the medium segment processing kernel.
 

Detailed Description

template<unsigned int LogicalWarpSizeSmall, unsigned int ItemsPerThreadSmall, unsigned int BlockSizeSmall = 256, unsigned int PartitioningThreshold = 3000, bool EnableUnpartitionedWarpSort = true, unsigned int LogicalWarpSizeMedium = std::max(32u, LogicalWarpSizeSmall), unsigned int ItemsPerThreadMedium = std::max(4u, ItemsPerThreadSmall), unsigned int BlockSizeMedium = 256>
struct WarpSortConfig< LogicalWarpSizeSmall, ItemsPerThreadSmall, BlockSizeSmall, PartitioningThreshold, EnableUnpartitionedWarpSort, LogicalWarpSizeMedium, ItemsPerThreadMedium, BlockSizeMedium >

Configuration of the warp sort part of the device segmented radix sort operation.

Short enough segments are processed on warp level.

Template Parameters
LogicalWarpSizeSmall- number of threads in the logical warp of the kernel that processes small segments.
ItemsPerThreadSmall- number of items processed by a thread in the kernel that processes small segments.
BlockSizeSmall- number of threads per block in the kernel which processes the small segments.
PartitioningThreshold- if the number of segments is at least this threshold, the segments are partitioned to a small, a medium and a large segment collection. Both collections are sorted by different kernels. Otherwise, all segments are sorted by a single kernel.
EnableUnpartitionedWarpSort- If set to true, warp sort can be used to sort the small segments, even if the total number of segments is below PartitioningThreshold.
LogicalWarpSizeMedium- number of threads in the logical warp of the kernel that processes medium segments.
ItemsPerThreadMedium- number of items processed by a thread in the kernel that processes medium segments.
BlockSizeMedium- number of threads per block in the kernel which processes the medium segments.

Member Data Documentation

◆ enable_unpartitioned_warp_sort

template<unsigned int LogicalWarpSizeSmall, unsigned int ItemsPerThreadSmall, unsigned int BlockSizeSmall = 256, unsigned int PartitioningThreshold = 3000, bool EnableUnpartitionedWarpSort = true, unsigned int LogicalWarpSizeMedium = std::max(32u, LogicalWarpSizeSmall), unsigned int ItemsPerThreadMedium = std::max(4u, ItemsPerThreadSmall), unsigned int BlockSizeMedium = 256>
constexpr bool WarpSortConfig< LogicalWarpSizeSmall, ItemsPerThreadSmall, BlockSizeSmall, PartitioningThreshold, EnableUnpartitionedWarpSort, LogicalWarpSizeMedium, ItemsPerThreadMedium, BlockSizeMedium >::enable_unpartitioned_warp_sort = EnableUnpartitionedWarpSort
static

If set to true, warp sort can be used to sort the small segments, even if the total number of segments is below PartitioningThreshold.

◆ partitioning_threshold

template<unsigned int LogicalWarpSizeSmall, unsigned int ItemsPerThreadSmall, unsigned int BlockSizeSmall = 256, unsigned int PartitioningThreshold = 3000, bool EnableUnpartitionedWarpSort = true, unsigned int LogicalWarpSizeMedium = std::max(32u, LogicalWarpSizeSmall), unsigned int ItemsPerThreadMedium = std::max(4u, ItemsPerThreadSmall), unsigned int BlockSizeMedium = 256>
constexpr unsigned int WarpSortConfig< LogicalWarpSizeSmall, ItemsPerThreadSmall, BlockSizeSmall, PartitioningThreshold, EnableUnpartitionedWarpSort, LogicalWarpSizeMedium, ItemsPerThreadMedium, BlockSizeMedium >::partitioning_threshold = PartitioningThreshold
static

If the number of segments is at least partitioning_threshold, then the segments are partitioned into small and large segment groups, and each group is handled by a different, specialized kernel.


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