Experimental small-batch CUDA baseline JPEG decoding core

Offen
#60 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Anfängerfreundlichkeit
8/100
Issue-Typ
Feature
Klarheit
Größtenteils klar
Aktivitätsstatus
Aktiv
Tech-Stack
cpp, python, pytorch

Rechercherichtung

This is a proposal for an opt-in experimental CUDA baseline JPEG decoder core, and the author is asking whether the direction fits the project rather than asking for a specific change. Read the issue to see the planned split between Huffman decoding, IDCT, color conversion and host parsing, then wait for maintainer direction before touching any code. Done would mean the maintainers have answered the scope question and a draft review has been agreed.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

Proposal

Introduce an opt-in experimental native CUDA baseline JPEG decoding core as a
step toward a low-host-work decoder backend for small batches.

nvJPEG and nvImageCodec already provide GPU-assisted Huffman decoding. This
proposal concerns host work and small-batch scheduling, not missing JPEG support.

Existing implementation and evidence

The prototype moves entropy decoding onto CUDA using overlapping speculative
Huffman decoding, exact chunk-state reconciliation, coefficient decoding, and
DC prefix scans, followed by dequantization, IDCT, and color conversion.
Host work is marker/table parsing, lookup-table construction, input staging,
and stream submission.

On 2026-10-22, the original Torch-bound implementation was checked on an RTX 5090
with PyTorch 2.8.0+cu128 and torchvision 0.23.0+cu128: 5000/5000 decoded images and
5000/5000 preprocessing tensors were bit-identical to that reference. The corpus
contained 4990 baseline 4:4:4 images and 10 grayscale images. A 200-image sequential
load benchmark changed from 2335.05 to 425.75 microseconds/image, while GPU busy
time increased from 57.79 to 335.80 microseconds/image. These are historical
prototype/load-path measurements rather than current nvImageCodec or model
end-to-end performance claims.

Scope of the proposed draft

  • Separate the algorithm from Torch into C++/CUDA parsing, kernels, resource
    ownership, stream submission, and explicit completion/error checking.
  • Initial scope: baseline 8-bit, single scan, grayscale/YCbCr 4:4:4, no restart
    intervals; caller-owned pitched planar RGB output.
  • Keep the component disabled by default, without changing codec selection.
  • Retain NVIDIA CUDA samples attribution for the IDCT butterfly.
  • Include malformed-header tests, sanitizer checks, and a GPU contract test.

I will submit the native core as a draft for architecture/kernel review. The
framework decoder adapter and matched current nvJPEG comparisons are separate
follow-up work. Is an optional backend with this initial scope a useful direction
for the project?

Vorherrschende Sprache
Jupyter Notebook
Sterne
164
Forks
26
Ø Merge
27 Min.
Gemergte PRs (30 T.)
1

Entwicklungsumgebung

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus NVIDIA/nvImageCodec

Alle Issues in NVIDIA/nvImageCodec

Ähnliche Issues

Weitere Issues zu Data Engineering

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.