LLNL / fpzip

Lossless compressor of multidimensional floating-point arrays
http://fpzip.llnl.gov
BSD 3-Clause "New" or "Revised" License
105 stars 16 forks source link
compression cpp data-viz floating-point

fpzip

INTRODUCTION

fpzip is a library and command-line utility for lossless and optionally lossy compression of 2D and 3D floating-point arrays. fpzip assumes spatially correlated scalar-valued data, such as regularly sampled continuous functions, and is not suitable for compressing unstructured streams of floating-point numbers. In lossy mode, fpzip discards some number of least significant mantissa bits and losslessly compresses the result. fpzip currently supports IEEE-754 single (32-bit) and double (64-bit) precision floating-point data. fpzip is written in C++ but has a C compatible API that can be called from C and other languages. It conforms to the C++98 and C89 language standards.

fpzip is released as Open Source under a three-clause BSD license. Please see the file LICENSE for further details.

INSTALLATION

CMake builds

fpzip was developed for Linux and macOS but can be built on Windows using CMake. To use CMake, type:

cd fpzip
mkdir build
cd build
cmake ..
cmake --build . --config Release

fpzip can be configured using compile-time options, e.g.:

cmake .. -DFPZIP_FP=FPZIP_FP_SAFE -DBUILD_UTILITIES=OFF

To display the available options, type:

cmake .. -L

Basic regression testing is available:

ctest -V -C Release

GNU builds

fpzip may also be built using GNU make:

cd fpzip
gmake

This builds lib/libfpzip.a and bin/fpzip.

The GNU make options are listed in the file Config and should preferably be set on the command line, e.g.:

gmake FPZIP_FP=FPZIP_FP_SAFE BUILD_UTILITIES=0

To run the regression tests, type:

gmake test

DOCUMENTATION

Documentation is currently limited to the source files themselves. For information on the API, please see the header file include/fpzip.h. For an example of how to call fpzip, please see the source file utils/fpzip.cpp. This utility may be used to compress binary files of raw floating-point numbers. Usage is given by:

fpzip -h

AUTHOR

fpzip was written by Peter Lindstrom at Lawrence Livermore National Laboratory.

CITING fpzip

If you use fpzip for scholarly research, please cite the following paper:

Peter Lindstrom and Martin Isenburg
"Fast and Efficient Compression of Floating-Point Data"
IEEE Transactions on Visualization and Computer Graphics, 12(5):1245-1250, 2006

LICENSE

fpzip is distributed under the terms of the BSD license. See the files LICENSE and NOTICE for details.

SPDX-License-Identifier: BSD

LLNL-CODE-764017

QUESTIONS AND COMMENTS

For questions and comments, please contact us at fpzip@llnl.gov. Please submit bug reports and feature requests via the GitHub issue tracker.