cub::DispatchThreeWayPartitionIf#

template<typename InputIteratorT, typename FirstOutputIteratorT, typename SecondOutputIteratorT, typename UnselectedOutputIteratorT, typename NumSelectedIteratorT, typename SelectFirstPartOp, typename SelectSecondPartOp, typename OffsetT, typename PolicyHub = detail::three_way_partition::policy_hub<cub::detail::it_value_t<InputIteratorT>, detail::three_way_partition::per_partition_offset_t>, typename KernelSource = detail::three_way_partition::DeviceThreeWayPartitionKernelSource<typename PolicyHub::MaxPolicy, InputIteratorT, FirstOutputIteratorT, SecondOutputIteratorT, UnselectedOutputIteratorT, NumSelectedIteratorT, detail::three_way_partition::ScanTileStateT, SelectFirstPartOp, SelectSecondPartOp, detail::three_way_partition::per_partition_offset_t, detail::three_way_partition::streaming_context_t<OffsetT>, OffsetT>, typename KernelLauncherFactory = CUB_DETAIL_DEFAULT_KERNEL_LAUNCHER_FACTORY>
struct DispatchThreeWayPartitionIf#

Public Types

using per_partition_offset_t = detail::three_way_partition::per_partition_offset_t#
using streaming_context_t = detail::three_way_partition::streaming_context_t<OffsetT>#
using ScanTileStateT = detail::three_way_partition::ScanTileStateT#

Public Functions

template<typename ActivePolicyT, typename ScanInitKernelPtrT, typename SelectIfKernelPtrT>
inline cudaError_t Invoke(
ActivePolicyT policy,
ScanInitKernelPtrT three_way_partition_init_kernel,
SelectIfKernelPtrT three_way_partition_kernel,
)#
template<typename ActivePolicyT>
inline cudaError_t Invoke(
ActivePolicyT active_policy = {},
)#

Public Members

void *d_temp_storage#
size_t &temp_storage_bytes#
InputIteratorT d_in#
FirstOutputIteratorT d_first_part_out#
SecondOutputIteratorT d_second_part_out#
UnselectedOutputIteratorT d_unselected_out#
NumSelectedIteratorT d_num_selected_out#
SelectFirstPartOp select_first_part_op#
SelectSecondPartOp select_second_part_op#
OffsetT num_items#
cudaStream_t stream#
KernelSource kernel_source#
KernelLauncherFactory launcher_factory#

Public Static Functions

template<typename MaxPolicyT = typename PolicyHub::MaxPolicy>
static inline cudaError_t Dispatch(
void *d_temp_storage,
size_t &temp_storage_bytes,
InputIteratorT d_in,
FirstOutputIteratorT d_first_part_out,
SecondOutputIteratorT d_second_part_out,
UnselectedOutputIteratorT d_unselected_out,
NumSelectedIteratorT d_num_selected_out,
SelectFirstPartOp select_first_part_op,
SelectSecondPartOp select_second_part_op,
OffsetT num_items,
cudaStream_t stream,
KernelSource kernel_source = {},
KernelLauncherFactory launcher_factory = {},
MaxPolicyT max_policy = {},
)#

Internal dispatch routine.

Public Static Attributes

static constexpr per_partition_offset_t partition_size = ::cuda::std::numeric_limits<per_partition_offset_t>::max()#
static constexpr int INIT_KERNEL_THREADS = 256#