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.