pub trait GpuRadixPartitionable: Sized + DeviceCopy {
fn prefix_sum_impl(
rp: &mut GpuRadixPartitioner,
pass: RadixPass,
partition_attr: LaunchableSlice<'_, Self>,
partition_offsets: &mut PartitionOffsets<Tuple<Self, Self>>,
stream: &Stream
) -> Result<()>;
fn prefix_sum_and_copy_with_payload_impl(
rp: &mut GpuRadixPartitioner,
pass: RadixPass,
src_partition_attr: LaunchableSlice<'_, Self>,
src_payload_attr: LaunchableSlice<'_, Self>,
dst_partition_attr: LaunchableMutSlice<'_, Self>,
dst_payload_attr: LaunchableMutSlice<'_, Self>,
partition_offsets: &mut PartitionOffsets<Tuple<Self, Self>>,
stream: &Stream
) -> Result<()>;
fn prefix_sum_and_transform_impl(
rp: &mut GpuRadixPartitioner,
pass: RadixPass,
partition_id: u32,
src_relation: &PartitionedRelation<Tuple<Self, Self>>,
dst_partition_attr: LaunchableMutSlice<'_, Self>,
dst_payload_attr: LaunchableMutSlice<'_, Self>,
partition_offsets: &mut PartitionOffsets<Tuple<Self, Self>>,
stream: &Stream
) -> Result<()>;
fn allocate_partition_state_impl(
rp: &mut GpuRadixPartitioner,
pass: RadixPass
) -> Result<()>;
fn partition_impl(
rp: &mut GpuRadixPartitioner,
pass: RadixPass,
partition_attr: LaunchableSlice<'_, Self>,
payload_attr: LaunchableSlice<'_, Self>,
partition_offsets: &mut PartitionOffsets<Tuple<Self, Self>>,
partitioned_relation: &mut PartitionedRelation<Tuple<Self, Self>>,
stream: &Stream
) -> Result<()>;
}