Module sql_ops::join::no_partitioning_join
source · [−]Expand description
Hash join operators for CPUs and GPUs (that don’t partition data).
The hash join operator supports x86_64 and PPC64 CPUs and CUDA GPUs. The hash join can be executed in parallel. Heterogeneous parallel execution on CPUs and GPUs is also supported. This is possible because the processor-specific operators use the same underlying hash table.
To execute in parallel on a CPU, the build
and probe_sum
methods of
CpuHashJoin
must be called from multiple threads on non-overlapping data.
build
must be completed on all threads before calling probe_sum
.
This design was chosen to maximize flexibility on which cores to execute on.
To execute in parallel on a GPU, it is sufficient to call build
and
probe_sum
once. Both methods require grid and block sizes as input,
that specify the parallelism with which to execute on the GPU. The join
can also be parallelized over multiple GPUs by calling the methods multiple
times using different CUDA devices.
Structs
CPU hash join implemented in C++.
Build a CpuHashJoin
.
GPU hash join implemented in CUDA.
Build a CudaHashJoin
.
Hash table for CpuHashJoin
and CudaHashJoin
.
Traits
Specifies that the implementing type can be used as a join key in
CpuHashJoin
.
Specifies that the implementing type can be used as a join key in
CudaHashJoin
.