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