Skip to content

av1gpu v0.6.0

Choose a tag to compare

@github-actions github-actions released this 02 Nov 03:00
· 153 commits to main since this release

Linux x86_64 and Windows x64 binaries for NVIDIA GPUs from Turing (RTX 20, T4) to Blackwell (RTX 50). Linux needs only the NVIDIA driver (525 or newer); Windows needs the driver (528 or newer) and the nvjpeg64_12.dll that comes in the zip. See the README for usage.

New: about 1.8–1.9× faster, same output

Every output file is byte-identical to v0.5.0's. On 66 test runs (4,698 files: every preset, quality 30–95, 4:4:4, 10-bit, monochrome, lossless, alpha, odd sizes, thumbnails, single-file mode, 1 to 6 encoders) there were 0 differences. The decoder gate (676/676 encodes and 38/38 alpha items in dav1d and aomdec) and the tests pass.

Measured on an NVIDIA L4 (AWS g6.4xlarge), with v0.5.0 alternating in the same session (MP/s, median of 6 runs):

Set v0.5.0 v0.6.0
Photos 0.2–24 MP, default 121 225 ×1.86
Same, counting CUDA start-up 112 195 ×1.75
Same, GP_ENCODERS=4 120 230 ×1.91
--small-preset none 142 272 ×1.91
--preset turbo3 --small-preset none 210 367 ×1.75
~1 MP photos, default 38 72 ×1.89
4:4:4 / 10-bit / 4:4:4 10-bit 98 / 120 / 95 170 / 230 / 166 ×1.73–1.91
Thumbnails (512 × 384 and smaller), images/s 214 393 ×1.84
Kodak PNGs (768 × 512), default / turbo3 --small-preset none, images/s 78 / 329 138 / 557 ×1.7
Transparent PNGs, default 27 44 ×1.63
Lossless +9–11 %

The L4 runs at its 72 W cap with either version, so energy per image drops by about the same factor: 0.57 → 0.30 J/MP. At the same file size, av1gpu on one L4 is now 8.0× libaom speed 6 on all 16 CPU threads (was 4.4×) and 15× NVENC AV1 on the same card. Details and raw results.

Where it came from:

  • Analysis (#35): integer SATD with warp shuffles instead of shared-memory atomics, faster 4 × 4 prediction, warp-wide transforms and top-K selection.
  • Reconstruction (#37): U and V chroma finished concurrently on two halves of the block, plus a faster critical path.
  • Batch mode (#36): CUDA modules loaded up front, the kernel stack reserved once, pinned-memory frees moved off the hot path, and a huge-page ingest buffer.
  • Loop filters (#32, #39, #40): CDEF applied per 64 × 64 tile in shared memory, a templated deblocking filter, and the loop-filter search's maps reused by the pipeline.
  • Entropy coding (#33, #34, #38): coefficient symbols, contexts and coding windows reworked.

Known limitations

  • Windows: its speed was measured with v0.5.0 (67–83 % of Linux) and hasn't been re-run. CPU limits set by job objects or containers aren't read (the thread count follows the process's CPU affinity), and the tests run on Linux only.
  • ICC profiles: profiles in PNG and WebP inputs are not read yet; JPEG profiles are kept.
  • EXIF orientation is ignored.