1 of 1

zfp: Compressed Floating-Point Arrays

1

Scientific Achievement

Data compression and decompression can be greatly accelerated via parallel execution on today’s multi-core computers but require changes to enable direct access to small, variable-size blocks of compressed data. Indexing blocks may add storage overhead that exceeds the payload compressed data. We have developed several compact encodings of 64-bit block offsets that allow locating any block quickly using as little as 16 bit of storage per block. This enables thousands of blocks to be (de)compressed concurrently on GPUs.

Significance and Impact

Most science applications drive lossy compression by prescribing error tolerances rather than compressed size—a zfp feature previously available only on CPUs. Our work allows applications to take advantage of GPUs through error-bounded, variable-rate, parallel (de)compression using CUDA and HIP. We are separately collaborating with Intel to port these techniques to SYCL.

zfp partitions multidimensional data sets into small cubical blocks (visible on the far right) that are compressed and decompressed independently, enabling block-granular random access and parallel decompression on GPUs by efficiently indexing blocks. This work has resulted in several compact block index encodings that reduce storage by up to 4x while still ensuring constant-time access.

Technical Approach

  • Block offsets are computed from interleaved offsets & sizes via prefix sums.
  • Multiple encodings allow trading speed of access and compactness.

PI(s)/Facility lead(s): Peter Lindstrom (LLNL)

Collaborating Institutions: University of Utah, Intel

ASCR Program: SciDAC RAPIDS2

ASCR PM: Kalyan Perumalla

Code Developed: https://github.com/LLNL/zfp