TL;DR

Halide Compression released fcvvdp, a C implementation of the University of Cambridge CVVDP perceptual metric. Benchmarks on a Core i7-13700K show large reductions in memory use and CPU cycles and an ~18% wall-clock speedup versus the reference cvvdp, though fcvvdp currently runs single-threaded.

What happened

A repository named fcvvdp provides a fast C implementation of the CVVDP perceptual quality metric, with source and build files hosted on GitHub. The project includes both a command-line binary and a library distribution built with Zig; build instructions recommend Zig 0.15.x and list zlib-rs and libunwind among dependencies. Maintainers published benchmark comparisons against an existing cvvdp binary using a Core i7-13700K Linux system. In those tests fcvvdp consumed far less memory and CPU cycles and completed the sample job faster in wall time, but the implementation currently runs on a single CPU thread while the reference cvvdp used multiple threads. The code is released under the Apache 2.0 license and credits a prior implementation named Vship (MIT license) as its basis. The repository shows a small contributor base and an initial 0.0.1 release.

Why it matters

  • Large resource reductions could make CVVDP-based comparisons feasible on lighter hardware or in batch workflows where memory footprint matters.
  • Lower CPU cycle usage can cut compute costs when running large-scale or repeated perceptual comparisons.
  • A single-threaded, lower-overhead implementation may simplify integration into tools that require predictable per-process resource use.
  • Remaining single-threaded limits mean performance characteristics may change if and when multithreading is added.

Key facts

  • fcvvdp is a C implementation of the CVVDP perceptual quality metric, developed by Halide Compression.
  • Benchmarks run on a Core i7-13700K show fcvvdp used ~86.7 MB peak RSS versus ~1.00 GB for cvvdp (≈91% less RAM).
  • Measured CPU cycles were ~82.8G for fcvvdp vs ~747G for cvvdp (≈88% fewer cycles).
  • Wall-clock time in the provided test was 16.1s for fcvvdp vs 19.6s for cvvdp (≈17.9% faster).
  • Other benchmark deltas included ~59% fewer cache misses and ~92% fewer branch misses for fcvvdp in that test.
  • fcvvdp currently runs with one CPU thread; the referenced cvvdp used multiple threads in the comparison.
  • Build prerequisites listed: zlib-rs, libunwind, and Zig 0.15.x; recommended build: zig build –release=fast (optionally -Dflto=true).
  • The project is offered under the Apache 2.0 license and acknowledges Vship (MIT license) as the implementation it derived from.
  • Repository metadata: 7 stars, 1 fork, 2 contributors; primary languages C (~83.3%) and Zig (~16.7%).
  • A library target (libcvvdp) and a header (cvvdp.h) are produced by the build; command-line usage and options are provided in the repo.

What to watch next

  • Whether multithreading support will be introduced to close the parallelism gap with the reference cvvdp (not confirmed in the source).
  • Additional benchmark runs on different CPUs and operating systems to verify performance consistency (not confirmed in the source).
  • New releases or versioned improvements beyond the initial 0.0.1 release (not confirmed in the source).

Quick glossary

  • CVVDP: A perceptual quality metric designed to predict visible differences between a reference and a distorted image or video.
  • peak RSS: Peak resident set size: the maximum amount of physical memory used by a process during execution.
  • CPU cycles: A low-level measure of total processor cycles consumed while running a program; useful for comparing compute effort.
  • FLTO: Full link-time optimization, a compiler optimization stage that performs cross-module optimization at link time.
  • Zig: A programming language and build system used in the fcvvdp project to produce binaries and libraries.

Reader FAQ

What is fcvvdp?
fcvvdp is a C implementation of the CVVDP perceptual quality metric published by Halide Compression.

How do I build the binary?
Install the listed dependencies (zlib-rs, libunwind, Zig 0.15.x) and run: zig build –release=fast; adding -Dflto=true enables FLTO.

Is fcvvdp multithreaded?
No — the repository notes fcvvdp currently runs with a single CPU thread while the compared cvvdp used multiple threads.

Under what license is fcvvdp distributed?
fcvvdp is distributed under the Apache 2.0 license; it credits Vship as a derivation source under the MIT license.

Does fcvvdp match the original Cambridge CVVDP exactly?
not confirmed in the source

fcvvdp A fast C implementation of the CVVDP metric (arXiv) from the University of Cambridge. More information about how CVVDP works according to this implementation is provided here. Benchmarks Benchmarked…

Sources

Related posts

By

Leave a Reply

Your email address will not be published. Required fields are marked *