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§
Sourcefn hash_join(
&self,
left: &GpuBuffer,
right: &GpuBuffer,
left_keys: &[usize],
right_keys: &[usize],
) -> Result<GpuBuffer>
fn hash_join( &self, left: &GpuBuffer, right: &GpuBuffer, left_keys: &[usize], right_keys: &[usize], ) -> Result<GpuBuffer>
Perform a hash join between two buffers
Sourcefn dedup(&self, input: &GpuBuffer, key_cols: &[usize]) -> Result<GpuBuffer>
fn dedup(&self, input: &GpuBuffer, key_cols: &[usize]) -> Result<GpuBuffer>
Remove duplicate rows based on key columns
Sourcefn union(&self, a: &GpuBuffer, b: &GpuBuffer) -> Result<GpuBuffer>
fn union(&self, a: &GpuBuffer, b: &GpuBuffer) -> Result<GpuBuffer>
Compute union of two buffers
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".