FastPair speeds up GPU string decoding with smarter memory use

FastPair: GPU-Optimized String Decoding

DatabasesHardware ArchitectureDistributed, Parallel, and Cluster Computing

Summary

Compressing data helps save space but often makes reading it slower, especially on GPUs which work best with parallel tasks. The authors found that current methods for decoding compressed data on GPUs do not fully use the GPU’s strengths due to scattered memory access patterns. They developed FastPair, a decoder that rearranges how data is looked up and stored so the GPU can work faster. This method significantly improves decoding speed on modern GPUs.

What this means in practice

  • For database engineers: Decode compressed database columns faster on GPUs by using FastPair for improved parallelism and memory efficiency.
  • For cloud storage providers: Improve data decompression throughput in GPU-accelerated systems to reduce read latency and bandwidth use with FastPair decoding.

Authors

Joseph Isaacs, Francesco Gargiulo, Peter Boncz, Robert Kruszewski, Nicholas Gates, Rossano Venturini, Will Manning, Martin Prammer

Abstract

Modern data systems compress data at rest and decompress it only when needed to preserve interconnect bandwidth. This design is often inefficient on GPU-based compute platforms because many conventional compression techniques exhibit serial data dependencies that limit GPU parallelism, leaving resources idle. Recent NVIDIA GPUs address this decoding deficiency through the Decompression Engine (DE), an on-die, fixed-function decompression accelerator for general-purpose compression formats such as Deflate, LZ4, and Snappy. Recent work has proposed string codecs that replace frequent substrings with fixed-width codes from a small, trained dictionary, making each code's lookup independent. While these lookups can run in parallel, the resulting scattered reads and short output writes still do not align well with GPU hardware, which handles contiguous memory accesses more efficiently. We present FastPair, a GPU decoder that optimizes the existing dictionary decoding process by reorganizing lookups and assembling decoded substrings for contiguous output writes. On a B300, FastPair decodes ten real-world columns 2.4 to 4.2x faster than the DE, reaching up to 1.6 TB/s.