Intel QPL v1.2.0
Functionality
- Partially enabled support of IAA 2.0 for existing functionality, some failures are expected for Huffman Only mode when hardware compression with verification is used.
- Enabled 1-pass and 2-pass Header Generations on IAA 2.0 for the Dynamic Deflate compression, that reduces latency for smaller sizes.
- Added Cyclic Redundancy Check (CRC) operation support to the Benchmarks Framework.
- Fixed a workaround for IAA 1.0 limitation with Big Endian 16 format in Huffman Only.
Usability and Documentation
- Added Library Architecture Overview diagram to the Introduction page.
- Extended returned status codes for Completion Record for more accessible issues reporting.
- Clarified the NUMA* support in the Benchmarks Framework documentation.
- Updated provided configuration files to always set Block on Fault and removed the Max Batch Size parameter not used on IAA.
- Updated the GoogleTest* submodule to v.1.13 release. The current QPL test framework is not compatible with previous GoogleTest* versions.
- Added new examples for multi-chunk compression, including fixed and static blocks.
- Updated the Installed package structure to comply with the Linux* OS file-system hierarchy.
- Added a link to the project with Java* bindings for QPL Low-Level C APIs.
- Clarified in the Documentation that the minimally tested platform is x86-64 CPU with Intel® Streaming SIMD Extensions 4.2 (instead of Intel® Advanced Vector Extensions 2).
Breaking Changes
- Updated the accel-config/libaccel-config dependency requirement to v4.0.
Bug Fixes
- Fixed the Compression Ratio calculation in the Benchmarks Framework to eliminate the rounding error.
- Fixed incorrect CTest* integration when QPL is used as a dependency in another project.
- Fixed the incorrect Linux* OS identification macro that could lead to build failures on some systems.
- Fixed build warnings and failures with GCC* 11, 12, 13.
- Fixed the incorrect Benchmarks Framework reporting of the NUMA* nodes when several nodes are available on a socket.
- Refactored the host part of the Hardware Path to rely on the platform identification and kernels dispatcher instead of directly calling AVX-512-optimized code.
- Fixed compatibility with the GZIP* format. Previously, the stream produced by QPL was correct but could trigger a warning due to the incorrect trailer information.
Known Limitations
- Intel QPL could be built from directly downloadable files (
.tar,.tgz) without tests and benchmark frameworks, using the-DQPL_BUILD_TESTS=OFFbuild option. Since they require submodules that are not included in the archives by GitHub* during release creation. - Compression verification on the software path works only with indexing mode and data of size smaller than 32KB in other modes.
- Inflate does not report the error code
QPL_STS_BIG_HEADER_ERRwhen a header is too big to fit in the input buffer. - Known test failures are listed below. Some tests only fails under certain conditions, which are noted in parentheses
- Functional tests:
- (sw) ta_c_api_deflat.{dynamic/fixed/static}_{high/default}_verify_stateful_compression
- (hw) ta_c_api_deflate_canned_indexing.default_level
- (hw) (async) ta_c_api_deflate_index_extended.PerformOperation
- (hw) tn_c_api_expand.tn_rle_input_error_handling
- Functional tests:
- Dynamic Deflate on IAA 2.0 may show performance regression in throughput benchmarks using the asynchronous path.
Thanks to the Contributors
Release includes contributions from the project team as well as @alexandraepan, @aekoroglu, @yaqi-zhao, @miguelinux.