Libjpeg-turbo¶
About¶
Libjpeg-turbo is a JPEG image codec that uses SIMD instructions to accelerate baseline JPEG compression and decompression on x86, x86-64, Arm, PowerPC, and MIPS systems, as well as progressive JPEG compression on x86, x86-64, and Arm systems.
Supported versions¶
To check which Libjpeg-turbo versions and build types are currently supported on Discoverer, execute on the login node:
module avail libjpeg-turbo
Loading/Compiler affinity¶
Each version of Libjpeg-turbo installed in the public software repository is separately built against four compiler sets: (i) Intel oneAPI, (ii) AMD Optimized Compiler Collection (AOCC), (iii) LLVM Compiler Infrastructure, (iv) GNU Compiler Collection (GCC). The name of the environmental module hints the provided compiler affinity.
Note
In the majority of instances, the users have the option to adhere to the GCC baseline build of the library. Please utilize the alternative build solely when you are fully cognizant of the advantages it will bring to your computations.
Intel oneAPI build¶
module avail libjpeg-turbo/*/*intel
NVIDIA HPC SDK build¶
Warning
This compiler collection is not capable of compiling the code of libjpeg-turbo.
LLVM build¶
module avail libjpeg-turbo/*/*llvm
AMD AOCC build¶
module avail libjpeg-turbo/*/*aocc
GNU GCC build¶
module avail libjpeg-turbo/*/*gcc
General notes on using floating point data¶
The floating point (fp) model, which is supported by the major compiler collections, regulates both the optimizations on floating-point data and the level of accuracy. Our libjpeg-turbo installations support the strict floating-point model, which means that our libjpeg-turbo builds passed the floating-point tests for comparison that are included in the programming code distribution.
Utilities¶
We provide highly productive cjpeg
, djpeg
, jpegtran
, rdjpgcom
, tjbench
, and wrjpgcom
utilities that are linked to the optimized libjpeg-turbo versions installed in our software repository. If it is necessary to rely on those optimized tools, first load the appropriate libjpeg-turbo environment modules, as previously mentioned, and then execute the executables under their respective names.
Warning
When large image sets should be processed, use the Slurm batch job to execute the utilities.
Build recipes and tests¶
For those who are interested in the process of compiling and optimizing the code of Libjpeg-turbo we follow, there is public access to our build recipes at:
https://gitlab.discoverer.bg/vkolev/recipes/-/tree/main/libjpeg-turbo/
There are also logs that were collected during the compilation and testing processes.
Getting help¶
See Getting help