Table of Contents
Fetching ...

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.

Compact Parallel Hash Tables on the GPU

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.
Paper Structure (37 sections, 6 theorems, 1 equation, 5 figures, 5 algorithms)

This paper contains 37 sections, 6 theorems, 1 equation, 5 figures, 5 algorithms.

Key Result

lemma 1

Well-formed tables do not contain duplicate entries.

Figures (5)

  • Figure 1: Put benchmark. The colors indicate bucket setup. The solid lines are non-compact tables (baseline), the dashed lines use half the memory (compact), and the dotted lines use roughly a quarter ($\frac{9}{32}$) the memory (extra compact). The compact versions enjoy about 10 times the throughput of the non-compact ones.
  • Figure 2: Find benchmark. Legend as in Figure \ref{['fig:put']}.
  • Figure 3: Fop (find-or-put) benchmark. Legend as in Figure \ref{['fig:put']}. Note the scale difference.
  • Figure 4: Fop benchmark for the HAVi dataset. Legend as in Figure \ref{['fig:put']}. The throughput axes do not start at 0, so the differences in throughput are smaller than they appear.
  • Figure 5: Visual representation of order $\prec$ on the primary and secondary slots for a key $k$. On top is the primary bucket (with $B_0 = 3$ slots), below it are the two secondary buckets (with $B_1 = 2$ slots each). On each slot is drawn the element of $S$ identifying it, and to the left of it is its index in the well-ordering.

Theorems & Definitions (14)

  • remark 1
  • definition 1
  • definition 2
  • lemma 1
  • proof
  • theorem 1
  • lemma 2
  • proof
  • lemma 3
  • proof
  • ...and 4 more