Hash Table Access via Parallel Chain Traversal on SIMD Processors
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Conventional hash tables are inefficient when used on parallelized processors like GPGPUs due to lack of parallelism and branch and memory divergence during element manipulation operations.
Innovation Solution
The proposed solution involves a hash table design with multiple chains or arrays per bucket, allowing SIMD processors to traverse elements in parallel, reducing branch and memory divergence by ensuring all threads complete their look-ups simultaneously through a wide sweep search or organizing elements into contiguous arrays.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If conventional hash tables are used on parallelized processors, then element manipulation can be performed, but parallelism is insufficient and branch/memory divergence occurs reducing efficiency
Solution Approach 1:
The hash table is segmented into multiple buckets, with each bucket containing a separate chain of elements. This segmentation allows different threads to operate on different buckets simultaneously, enabling parallel access and reducing branch divergence. Each thread can independently traverse its assigned bucket's chain without interfering with other threads, thus improving productivity while maintaining a manageable structure through systematic division.
2Ease of operation
If threads access hash table elements at different depths, then key look-up can be performed, but threads complete at different times causing branch divergence
Solution Approach 1:
The hash table structure is pre-organized with multiple buckets and chains designed to balance element distribution. By preliminarily distributing elements across multiple chains within buckets, the system ensures that thread traversal depths are more uniform. This preliminary structural arrangement reduces the variance in completion times across threads, minimizing branch divergence and reducing idle waiting time while maintaining ease of key look-up operations.
3Power
If multiple threads execute the same instructions in parallel, then processing capacity increases, but threads must wait for the slowest thread causing reduced efficiency
Solution Approach 1:
The hash table is divided into multiple independent buckets, each with its own chain structure. This segmentation allows the parallel processing power of multiple threads to be fully utilized by assigning different buckets to different threads. Each thread can complete its traversal independently without waiting for others, as the segmentation ensures that no single thread becomes a bottleneck. This resolves the contradiction by enabling both high parallel processing capacity and high thread execution efficiency through independent parallel paths.
Data Source
AI summary
A system and method for accessing a hash table are provided. A hash table includes buckets where each bucket includes multiple chains. When a single instruction multiple data (SIMD) processor receives a group of threads configured to execute a key look-up instruction that accesses an element in the hash table, the threads executing on the SIMD processor identify a bucket that stores a key in the key look-up instruction. Once identified, the threads in the group traverse the multiple chains in the bucket, such that the elements at a chain level in the multiple chains are traversed in parallel. The traversal continues until a key look-up succeeds or fails.


