GPU Hash Join Algorithm Using Dynamic Parallelism
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing join algorithms for graphics processing units (GPUs) are not optimized for modern GPU architectures, leading to suboptimal performance and inability to fully utilize the computing resources of newer devices.
Innovation Solution
The development of new hash join and sort-merge join algorithms that leverage advanced GPU features such as dynamic parallelism, native atomic operations, and CUDA Streams to improve data management and processing efficiency, including the use of shared memory, register files, and concurrent thread operations.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If existing join algorithms are used for modern GPUs, then code compatibility is maintained, but performance is suboptimal and computing resources are not fully utilized
Solution Approach 1:
The patent changes the algorithmic parameters and execution model to match modern GPU architecture capabilities. It introduces dynamic parallelism where child kernels are launched based on data skew detection, uses native atomic operations for thread-safe histogram updates, and implements CUDA Streams for asynchronous memory operations. These parameter changes enable the system to fully utilize modern GPU computing resources while maintaining join operation functionality.
Solution Approach 2:
The patent implements dynamic adaptation during execution through several mechanisms: dynamic parallelism allows the system to launch additional child kernels based on detected data skew conditions, atomic operations provide dynamic thread-safe access to shared histogram data, and CUDA Streams enable dynamic memory operation scheduling. This dynamic behavior allows the algorithm to self-optimize based on actual data characteristics and hardware capabilities.
2Power
If GPU computing resources are increased, then processing capacity grows, but maximum performance cannot be achieved without optimization
Solution Approach 1:
The patent incorporates feedback mechanisms through data skew detection that monitors the distribution of hash values during the join process. When skew is detected, the system launches additional child kernels to process skewed partitions, creating a feedback loop that adapts the computation to actual data characteristics. This feedback-driven approach ensures that computing capacity is directed toward the most demanding data regions, maximizing overall efficiency.
Solution Approach 2:
The patent segments the join operation into independent tasks handled by different thread blocks and child kernels. Each thread block processes a partition of the data independently, and skewed partitions can be handled by separately launched child kernels. This segmentation allows the system to scale computing capacity by adding more segments rather than increasing resources uniformly, optimizing the ratio of computational power to actual work required.
3Productivity
If new GPU features are utilized, then performance is maximized, but algorithm complexity increases
Solution Approach 1:
The patent implements self-service through automatic data skew detection and adaptive kernel launching. The system monitors its own execution characteristics and automatically adjusts the computation by launching additional child kernels when skew is detected, eliminating the need for manual configuration of complex parallelization strategies. This self-service approach manages algorithm complexity automatically based on data characteristics.
Solution Approach 2:
The patent uses intermediate data structures and mechanisms to simplify the interaction between GPU components. Shared memory is used as an intermediary for thread communication and histogram updates, CUDA Streams serve as intermediaries for memory operation scheduling, and child kernels act as intermediaries for processing skewed partitions. These intermediaries abstract the complexity of coordinating multiple GPU features into manageable components.
Data Source
AI summary
Disclosed are various embodiments for performing a join operation using a graphics processing unit (GPU). The GPU can receive input data including sequences or tuples. The GPU can initialize a histogram in a memory location shared by threads. The GPU can build the histogram of hash values for the sequences. The GPU can reorder the sequences based on the histogram. The GPU can probe partitions and store the results in a buffer pool. The GPU can output the results of the join.


