Release Notes#

This section includes significant changes, new features, performance improvements, and known issues. Unless noted otherwise, listed issues should not impact functionality. When functionality is impacted, we provide a workaround to avoid the issue (if available).

0.2.0#

Minor release that significantly improves ANS (de)compression performance and adds support for float8 and float32 data types.

New Features#

  • Significantly improved the ANS (de)compression performance and added support for float8 and float32 data types.

  • Added support for SM107 (Rubin) CUDA architecture.

Bug Fixes#

  • Fixed a read-after-write race condition in the LZ4 decompressor.

  • Fixed COMP::tmp_size_group() and DECOMP::tmp_size_group() not returning alignment-rounded scratch buffer sizes.

Breaking Changes#

  • The ANS compressed bitstream of nvCOMPDx 0.2.0 is not compatible with former versions of nvCOMPDx. Similarly, the ANS (de)compressor in this version is only interoperable with nvCOMP 6.0 or newer. Bitstreams generated with older versions of nvCOMP will not be decompressable by this version of nvCOMPDx.

  • The alignment and scratch requirements of the ANS (de)compressor changed.

Deprecation Notice#

  • Support for GCC 7 as host compiler is deprecated and will be removed in a future release. A warning is emitted when compiling with GCC 7. We recommend GCC 10 or newer.

0.1.4#

Patch release that improves performance and extends the support matrix.

New Features#

  • Improved LZ4 decompression throughput across supported architectures on average by 5-12%.

  • Added native support for MSVC through the .fatbin library (both Ninja and Visual Studio generators are supported via CMake).

  • The static library artifact of nvCOMPDx (libnvcompdx.a) is being deprecated and will be removed in the next release.

Bug Fixes#

  • Fixed LZ4 behavior when compressing an empty input: an empty input should be compressed to a single zero byte.

Breaking Changes#

  • Updated the public API types from platform-dependent derived types (size_t, uint8_t) to OS-agnostic fixed-width types (unsigned long long, unsigned char)

0.1.3#

Patch release that addresses algorithmic issues.

Bug Fixes#

  • Increased the shared memory requirement for block-level ANS compression to fit worst-case inputs.

Breaking Changes#

  • nvCOMPDx 0.1.3 requires CUDA Toolkit 13.0 or newer.

  • Support for SM70 and SM72 CUDA architectures is removed.

0.1.2#

Patch release that adds support for CUDA 13.0 Update 1.

0.1.1#

Patch release that adds support for CUDA 13.0.

New Features#

  • Support for CUDA 13.0.

  • Support Thor SM renaming from sm_101 to sm_110 starting from CUDA 13.0; for CUDA 12.9 and older releases Thor stays labeled as sm_101.

0.1.0#

The first early access (EA) release of the nvCOMPDx library.

New Features#

  • Added warp- and block-level APIs for compression and decompression with the LZ4 and ANS algorithms.

  • Added LZ4 compressor support for uint8, uint16, and uint32 data types (compatible with nvCOMP).

  • Added ANS compressor support for uint8 and (b)float16 data types (compatible with nvCOMP).

  • Added ANS strong-scaling support for both compression and decompression.

  • Added interoperatibility with nvCOMP: chunks compressed by nvCOMPDx can be decompressed by nvCOMP, and vice versa.

  • Added flexible thread block size support for both compression and decompression; users can use arbitrary block sizes when embedding nvCOMPDx.

  • Introduced global scratch, shared scratch, input, and output alignment requirements for both compression and decompression.

  • Support for SM70 (Volta) through SM120 (Blackwell) CUDA architectures:
    • Support for SM72 has been deprecated.

    • Support for SM87, SM103, and SM121 is experimental.

  • Added support for NVRTC + nvJitLink use cases for runtime kernel compilation and linking.

  • Added complete examples demonstrating the usage of the library.