Fast and Efficient Compression of Floating-Point Data
Peter Lindstrom
LLNL
Martin Isenburg
UC Berkeley
Abstract
Large scale scientific simulation codes typically run on a clus-
ter of CPUs that write/read time steps to/from a single file
system. As data sets are constantly growing in size, this in-
creasingly leads to I/O bottlenecks. When the rate at which
data is produced exceeds the available I/O bandwidth, the
simulation stalls and the CPUs are idle. Data compression
can alleviate this problem by using some CPU cycles to re-
duce the amount of data that needs to be transfered. Most
compression schemes, however, are designed to operate of-
fline and try to maximize compression, not online through-
put. Furthermore, they often require quantizing floating-
point values onto a uniform integer grid, which disqualifies
their use in applications where exact values must be retained.
We propose a simple and robust scheme for lossless, on-
line compression of floating-point data that transparently
integrates into the I/O of a large scale simulation cluster.
A plug-in scheme for data-dependent prediction makes our
scheme applicable to a wide variety of data sets us ed in visu-
alization, such as unstructured meshes, point sets, images,
and voxel grids. We achieve state-of-the-art compression
rates and compression speeds, the latter in part due to an
improved entropy coder. We demonstrate that this signif-
icantly accelerates I/O throughput in real simulation runs.
Unlike previous schemes, our method also adapts well to
variable-precision floating-point and integer data.
CR Categories: E.4 [Coding and Information Theory]:
Data compaction and compression
Keywords: high throughput, lossless compression, file com-
paction for I/O efficiency, fast entropy co ding, range coder,
predictive coding, large scale simulation and visualization.
1 Introduction
Data sets from scientific simulation and scanning devices are
growing in size at an exponential rate, placing great demands
on memory and storage availability. Storing such data un-
compressed results in large files that are slow to read from
and write to disk, often causing I/O bottlenecks in simula-
tion, data processing, and visualization that stall the appli-
cation. With disk performance lagging increasingly behind
the frequent doubling in CPU speed, this problem is ex-
pected to become even more urgent over the coming years.
A large scale simulation may run on a cluster of hundreds
to thousands of supercomputer nodes that write the results
of each time step to a shared file system for subsequent anal-
ysis and visualization [24]. Typically this involves storing
large amounts of single- or double-precision floating-point
numbers that represent one or more variables of simulation
state per vertex/cell. When the CPU speed with which the
simulation can be updated exceeds the available I/O band-
width, the simulation stalls and the CPUs are idle.
Data compression strategies have the potential to combat
this problem. By making use of excess CPU cycles, data can
be compressed and uncompressed to reduce the number of
bytes that need to be transferred between memory and disk
or across file systems, effectively boosting I/O performance
at little or no cost while reducing storage requirements.
The visualization community has developed compression
schemes for unstructured data such as point sets [6, 3], tri-
angular [27, 18], polygonal [19, 13], tetrahedral [11, 2], and
hexahedral [14] meshes and for structured data such as im-
ages and voxel grids [8, 12]. However, most of these schemes
are designed to maximize compression rate rather than data
throughput. They are commonly applied as an offline pro-
cess after the raw, uncompressed data has already been
stored on disk. In order to maximize effective throughput,
one must consider how to best balance compression speed
and available I/O bandwidth, and at the same time support
sufficiently efficient decompression. While higher compres-
sion rates improve effective bandwidth, this gain often comes
at the expense of a slow and complex coding scheme.
Furthermore, prior methods often expect that vertex po-
sitions and field values can be quantized onto a uniform in-
teger grid for e fficient (but lossy) predictive compression.
This mo difies the original data as the non-linear precision of
floating-point numbers cannot be preserved. In many science
and engineering applications, however, exact values must be
retained, e.g. for checkpoint dumps of simulation state and
for accurate analysis and computation of derived quantities
such as magnitudes, curls, fluxes, critical points, etc. The
use of uniform quantization is also prohibited for data sets
that exploit the non-linearity of the floating-point represen-
tation to allocate more precision to important features by
specifically aligning them with the origin. Quantization can
also change geometric relationships in the data (e.g. triangle
orientation, Delaunay properties). Finally, scientists are of-
ten particular about their data and will simply refrain from
using a compression scheme that modifies their data.
To address these needs, we propos e a novel and surpris-
ingly simple scheme for fast, lossless, online compression of
floating-point data using predictive coding. It provides a
well balanced trade-off between computation speed and data
reduction and can be integrated almost transparently with
standard I/O. Our scheme makes no assumption on the na-
ture of data to be compressed, but relies on a plug-in scheme
for computing data-dependent predictions. It is hence ap-
plicable to a wide variety of data sets used in visualization,
such as unstructured meshes, point sets, images, and voxel
grids. In contrast to many previous schemes, our method
naturally extends to compression of adaptively quantized
floating-point values and to coding of integer data.
We present results of lossless and lossy floating-point com-
pression for scalar values of structured 2D and 3D grids,
fields defined over p oint sets, and for geometry coding of
unstructured meshes. We compare our results with re cent
floating-point compression schemes to show that we achieve
both state-of-the-art compression rates and speeds. The
high compression speed can be attributed in part to the use
of an optimized, high-speed entropy coder, described here.
As a result, our compressor is able to produce substantial
increases in effective I/O rate for data-heavy applications
such as large scale scientific simulations.