Skip to main content

KernelProvider

Trait KernelProvider 

Source
pub trait KernelProvider: Send + Sync {
    // Required methods
    fn hash_join(
        &self,
        left: &GpuBuffer,
        right: &GpuBuffer,
        left_keys: &[usize],
        right_keys: &[usize],
    ) -> Result<GpuBuffer>;
    fn dedup(&self, input: &GpuBuffer, key_cols: &[usize]) -> Result<GpuBuffer>;
    fn union(&self, a: &GpuBuffer, b: &GpuBuffer) -> Result<GpuBuffer>;
    fn diff(&self, a: &GpuBuffer, b: &GpuBuffer) -> Result<GpuBuffer>;
    fn groupby_agg(
        &self,
        input: &GpuBuffer,
        key_cols: &[usize],
        agg: AggOp,
        value_col: usize,
    ) -> Result<GpuBuffer>;
}
Expand description

Trait for GPU kernel execution providers

This abstraction allows swapping CUDA for other backends (HIP, SYCL)

Required Methods§

Source

fn hash_join( &self, left: &GpuBuffer, right: &GpuBuffer, left_keys: &[usize], right_keys: &[usize], ) -> Result<GpuBuffer>

Perform a hash join between two buffers

Source

fn dedup(&self, input: &GpuBuffer, key_cols: &[usize]) -> Result<GpuBuffer>

Remove duplicate rows based on key columns

Source

fn union(&self, a: &GpuBuffer, b: &GpuBuffer) -> Result<GpuBuffer>

Compute union of two buffers

Source

fn diff(&self, a: &GpuBuffer, b: &GpuBuffer) -> Result<GpuBuffer>

Compute set difference (a - b)

Source

fn groupby_agg( &self, input: &GpuBuffer, key_cols: &[usize], agg: AggOp, value_col: usize, ) -> Result<GpuBuffer>

Perform groupby aggregation

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§