Compact Parallel Hash Tables on the GPU
Steef Hegeman, Daan Wöltgens, Anton Wijs, Alfons Laarman
TL;DR
This paper tackles the memory and throughput bottlenecks of GPU hash tables by introducing compact hashing schemes. It develops a lockless parallel compact iceberg hash table with a provably correct find-or-put, and a compact cuckoo baseline for comparison, implemented in CUDA. Through synthetic and real-world benchmarks, the authors show that compact representations reduce memory usage and generally improve throughput by 10–20%, with iceberg achieving competitive performance under dynamic operation and near-parallel efficiency to the state-of-the-art cuckoo table in many scenarios. The work demonstrates that quotienting-based compact hashing can deliver both memory savings and performance gains on GPUs, suggesting practical applicability to high-throughput, memory-bound hashing tasks and potential extensions to more levels and dynamic features.
Abstract
On the GPU, hash table operation speed is determined in large part by cache line efficiency, and state-of-the-art hashing schemes thus divide tables into cache line-sized buckets. This raises the question whether performance can be further improved by increasing the number of entries that fit in such buckets. Known compact hashing techniques have not yet been adapted to the massively parallel setting, nor have they been evaluated on the GPU. We consider a compact version of bucketed cuckoo hashing, and a version of compact iceberg hashing suitable for the GPU. We discuss the tables from a theoretical perspective, and provide an open source implementation of both schemes in CUDA for comparative benchmarking. In terms of performance, the state-of-the-art cuckoo hashing benefits from compactness on lookups and insertions (most experiments show at least 10-20% increase in throughput), and the iceberg table benefits significantly, to the point of being comparable to compact cuckoo hashing--while supporting performant dynamic operation.
