Releases: llnl/zfp
1.0.1
1.0.1 (December 15, 2023)
This patch release primarily addresses minor bug fixes and is needed to update
the zfpy Python wheels.
Added
- A new build macro,
BUILD_TESTING_FULL, specifies that all unit tests be
built;BUILD_TESTINGproduces a smaller subset of tests. Full tests and
documentation are now included in releases.
Fixed
- #169:
libmdependency is not always correctly detected. - #171:
ptrdiff_tis not always imported in Cython. - #176: cfp API is not exposed via CMake configuration file.
- #177: Full test suite is not included in release.
- #181:
rpathis not set correctly in executables. - #204: Array strides are not passed by value in zFORp.
- #220: Errors reported with scikit-build when building zfpy.
1.0.0
1.0.0 (August 1, 2022)
This release is not ABI compatible with prior releases due to numerous changes
to function signatures and data structures like zfp_field. However, few of
the API changes, other than to the cfp C API for compressed arrays, should
impact existing code. Note that numerous header files have been renamed or
moved relative to prior versions.
Added
zfp::const_array: read-only variable-rate array that supports
fixed-precision, fixed-accuracy, and reversible modes.- Compressed-array classes for 4D data.
constversions of array references, pointers, and iterators.- A more complete API for pointers and iterators.
- cfp support for proxy references and pointers, iterators, and
(de)serialization. - Support for pointers and iterators into array views.
zfp::array::size_bytes()allows querying the size of different components
of an array object (e.g., payload, cache, index, metadata, ...).- Templated C++ wrappers around the low-level C API.
- A generic codec for storing blocks of uncompressed scalars in zfp's
C++ arrays. - Additional functions for querying
zfp_fieldandzfp_streamstructs. zfp_config: struct that encapsulates compression mode and parameters.- Rounding modes for reducing bias in compression errors.
- New examples:
array,iteratorC, andppm.
Changed
- Headers from
array/,cfp/include/, andinclude/have been renamed
and reorganized into a commoninclude/directory.- The libzfp API is now confined to
zfp.h,zfp.hpp, andzfp.mod
for C, C++, and Fortran bindings, respectively. These all appear in
the top-levelinclude/directory upon installation. - C++ headers now use a
.hppsuffix; C headers use a.hsuffix. - C++ headers like
array/zfparray.hhave been renamedzfp/array.hpp. - C headers like
cfp/include/cfparrays.hhave been renamedzfp/array.h.
- The libzfp API is now confined to
size_tandptrdiff_treplaceuintandintfor array sizes and
strides in the array classes and C/Fortran APIs.zfp_boolreplacesintas Boolean type in the C API.bitstream_offsetandbitstream_sizereplacesize_tto ensure support
for 64-bit offsets into and lengths of bit streams. Consequently, the
bitstreamAPI has changed accordingly.- All array and view iterators are now random-access iterators.
- Array inspectors now return
const_referencerather than a scalar
type likefloatto allow obtaining aconst_pointerto an element
of an immutable array. zfp::array::compressed_data()now returnsvoid*instead ofuchar*.- The array (de)serialization API has been revised, resulting in new
zfp::array::headerandzfp::exceptionclasses with new exception
messages. - The array
codecclass is now responsible for all details regarding
compression. - The compressed-array C++ implementation has been completely refactored to
make it more modular, extensible, and reusable across array types. - Array block shapes are now computed on the fly rather than stored.
- The cfp C API now wraps array objects in structs.
- The zfpy Python API now supports the more general
memoryviewover
bytesobjects for decompression. - The zFORp Fortran module name is now
zfpinstead ofzforp_module. - Some command-line options for the
diffusionexample have changed. - CMake 3.9 or later is now required for CMake builds.
Removed
zfp::array::get_header()has been replaced with azfp::array::header
constructor that accepts an array object.ZFP_VERSION_RELEASEis no longer defined (useZFP_VERSION_PATCH).
Fixed
- #66:
make installoverwrites googletest. - #84: Incorrect order of parameters in CUDA
memset(). - #86: C++ compiler warns when
__STDC_VERSION__is undefined. - #87:
CXXFLAGSis misspelled incfp/src/Makefile. - #98:
zfp_stream_maximum_size()underestimates size in reversible mode. - #99: Incorrect
private_viewreads due to missing writeback. - #109: Unused CPython array is incompatible with PyPy.
- #112: PGI compiler bug causes issues with memory alignment.
- #119: All-subnormal blocks may cause floating-point overflow.
- #121: CUDA bit offsets are limited to 32 bits.
- #122:
make installdoes not install zfp command-line utility. - #125: OpenMP bit offsets are limited to 32 bits.
- #126:
make installdoes not install Fortran module. - #127: Reversible mode reports incorrect compressed block size.
- #150: cmocka tests do not build on macOS.
- #154: Thread safety is broken in
private_viewandprivate_const_view. ZFP_MAX_BITSis off by one.diffusionC,iteratorCare not being built withgmake.
0.5.5
0.5.5 (May 5, 2019)
-
Added support for reversible (lossless) compression of floating-point and
integer data. -
Added methods for serializing and deserializing zfp's compressed arrays.
-
Added Python bindings for compressing NumPy arrays.
-
Added Fortran bindings to zfp's high-level C API.
-
Change:
- The default compressed-array cache size is now a function of the total
number of array elements, irrespective of array shape.
- The default compressed-array cache size is now a function of the total
-
Bug fixes:
- Incorrect handling of execution policy in zfp utility.
- Incorrect handling of decompression via header in zfp utility.
- Incorrect cleanup of device memory in CUDA decompress.
- Tests for failing mallocs.
- CMake installation of CFP when built.
- zfp_write_header and zfp_field_metadata now fail if array dimensions
are too large to fit in header.
0.5.4
0.5.4 (October 1, 2018)
-
Added support for CUDA fixed-rate compression and decompression.
-
Added views into compressed arrays for thread safety, nested array
indexing, slicing, and array subsetting. -
Added C language bindings for compressed arrays.
-
Added support for compressing and decompressing 4D data.
-
Changes:
- Execution policy now applies to both compression and decompression.
- Compressed array accessors now return Scalar type instead of
const Scalar& to avoid stale references to evicted cache lines.
-
Bug fixes:
- Handling of negative strides.
- Command line tool handling of arrays with more than 2^32 elements.
- bitstream C++ compatibility.
- Respect minimum cache size request.
0.5.3
0.5.3 (March 28, 2018)
-
Added support for OpenMP multithreaded compression (but not decompression).
-
Added options for OpenMP execution to zfp command-line tool.
-
Changed return value of zfp_decompress to indicate the number of compressed
bytes processed so far (now returns same value as zfp_compress on success). -
Added compressed array support for copy construction and assignment via
deep copies. -
Added virtual destructors to enable inheritance from zfp arrays.
0.5.2
0.5.2 (September 28, 2017)
-
Added iterators and proxy objects for pointers and references.
-
Added example illustrating how to use iterators and pointers.
-
Modified diffusion example to optionally use iterators.
-
Moved internal headers under array to array/zfp.
-
Modified 64-bit integer typedefs to avoid the C89 non-compliant long long
and allow for user-supplied types and literal suffixes. -
Renamed compile-time macros that did not have a ZFP prefix.
-
Fixed issue with setting stream word type via CMake.
-
Rewrote documentation in reStructuredText and added complete
documentation of all public functions, classes, types, and macros.
Removed ASCII documentation.