pub trait CudaHashJoinable: DeviceCopy + KeyAttribute {
    fn build_impl(
        hj: &CudaHashJoin<Self>,
        join_attr: LaunchableSlice<'_, Self>,
        payload_attr: LaunchableSlice<'_, Self>,
        stream: &Stream
    ) -> Result<()>;
fn probe_sum_impl(
        hj: &CudaHashJoin<Self>,
        join_attr: LaunchableSlice<'_, Self>,
        payload_attr: LaunchableSlice<'_, Self>,
        result_set: &Mem<u64>,
        stream: &Stream
    ) -> Result<()>; }
Expand description

Specifies that the implementing type can be used as a join key in CudaHashJoin.

CudaHashJoinable is a trait for which specialized implementations exist for each implementing type (currently i32 and i64). Specialization is necessary because each type requires a different CUDA function to be called.

An alternative approach would be to specialize the implementation of CudaHashJoin methods for each type. However, this would also require a default implementation for all non-implemented types that throws an exception. The benefit would be less code, but currently Rust stable doesn’t support impl specializations with default implementations. Rust issue #31844 tracks the RFC.

Required methods

Implements CudaHashJoin::build for the implementing type.

Implements CudaHashJoin::probe_sum for the implementing type.

Implementations on Foreign Types

Implementors