NVIDIA nvTiff#

nvTIFF is a GPU accelerated TIFF(Tagged Image File Format) encode/decode library built on the CUDA platform. The library is supported on Volta+ GPU architectures. It supports the following TIFF feature set:

Note

Throughout this document, the terms “CPU” and “Host” are used synonymously. Similarly, the terms “GPU” and “Device” are synonymous.

Decoder#

  • Planar Separate and Contiguous modes

  • Up to 16 Samples per pixel

  • Compression

    • JPEG(via nvJPEG)

    • Deflate(via nvCOMP)

    • LZW

    • JPEG 2000(via nvJPEG2000)

    • None (uncompressed)

  • Color space can be - Grayscale, RGB, YCbCr, RGB Palette. When compressed data is in YCbCr or Palette mode, the library will convert the decoded output to RGB colorspace.

  • TIFF files can use either tiles or strips.

  • Up to 32 bits per sample when compression type is : None, Deflate, LZW, JPEG2000. Up to 8 bits per sample when compression type is JPEG.

  • TIFFs with multiple images having different properties.

  • APIs to retrieve GeoTIFF Metadata

The below diagram represents nvTIFF decoder’s interaction with other cuda libraries such as nvJPEG and nvCOMP (for DEFLATE decompression). The user application will call cuda APIs to create decode output buffers prior to calling nvTIFF decoder.

nvtiff decoder overview

nvTiff Decoder Overview#

Encoder#

  • Planar Contiguous mode only.

  • Up to 5 samples per pixel for None and LZW compression. JPEG compression supports unsigned 8-bit grayscale and RGB input.

  • None, LZW, and JPEG compression.

  • JPEG encoding uses nvJPEG. JPEG options include quality, optimized Huffman coding, and RGB chroma subsampling.

  • Compressed data is organized in strips or tiles.

  • If geometry is not specified, JPEG-encoded images are written as a single full-height strip. None and LZW compression keep the existing approximately 8 KiB strip default.

  • Tile width and height must be positive multiples of 16.

  • Up to 32 bits per sample.

  • Multiple Images in a TIFF file. All images which are to be compressed must have identical properties.

nvtiff encoder overview

nvTiff Encoder Overview#

Applying GPU Acceleration to TIFF files#

A TIFF file may contain single or multiple images. Each of these images are subdivided into strips or tiles. Each of these strips/tiles can be encoded/decoded in parallel thereby providing speed up over CPU implementations.

When decoding TIFF files with multiple images with identical metadata, the strips/tiles across all images can be decoded as part of a single batched CUDA kernel. The converse is true for encoding, each strip/tile can be compressed in parallel. The compressed tiles/strips can be stitched to create a TIFF file

Prerequisites#

  • CUDA Toolkit version 12.0 and above.

  • CUDA Driver version r525 and above.

  • nvCOMP 5+ (required when compression is deflate).

  • nvJPEG2000 0.8.1+ (required when compression is JPEG 2000).

Platforms Supported#

  • Linux versions:

Distribution

OS Version

Default GCC

GLIBC

x86_64

RHEL 10

10

14.3.1

2.39

RHEL 9

9

11.5.0

2.34

RHEL 8

8

8.5.0

2.28

Rocky Linux 10

10

14.3.1

2.39

Rocky Linux 9

9

11.5.0

2.34

Rocky Linux 8

8

8.5.0

2.28

Amazon Linux 2023

2023

11.4.1

2.34

MSFT Azure Linux

3

13.2.0

2.38-8

Ubuntu 26.04 LTS

26.04

15.2.0

2.43

Ubuntu 24.04 LTS

24.04

14.3.0

2.39

Ubuntu 22.04 LTS

22.04

12.3.0

2.35

OpenSUSE Leap 16

16

15.1.1

2.40

OpenSUSE Leap 15

15

7.5.0

2.38

SUSE SLES 16

16

15.1.1

2.40

SUSE SLES 15

15

7.5.0

2.38

Debian 13

13

14.2.0

2.41

Debian 12

12

12.2.0

2.36

Fedora 44

44

15.2.1

2.43

KylinOS V11

V11

12.3.1

2.38

arm64 systems (sbsa)

RHEL 10

10

14.3.1

2.39

RHEL 9

9

11.5.0

2.34

RHEL 8

8

8.5.0

2.28

Amazon Linux 2023

2023

11.4.1

2.34

MSFT Azure Linux

3

13.2.0

2.38-8

Ubuntu 26.04 LTS

26.04

15.2.0

2.43

Ubuntu 24.04 LTS

24.04

13.4.0

2.39

Ubuntu 22.04 LTS

22.04

11.4.0

2.35

OpenSUSE Leap 16

16

15.1.1

2.40

SUSE SLES 16

16

15.1.1

2.40

SUSE SLES 15

15

7.5.0

2.38

Debian 13

13

14.2.0

2.41

Debian 12

12

12.2.0

2.36

KylinOS V11

V11

12.3.1

2.38

arm64 sbsa Jetson (dGPU + iGPU with OpenRM/nvgpu)

Ubuntu 24.04 LTS Rel39 (JP7.x)

24.04

13.3.0

2.39

  • Windows versions:

    • Windows 10, Windows 11 and Windows Server 2022

  • Tegra

    • arm64-sbsa builds are supported on Thor starting CUDA 13.0.

    • arm64-sbsa builds are supported on Orin starting CUDA 13.2.

    • aarch64-jetson binaries based on CUDA 12 are available for Orin.