Functionality
- Added timeout for synchronous wait in case of hardware disconnect. QPL build will also try to autodetect and use target wait-package if available and auto dispatch its use.
- Added the
--sync_apioption to the Benchmarks Framework, allowing the use of theqpl_execute_jobAPI for performance measurements. This is helpful for measuring latency. Without this option, the framework uses a combination ofqpl_submit_jobandqpl_wait_jobAPIs. - Experimental logging of IAA execution time is now available in the Benchmarks Framework. To use this feature, build QPL with
-DQPL_EXPERIMENTAL_LOG_IAA=ON. This registers timestamps before accelerator submission and after IAA execution, excluding pre- and post-processing overhead. Note: This feature works only in synchronous mode for operations with a single descriptor submission (e.g., Dynamic compression is not supported). To view the percentage of time spent on the accelerator, run the Benchmarks Framework with the--sync_apiand--accel_timeoptions. - Added
get_max_transfer_sizefunction tohw_dispatcherto handle 2MB limitation on idxd driver size.
Usability and Documentation
- Updated requirements.txt to the latest compatible tools required for building Intel(R) QPL documentation locally.
- Updated the GoogleTest* submodule to v1.17.0 release. The current QPL test framework is not compatible with previous GoogleTest* versions.
- Removed Universally Unique ID library 'uuid' from QPL dependency list.
- Published the Code Of Conduct.
- Extended clang-tidy configuration file by QPL headers and refactored it correspondently.
- Extended fuzzy testing by acceleration path functionality.
- Expanded bad argument and unit testing for the
qpl_get_safe_deflate_compression_buffer_sizeand for theqpl_{deflate, huffman_only}_table_createfunctions.
Deprecated Functionality
- Deprecated the sanitizer build options
-DSANITIZE_MEMORYand-DSANITTIZE_THREAD. Instead, use-DQPL_USE_CLANG_SANITIZER=[ADDRESS|LEAK|UNDEFINED|THREAD|ALL_COMPATIBLE]to enable sanitizers. This change aligns with Clang sanitizer build options. See the Build Options for more details.
Bug Fixes
- Fixed an integer overflow issue in the
qpl_get_safe_deflate_compression_buffer_sizefunction. Previously, for sizes close toUINT32_MAX, users could receive a negative value. - The behavior of QPL dispatcher was changed under Windows - instead of automatic changing
qpl_path_hardwaretoqpl_path_softwareinqpl_init_jobfunction(accelerator offload is not supported under Windows), accelerator support error is now returning.
Known Limitations
- Intel(R) QPL could be built from directly downloadable files (
.tar,.tgz) without tests and benchmark frameworks, using the-DQPL_BUILD_TESTS=OFFbuild option. This is because it requires submodules that are not included in the archives by GitHub* during release creation. - Known test failures are listed below. Some tests fail only under certain conditions, which are noted in parentheses.
- Functional tests:
- (
software_path,auto_pathonly on platforms without IAA) ta_c_api_deflate_stateful.{dynamic/fixed/static}_default_verify - (
software_path,auto_path) ta_c_api_deflate_stateful.{dynamic/fixed/static}_high_verify
- (
- Functional tests:
- Compression verification on the
qpl_path_softwareworks 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. - The implementation of
QPL_FLAG_CRC32Cis in progress. - When using
qpl_path_hardware, the compression and decompression with indexing mode on IAA 2.0 are limited to data sizes smaller than 4KB. - The Force Array Output Modification feature is enabled only for
qpl_path_hardwareand Intel IAA 2.0 (and later). In the case ofqpl_path_auto, an error codeQPL_STS_NOT_SUPPORTEDis returned as no fallback is available currently.
Thanks to the Contributors
The release includes contributions from the project team.