Libjpeg-turbo

About

Libjpeg-turbo is a library that provides support for the JPEG image format. It is widely used in various applications, including image processing, image compression, and image decompression. For more information, visit the official Libjpeg-turbo website.

Note

On Discoverer we use libjpeg-turbo as main productive JPEG image format provider for CPU-based applications.

Supported versions

In case your applications requite the use of another JPEG image format provider, you can install it by yourself, but those builds will not be supported by the Discoverer HPC team.

To check which Libjpeg-turbo versions and build types are currently supported on Discoverer, execute on the login node:

module avail libjpeg-turbo

Loading

If you need to access the latest version of the Libjpeg-turbo library, load the module without specifying the version:

module load libjpeg-turbo

In case you need to access a specific version of the Libjpeg-turbo library, you can specify the version:

module load libjpeg-turbo/<version>

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

We use the recent LLVM Compiler Infrastructure to build the Libjpeg-turbo library code. We do not support any other compilers for that purpose. The LLVM.org compilers are the default compilers on Discoverer Petascale Supercomputer. Since the code of the library does not include Fortran, the compiled binaries are not Fortran-compatible and can be used with any other compiler collection. That means our build of libjpeg-turbo is optimised for producing the fastest possible binaries for CPU-based applications.

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