Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
284 commits
Select commit Hold shift + click to select a range
0ba4ac8
feat: validate precomputed HTJ2K bands
jcwal1516 May 23, 2026
f1f1190
feat: bridge wavelet descriptors to HTJ2K encoder
jcwal1516 May 23, 2026
193a120
feat: classify corpus validation reports
jcwal1516 May 23, 2026
174061f
docs: reconcile DCT transcode plan checklist
jcwal1516 May 23, 2026
39e9395
feat: support progressive JPEG DCT transcode
jcwal1516 May 23, 2026
933f3b1
feat: add precomputed 9/7 HTJ2K band encode
jcwal1516 May 23, 2026
9e4f8e6
feat: add JPEG DCT to 9/7 HTJ2K path
jcwal1516 May 23, 2026
0ea887f
feat: add DCT transcode acceleration hooks
jcwal1516 May 23, 2026
50f61e4
docs: plan Metal 9/7 DCT transcode acceleration
jcwal1516 May 23, 2026
8e83847
feat: scaffold Metal DCT transcode accelerator
jcwal1516 May 23, 2026
208fb1a
feat: add 9/7 projection weight builder
jcwal1516 May 23, 2026
8d3eddf
feat: add Metal 9/7 DCT projection kernel
jcwal1516 May 23, 2026
0bc05a2
test: cover Metal 9/7 JPEG transcode sampling
jcwal1516 May 23, 2026
e9c4452
bench: add Metal 9/7 projection benchmarks
jcwal1516 May 23, 2026
2440952
docs: record transcode Metal architecture edge
jcwal1516 May 23, 2026
2069fee
bench: add WSI-scale Metal transcode benchmarks
jcwal1516 May 23, 2026
1a14b66
bench: add 224 WSI transcode cases
jcwal1516 May 23, 2026
54b361a
feat: add Metal 5/3 DCT projection
jcwal1516 May 23, 2026
b1a153a
feat: accelerate reversible integer DCT 5/3
jcwal1516 May 23, 2026
27ad9f3
feat: batch reversible Metal 5/3 projection
jcwal1516 May 23, 2026
76f9cc6
feat: wire batched IntegerDirect53 transcode
jcwal1516 May 23, 2026
24ffa6a
feat: add batched JPEG tile transcode API
jcwal1516 May 23, 2026
900b2d1
bench: add WSI tile batch transcode matrix
jcwal1516 May 23, 2026
67e8ab7
Add reversible 5/3 J2K to HTJ2K recode
jcwal1516 May 23, 2026
ccb5279
feat: prepare transcode release
jcwal1516 May 24, 2026
cf18704
fix: route hybrid transcode auto acceleration
jcwal1516 May 24, 2026
f1f2b75
docs: lead with pure rust htj2k transcode
jcwal1516 May 24, 2026
6370b85
feat: accelerate HTJ2K 9/7 Metal batches
jcwal1516 May 25, 2026
996d348
feat: reemit JPEG from DCT blocks
jcwal1516 May 25, 2026
01865c9
Optimize JPEG direct HTJ2K 9/7 pipeline
jcwal1516 May 25, 2026
2a948ea
feat: expand jpeg direct htj2k validation
jcwal1516 May 26, 2026
bd5f3a1
Fix Linux Metal dct97 test imports
jcwal1516 May 26, 2026
9630fcf
Harden adoption and benchmark publication gates
jcwal1516 May 26, 2026
e65fef5
Bump workspace version to 0.4.4
jcwal1516 May 26, 2026
df53034
Fix x86 CPU feature detection on Rust 1.88
jcwal1516 May 26, 2026
842374b
Add strict CUDA HTJ2K codestream path
jcwal1516 May 28, 2026
a5a9dfb
Keep CUDA HTJ2K tests package-local
jcwal1516 May 28, 2026
c6787f9
Fix CUDA HTJ2K ulong alias collision
jcwal1516 May 29, 2026
e12d486
Make HTJ2K MEL exponent lookup device local
jcwal1516 May 29, 2026
a39b5a8
Fix CUDA J2K encode stage test contracts
jcwal1516 May 29, 2026
9265b85
Align CUDA J2K adapter dispatch tests
jcwal1516 May 29, 2026
28a141a
Exercise CUDA HTJ2K batch encode test correctly
jcwal1516 May 29, 2026
2ebfd7b
Serialize CUDA validation tests on runner
jcwal1516 May 29, 2026
f782f57
Fix CUDA runtime clippy naming
jcwal1516 May 29, 2026
6a9fa50
Clarify strict CUDA HTJ2K residency docs
jcwal1516 May 29, 2026
4136066
Add HTJ2K packet segment lengths for CUDA packetization
jcwal1516 May 29, 2026
bb43284
Expose CUDA HTJ2K encode segment lengths
jcwal1516 May 29, 2026
357a7bb
Make CUDA HTJ2K encode pass requests explicit
jcwal1516 May 29, 2026
8240d76
Generate explicit CUDA HTJ2K SigProp pass
jcwal1516 May 29, 2026
66fc356
Validate CUDA HTJ2K SigProp target bitplanes
jcwal1516 May 29, 2026
723150b
Constrain CUDA HTJ2K zero SigProp magnitudes
jcwal1516 May 29, 2026
a064593
Thread HTJ2K encode pass requests to CUDA
jcwal1516 May 29, 2026
42deaea
Add CUDA HTJ2K three-pass MagRef encode subset
jcwal1516 May 29, 2026
44ed26b
Add MagRef stuffing regression test
jcwal1516 May 29, 2026
4f0e70a
Support stuffed CUDA HTJ2K MagRef bytes
jcwal1516 May 29, 2026
8dc6524
Add CUDA HTJ2K nonzero SigProp regression
jcwal1516 May 29, 2026
a332b4e
Support CUDA HTJ2K nonzero SigProp encode
jcwal1516 May 29, 2026
f72c5b0
Fix CUDA SigProp spread mask device lookup
jcwal1516 May 29, 2026
2bc8404
Fix CUDA HTJ2K MagRef cleanup mask
jcwal1516 May 29, 2026
952b620
Fix CUDA HTJ2K encode docs clippy
jcwal1516 May 29, 2026
f0410cb
Clarify CUDA HTJ2K runner signoff
jcwal1516 May 29, 2026
7450d21
Smoke-limit GPU timed benchmarks
jcwal1516 May 29, 2026
3af661c
Checkpoint: maturity hardening + single-delivery CUDA HTJ2K kernels
jcwal1516 May 29, 2026
2a080ad
Document strict CUDA HTJ2K encode and runner signoff scope
jcwal1516 May 29, 2026
40988c1
Fix CUDA HTJ2K decode kernel ulong typedef collision
jcwal1516 May 29, 2026
261b84a
Rename CUDA HTJ2K kernel ulong typedef to u64 to fix nvcc collision
jcwal1516 May 29, 2026
2b137ac
Give CUDA HTJ2K MEL exponent table device storage
jcwal1516 May 29, 2026
64df245
Add CUDA HTJ2K lossless encode completion design (Approach C)
jcwal1516 May 30, 2026
cdf2d51
Revise CUDA HTJ2K encode design per adversarial review (6 blockers)
jcwal1516 May 30, 2026
613eeb1
Add CUDA HTJ2K lossless encode Phase 1 implementation plan
jcwal1516 May 30, 2026
259916f
Fix stale CUDA quantize/ICT/HTJ2K test expectations to match native r…
jcwal1516 May 30, 2026
1843861
docs: CUDA HTJ2K lossless encode design spec + Phase 1 plan
jcwal1516 May 30, 2026
df5e2d8
build: nvcc --fmad=false for byte-exact f32 parity with native
jcwal1516 May 30, 2026
cd5f31b
test: native encode_htj2k byte-determinism precondition for parity
jcwal1516 May 30, 2026
cffd99f
test: native 2-/4-component HTJ2K lossless round-trip precondition
jcwal1516 May 30, 2026
6d51dba
docs: 2-component HTJ2K lossless is out of scope (native decoder reje…
jcwal1516 May 30, 2026
f5e9f49
feat: native scalar-reference exports (dwt53/rct/quantize/deinterleav…
jcwal1516 May 30, 2026
275afb6
test: CUDA stage-level parity vs native (dwt53/rct/quantize/deinterle…
jcwal1516 May 30, 2026
491f320
test: facade byte-exact parity matrix vs CPU reference (acceptance gate)
jcwal1516 May 30, 2026
1299fd7
feat: 4-component resident MCT (RCT planes 0-2, passthrough 3) for by…
jcwal1516 May 30, 2026
6252f05
feat: widen J2kLosslessSamples to 4-component (RGBA/CMYK); 2-componen…
jcwal1516 May 30, 2026
371af19
feat: strict facade typed rejections, no silent Ok(None) for in-scope…
jcwal1516 May 30, 2026
9663af9
ci: fail-closed CUDA parity gate (env assert, executed-count floor, f…
jcwal1516 May 30, 2026
e90ef5c
docs: CUDA HTJ2K lossless encode at native byte-parity (scope + non-g…
jcwal1516 May 30, 2026
43905d7
test: fix DWT stage-parity reshape (level order + nested band offsets…
jcwal1516 May 30, 2026
2bc8e71
test: fix u32 multiply overflow in 16-bit parity-cell synthesizer
jcwal1516 May 30, 2026
a0739f1
test: scope facade round-trip byte-equality to unsigned; document sig…
jcwal1516 May 30, 2026
0d3e4a7
docs(spec): lock Phase 2 decisions — grow tag-tree cap to 8192, drop …
jcwal1516 May 30, 2026
a60467d
feat(transcode-cuda): scaffold signinum-transcode-cuda backend (mirro…
jcwal1516 May 30, 2026
2f3acb8
feat(cuda-runtime): reversible 5/3 DCT->wavelet transcode kernels + b…
jcwal1516 May 30, 2026
d6a1633
feat(cuda-runtime): reversible 5/3 transcode runtime dispatch
jcwal1516 May 30, 2026
1ecc5f0
feat(transcode-cuda): wire reversible 5/3 facade dispatch + gated par…
jcwal1516 May 30, 2026
5eeace4
feat(transcode-cuda): irreversible 9/7 float transcode (kernels + dis…
jcwal1516 May 30, 2026
0699054
ci(gpu-validation): add signinum-transcode-cuda parity tests + clippy…
jcwal1516 May 30, 2026
dc7a831
test(transcode): independent CDF 9/7 filter-bank ground truth
jcwal1516 May 30, 2026
b0b533a
ci(gpu-validation): default run-metal-validation off
jcwal1516 May 30, 2026
224206e
test: independent exact-IDCT ground truth (integer ISLOW + float 9/7)
jcwal1516 May 30, 2026
6da59b2
test(transcode): independent canonical reversible 5/3 ground truth
jcwal1516 May 30, 2026
f0b843d
feat(transcode-cuda): close CUDA↔Metal 9/7 batch + codeblock parity gaps
jcwal1516 May 30, 2026
ce8f1a1
test(transcode-cuda): e2e codeblock pipeline + non-uniform coverage; …
jcwal1516 May 30, 2026
60cac9a
bench(nvidia-baseline): nvJPEG + nvJPEG2000 HTJ2K transcode comparison
jcwal1516 May 30, 2026
9312b04
fix(nvidia-baseline): hoist locals above goto in nv_baseline.cu
jcwal1516 May 30, 2026
9eb5aef
perf+bench: cache CUDA context; PSNR color-space; Metal backend; SVS …
jcwal1516 May 30, 2026
0e37e82
ci(gpu-validation): extract WSI tiles from SVS on the runner for the …
jcwal1516 May 30, 2026
0ad302f
bench(nvidia-baseline): commit pancreas tissue tile fixture + improve…
jcwal1516 May 30, 2026
4b8fe4a
bench: support rectangular GPU benchmark inputs
jcwal1516 May 30, 2026
0b53f11
fix: address cuda transcode audit findings
jcwal1516 May 30, 2026
fa708a2
ci: fix cuda runner validation gate
jcwal1516 May 30, 2026
80746a4
fix: harden cuda audit benchmark paths
jcwal1516 May 30, 2026
36e3dba
docs: document signinum-core public api
jcwal1516 May 30, 2026
ff6d5b6
fix: gate metal test helper on macos
jcwal1516 May 30, 2026
212ef87
test: accept cuda classic tier1 failure stage
jcwal1516 May 30, 2026
54512e5
perf: reduce cuda transcode batch overhead
jcwal1516 May 31, 2026
d242b5d
bench: compare cuda transcode encode modes
jcwal1516 May 31, 2026
c592301
perf: parallelize cpu ht tile encode
jcwal1516 May 31, 2026
3f947fb
perf: avoid sync between cuda transcode batch stages
jcwal1516 May 31, 2026
7ffb262
fix: preserve encode hooks in parallel transcode
jcwal1516 May 31, 2026
c6264b8
fix: rate-match lossy transcode quantization
jcwal1516 May 31, 2026
20330c8
cuda: add quality sweep and resident ht path
jcwal1516 May 31, 2026
4e198a3
bench: gate resident cuda ht dispatches
jcwal1516 May 31, 2026
90b5ea6
bench: harden cuda comparison gates
jcwal1516 May 31, 2026
2a81b84
ci: fix cuda benchmark validation gate
jcwal1516 May 31, 2026
ff738c0
docs: fix quantization rustdoc link
jcwal1516 May 31, 2026
53f278b
docs: document jpeg encoder API
jcwal1516 May 31, 2026
4d83b9d
docs: cover jpeg and tilecodec public items
jcwal1516 May 31, 2026
e328410
docs: cover gpu adapter public APIs
jcwal1516 May 31, 2026
fc849e1
docs: add unsafe audit inventory
jcwal1516 May 31, 2026
b1890b5
bench: restore jpeg cpu encode bench
jcwal1516 May 31, 2026
c3d7eeb
docs: audit jpeg encode bench unsafe
jcwal1516 May 31, 2026
60be8d5
cuda: batch ht encode payload readback
jcwal1516 May 31, 2026
46460ca
ci: pin gpu validation typos tool
jcwal1516 May 31, 2026
a9de115
transcode: group compatible 9/7 batch components
jcwal1516 May 31, 2026
3ac5091
test: expect grouped cuda 9/7 component dispatches
jcwal1516 May 31, 2026
a2b63a3
cuda: avoid redundant ht encode launch sync
jcwal1516 May 31, 2026
332874d
docs: record cuda ht resident encode blocker
jcwal1516 May 31, 2026
60d08f7
j2k: add big-bang lossy encode core
jcwal1516 May 31, 2026
b399da0
cuda: exercise lossy facade dwt dispatch
jcwal1516 May 31, 2026
e71f20a
j2k: support ROI RGN decode and backend benches
jcwal1516 May 31, 2026
bbd82c5
ci: bench facade encode backends on gpu runners
jcwal1516 May 31, 2026
512fc2a
bench: require strict device speed rows
jcwal1516 May 31, 2026
03072f3
j2k: add adaptive cpu gpu routing gates
jcwal1516 May 31, 2026
bad8963
docs: record adaptive gpu gate evidence
jcwal1516 May 31, 2026
905c4ec
merge: consolidate superseded maturity hardening branch
jcwal1516 May 31, 2026
57f7dd9
ci: align semver gate with major api release
jcwal1516 May 31, 2026
7355cf3
docs: plan adaptive j2k rca gates
jcwal1516 May 31, 2026
aec39cf
docs: plan adaptive j2k rca gates implementation
jcwal1516 May 31, 2026
dc243dd
j2k: preserve adaptive gate candidate evidence
jcwal1516 May 31, 2026
3ad1ec1
test: cover adaptive rca backend exactness
jcwal1516 May 31, 2026
4b508b9
j2k: prefer fully gated adaptive backends
jcwal1516 May 31, 2026
70861e1
metal: expose resident encode rca timings
jcwal1516 May 31, 2026
0bbc308
metal: wire resident encode rca timing buckets
jcwal1516 May 31, 2026
3ea3ebd
metal: refine resident encode rca timing
jcwal1516 May 31, 2026
26e5ca9
metal: expose stage stats accumulation
jcwal1516 May 31, 2026
4f649fe
metal: clarify resident encode rca timing docs
jcwal1516 May 31, 2026
6ef0e1c
metal: complete resident encode rca profile fields
jcwal1516 May 31, 2026
bb35618
bench: expand facade htj2k gate rows
jcwal1516 May 31, 2026
a8eab88
bench: strengthen facade gate row guards
jcwal1516 May 31, 2026
488c6e9
docs: scaffold adaptive gate evidence recording
jcwal1516 May 31, 2026
dcd35e2
cuda: add detailed htj2k decode profiling
jcwal1516 May 31, 2026
ef83cfd
cuda: split detailed decode dispatch counts
jcwal1516 May 31, 2026
1a1b46e
cuda: clarify detailed decode profile semantics
jcwal1516 May 31, 2026
8ed3a5c
cuda: set wall timing for profiled decode variants
jcwal1516 May 31, 2026
65b3921
cuda: add rgb rgba htj2k decode benches
jcwal1516 Jun 1, 2026
05ecdec
j2k: satisfy adaptive route clippy
jcwal1516 Jun 1, 2026
87563e5
docs: record adaptive j2k gate reruns
jcwal1516 Jun 1, 2026
b03e717
docs: clarify adaptive j2k gate rerun evidence
jcwal1516 Jun 1, 2026
47b8869
docs: update stable api snapshot
jcwal1516 Jun 1, 2026
85da975
docs: record cuda runner gate evidence
jcwal1516 Jun 1, 2026
bef2f12
ci: add cuda decode profiling and nvidia decode gate
jcwal1516 Jun 1, 2026
2d5b2a5
test: fix nvidia baseline built imports
jcwal1516 Jun 1, 2026
2d501c7
ci: use pathology tiles for nvidia decode gate
jcwal1516 Jun 1, 2026
a26d7a2
ci: prepare perf for samply decode profile
jcwal1516 Jun 1, 2026
f92a364
ci: report blocked samply decode profiles
jcwal1516 Jun 1, 2026
7100366
ci: write cuda decode trace to workspace target
jcwal1516 Jun 1, 2026
9673693
perf: refine metal and cuda j2k batching
jcwal1516 Jun 1, 2026
044a030
docs: record cuda htj2k decode rerun
jcwal1516 Jun 1, 2026
e543ed5
perf: route auto htj2k encode through metal ht blocks
jcwal1516 Jun 1, 2026
41babaf
perf: compose metal htj2k hybrid encode
jcwal1516 Jun 1, 2026
6b8f7b2
perf: gate metal htj2k host hybrid by size
jcwal1516 Jun 1, 2026
35ffcf6
bench: make nvjpeg2000 decode comparison fair
jcwal1516 Jun 1, 2026
2bfdc1f
bench: isolate nvjpeg2000 decode timing context
jcwal1516 Jun 1, 2026
28d9678
Optimize hybrid GPU paths and quarantine comparator
jcwal1516 Jun 2, 2026
4923542
ci: gate cuda transcode throughput
jcwal1516 Jun 4, 2026
8419fa0
perf: batch cuda htj2k transcode path
jcwal1516 Jun 4, 2026
ed11319
perf: batch cuda htj2k decode path
jcwal1516 Jun 4, 2026
ecfebe4
bench: compare cuda decode batch correctness
jcwal1516 Jun 4, 2026
b2a4638
perf: fuse cuda htj2k decode stages
jcwal1516 Jun 4, 2026
2635d4c
bench: refresh cuda nvidia baseline artifacts
jcwal1516 Jun 4, 2026
a599de3
metal: prepare hybrid profiling production cleanup
jcwal1516 Jun 4, 2026
954f7e3
xtask: align j2k signoff with metal bench reset
jcwal1516 Jun 4, 2026
643e6b1
ci: fix cross-platform metal cleanup warnings
jcwal1516 Jun 4, 2026
7d67df4
ci: compare semver against branch base
jcwal1516 Jun 4, 2026
117ddf6
Merge pull request #15 from frames-sg/codex/cuda-htj2k-batch-callers
jcwal1516 Jun 4, 2026
0bfaf93
chore: prepare 0.5 release infrastructure
jcwal1516 Jun 14, 2026
e4308e5
feat: shape shared 0.5 API surface
jcwal1516 Jun 14, 2026
727721f
feat: expand JPEG codec coverage
jcwal1516 Jun 14, 2026
b52686c
feat: extend JPEG 2000 native paths
jcwal1516 Jun 14, 2026
a031160
feat: update Metal codec adapters
jcwal1516 Jun 14, 2026
cdc8ded
feat: expand CUDA and transcode paths
jcwal1516 Jun 14, 2026
f5879ff
fix: harden tilecodec decompression paths
jcwal1516 Jun 14, 2026
0072f59
chore: require accelerator maintainer review
jcwal1516 Jun 14, 2026
ab50cd3
fix: align release gates for 0.5
jcwal1516 Jun 14, 2026
d22f8e4
fix: clean linux release gates
jcwal1516 Jun 14, 2026
7f9a1f7
fix: gate j2k metal linux stubs
jcwal1516 Jun 14, 2026
eee245a
fix: align linux release gates
jcwal1516 Jun 14, 2026
6fde54a
fix: stabilize ci tool targets
jcwal1516 Jun 14, 2026
54e604c
fix: close release ci gaps
jcwal1516 Jun 14, 2026
037b15f
fix: run stable api gate on macos
jcwal1516 Jun 14, 2026
daccfac
rename: signinum -> j2k workspace cutover (v0.6.0)
jcwal1516 Jun 20, 2026
a17fae8
chore: route encode-stage users through adapter module
jcwal1516 Jun 20, 2026
930077c
fix: reposition j2k codec docs and ci gates
jcwal1516 Jun 21, 2026
5136c24
fix: gate metal encode test imports on linux
jcwal1516 Jun 21, 2026
11dcde2
fix: run semver gate on macos
jcwal1516 Jun 21, 2026
f67b442
Add Metal encode deinterleave stage
jcwal1516 Jun 21, 2026
e9058f0
Add Metal encode DWT 9/7 stage
jcwal1516 Jun 21, 2026
cdd0303
Constrain Metal encode Auto routing by benchmark evidence
jcwal1516 Jun 21, 2026
dc03213
Spike cuda-oxide CopyU8 kernel path
jcwal1516 Jun 21, 2026
85e2deb
Document JPEG Metal routing evidence
jcwal1516 Jun 21, 2026
aed1df7
Add transcode pipeline residency map
jcwal1516 Jun 21, 2026
2a7cf8f
Plan cuda-oxide kernel path
jcwal1516 Jun 21, 2026
1c8f80a
Plan Metal encode-stage coverage
jcwal1516 Jun 21, 2026
cdf5a9c
Plan Metal JPEG path coverage
jcwal1516 Jun 21, 2026
f04f010
Plan Metal transcode resident pipeline
jcwal1516 Jun 21, 2026
c104c92
Add Metal encode deinterleave stage
jcwal1516 Jun 21, 2026
fb87b2f
Add Metal encode forward ICT stage
jcwal1516 Jun 21, 2026
2ee7716
Add Metal encode subband quantization stage
jcwal1516 Jun 22, 2026
4e29a88
Gate Metal encode Auto routing with benchmarks
jcwal1516 Jun 22, 2026
4cf6981
Document measured GPU routing policy
jcwal1516 Jun 22, 2026
44d1bbe
Add cuda-oxide J2K encode stage kernels
jcwal1516 Jun 22, 2026
7a44206
Document cuda-oxide J2K encode controls
jcwal1516 Jun 22, 2026
2416196
Add cuda-oxide J2K decode store kernels
jcwal1516 Jun 22, 2026
d8a9036
Add cuda-oxide J2K dequantize kernels
jcwal1516 Jun 22, 2026
2eeb3cc
Merge pull request #33 from frames-sg/impl/cuda-oxide-j2k-encode-stages
jcwal1516 Jun 22, 2026
a655e1a
Merge pull request #34 from frames-sg/impl/cuda-oxide-j2k-decode-store
jcwal1516 Jun 22, 2026
7a69c13
Merge pull request #35 from frames-sg/impl/cuda-oxide-j2k-dequantize
jcwal1516 Jun 22, 2026
553317d
Add cuda-oxide J2K IDWT kernels
jcwal1516 Jun 22, 2026
869bc33
Merge pull request #36 from frames-sg/impl/cuda-oxide-j2k-idwt
jcwal1516 Jun 22, 2026
58edd7d
Add cuda-oxide cooperative J2K IDWT kernels
jcwal1516 Jun 22, 2026
518c3b2
Merge pull request #37 from frames-sg/impl/cuda-oxide-j2k-idwt-coop
jcwal1516 Jun 22, 2026
2cebfbf
Add cuda-oxide reversible transcode kernels
jcwal1516 Jun 22, 2026
dfda10a
Merge pull request #38 from frames-sg/impl/cuda-oxide-transcode-kernels
jcwal1516 Jun 22, 2026
259e520
Add cuda-oxide single-item DWT97 transcode kernels
jcwal1516 Jun 22, 2026
4b32b8b
Merge pull request #39 from frames-sg/impl/cuda-oxide-transcode-dwt97
jcwal1516 Jun 22, 2026
4406361
Add cuda-oxide batched DWT97 transcode kernels
jcwal1516 Jun 22, 2026
4f684cc
Merge pull request #40 from frames-sg/impl/cuda-oxide-transcode-dwt97…
jcwal1516 Jun 22, 2026
6cf6ba8
Add cuda-oxide HTJ2K compact kernel
jcwal1516 Jun 22, 2026
ddcc683
Merge pull request #41 from frames-sg/impl/cuda-oxide-htj2k-compact
jcwal1516 Jun 22, 2026
8703eea
Add cuda-oxide HTJ2K packetization
jcwal1516 Jun 22, 2026
b5beb35
Merge pull request #42 from frames-sg/impl/cuda-oxide-htj2k-packetize
jcwal1516 Jun 22, 2026
03b294e
Update checkout action for Node 24
jcwal1516 Jun 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
11 changes: 11 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# GPU and accelerator surfaces require maintainer review.
.github/CODEOWNERS @frames-sg/j2k-maintainers
.github/workflows/gpu-validation.yml @frames-sg/j2k-maintainers
crates/j2k-cuda-runtime/ @frames-sg/j2k-maintainers
crates/j2k-jpeg-cuda/ @frames-sg/j2k-maintainers
crates/j2k-cuda/ @frames-sg/j2k-maintainers
crates/j2k-transcode-cuda/ @frames-sg/j2k-maintainers
crates/j2k-metal-support/ @frames-sg/j2k-maintainers
crates/j2k-jpeg-metal/ @frames-sg/j2k-maintainers
crates/j2k-metal/ @frames-sg/j2k-maintainers
crates/j2k-transcode-metal/ @frames-sg/j2k-maintainers
285 changes: 250 additions & 35 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,11 @@ on:
push:
branches: [main]
pull_request:
schedule:
- cron: "17 8 * * *"

permissions:
contents: read

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
Expand All @@ -15,34 +20,185 @@ env:
RUSTDOCFLAGS: "-D warnings"

jobs:
gpu-path-policy:
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
pull-requests: read
steps:
- name: Non-PR events do not require GPU path policy
if: ${{ github.event_name != 'pull_request' }}
run: echo "GPU path policy only applies to pull requests."
- name: Require GPU validation for GPU path changes
if: ${{ github.event_name == 'pull_request' }}
env:
GH_TOKEN: ${{ github.token }}
GITHUB_API_URL: ${{ github.api_url }}
HEAD_SHA: ${{ github.event.pull_request.head.sha }}
PR_NUMBER: ${{ github.event.pull_request.number }}
REPOSITORY: ${{ github.repository }}
run: |
python3 <<'PY'
import json
import os
import sys
import urllib.parse
import urllib.request

api_url = os.environ["GITHUB_API_URL"].rstrip("/")
repo = os.environ["REPOSITORY"]
token = os.environ["GH_TOKEN"]
pr_number = os.environ["PR_NUMBER"]
head_sha = os.environ["HEAD_SHA"]

gpu_prefixes = (
"crates/j2k-cuda-runtime/",
"crates/j2k-jpeg-cuda/",
"crates/j2k-cuda/",
"crates/j2k-transcode-cuda/",
"crates/j2k-metal-support/",
"crates/j2k-jpeg-metal/",
"crates/j2k-metal/",
"crates/j2k-transcode-metal/",
)
gpu_exact_paths = {
".github/CODEOWNERS",
".github/workflows/gpu-validation.yml",
}

def get_json(path):
request = urllib.request.Request(
f"{api_url}/repos/{repo}{path}",
headers={
"Accept": "application/vnd.github+json",
"Authorization": f"Bearer {token}",
"X-GitHub-Api-Version": "2022-11-28",
},
)
with urllib.request.urlopen(request, timeout=30) as response:
return json.load(response)

changed_files = []
page = 1
while True:
files = get_json(f"/pulls/{pr_number}/files?per_page=100&page={page}")
changed_files.extend(item["filename"] for item in files)
if len(files) < 100:
break
page += 1

gpu_changes = [
path
for path in changed_files
if path in gpu_exact_paths or path.startswith(gpu_prefixes)
]
if not gpu_changes:
print("No GPU path changes detected.")
sys.exit(0)

encoded_sha = urllib.parse.quote(head_sha, safe="")
runs = get_json(
f"/actions/workflows/gpu-validation.yml/runs?head_sha={encoded_sha}&per_page=50"
).get("workflow_runs", [])
for run in runs:
if run.get("head_sha") == head_sha and run.get("conclusion") == "success":
print(
"GPU path changes detected and gpu-validation.yml succeeded "
f"for head SHA {head_sha}."
)
sys.exit(0)

print("GPU path changes require a successful gpu-validation.yml run.")
print(f"Head SHA: {head_sha}")
print("Changed GPU paths:")
for path in gpu_changes:
print(f" - {path}")
sys.exit(1)
PY

fmt:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with: { components: rustfmt }
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd
- uses: dtolnay/rust-toolchain@3c5f7ea28cd621ae0bf5283f0e981fb97b8a7af9
with:
toolchain: "1.96"
components: rustfmt
- run: cargo xtask fmt

clippy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with: { components: clippy }
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd
- uses: dtolnay/rust-toolchain@3c5f7ea28cd621ae0bf5283f0e981fb97b8a7af9
with:
toolchain: stable
components: clippy
- run: cargo xtask clippy

semver:
# Published Metal baselines include macOS-gated public API and must be
# rustdoc-built on macOS for cargo-semver-checks.
runs-on: macos-latest
steps:
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd
with:
fetch-depth: 0
- uses: dtolnay/rust-toolchain@3c5f7ea28cd621ae0bf5283f0e981fb97b8a7af9
with:
toolchain: "1.96"
- run: cargo install cargo-semver-checks --version 0.48.0 --locked
- run: cargo xtask semver

docs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd
- uses: dtolnay/rust-toolchain@3c5f7ea28cd621ae0bf5283f0e981fb97b8a7af9
with:
toolchain: stable
- run: cargo xtask doc

stable-api:
runs-on: macos-latest
steps:
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd
- uses: dtolnay/rust-toolchain@3c5f7ea28cd621ae0bf5283f0e981fb97b8a7af9
with:
toolchain: stable
- uses: dtolnay/rust-toolchain@3c5f7ea28cd621ae0bf5283f0e981fb97b8a7af9
with:
toolchain: nightly
- uses: taiki-e/install-action@7a79fe8c3a13344501c80d99cae481c1c9085912
with:
tool: cargo-public-api@0.52.0
- run: cargo public-api --version || cargo install cargo-public-api --version 0.52.0 --locked
- run: cargo xtask stable-api

release-integrity:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd
- uses: dtolnay/rust-toolchain@3c5f7ea28cd621ae0bf5283f0e981fb97b8a7af9
with:
toolchain: stable
- run: cargo xtask release-integrity

unsafe-audit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd
- uses: dtolnay/rust-toolchain@3c5f7ea28cd621ae0bf5283f0e981fb97b8a7af9
with:
toolchain: stable
- run: cargo xtask unsafe-audit

typos:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: crate-ci/typos@v1
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd
- uses: crate-ci/typos@d80b8e26878e372a041833cd67163dbdb6a4336e

test:
strategy:
Expand All @@ -51,15 +207,15 @@ jobs:
include:
- { os: ubuntu-latest, rust: stable, arch: x86_64 }
- { os: ubuntu-latest, rust: beta, arch: x86_64 }
- { os: ubuntu-latest, rust: "1.94", arch: x86_64 }
- { os: ubuntu-latest, rust: "1.96", arch: x86_64 }
- { os: ubuntu-24.04-arm, rust: stable, arch: aarch64 }
- { os: ubuntu-24.04-arm, rust: "1.94", arch: aarch64 }
- { os: ubuntu-24.04-arm, rust: "1.96", arch: aarch64 }
- { os: macos-latest, rust: stable, arch: aarch64 }
- { os: macos-latest, rust: "1.94", arch: aarch64 }
- { os: macos-latest, rust: "1.96", arch: aarch64 }
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@master
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd
- uses: dtolnay/rust-toolchain@3c5f7ea28cd621ae0bf5283f0e981fb97b8a7af9
with:
toolchain: ${{ matrix.rust }}
- run: cargo xtask test
Expand All @@ -71,63 +227,122 @@ jobs:
os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd
- uses: dtolnay/rust-toolchain@3c5f7ea28cd621ae0bf5283f0e981fb97b8a7af9
with:
toolchain: stable
- run: cargo xtask release-cpu

release-metal:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd
- uses: dtolnay/rust-toolchain@3c5f7ea28cd621ae0bf5283f0e981fb97b8a7af9
with:
toolchain: stable
- run: cargo xtask release-metal

no-std:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd
- uses: dtolnay/rust-toolchain@3c5f7ea28cd621ae0bf5283f0e981fb97b8a7af9
with:
toolchain: stable
- run: cargo xtask no-std

miri:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd
- uses: dtolnay/rust-toolchain@3c5f7ea28cd621ae0bf5283f0e981fb97b8a7af9
with:
toolchain: nightly
components: miri
- run: cargo xtask miri

bench-build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd
- uses: dtolnay/rust-toolchain@3c5f7ea28cd621ae0bf5283f0e981fb97b8a7af9
with:
toolchain: stable
- run: cargo xtask bench-build

fuzz-build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd
- uses: dtolnay/rust-toolchain@3c5f7ea28cd621ae0bf5283f0e981fb97b8a7af9
with:
toolchain: stable
- run: cargo xtask fuzz-build

fuzz-run:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd
- uses: dtolnay/rust-toolchain@3c5f7ea28cd621ae0bf5283f0e981fb97b8a7af9
with:
toolchain: nightly
- uses: taiki-e/install-action@7a79fe8c3a13344501c80d99cae481c1c9085912
with:
tool: cargo-fuzz
- run: cargo xtask fuzz-run
env:
J2K_FUZZ_RUNS: "512"
J2K_FUZZ_MAX_TOTAL_TIME_SECONDS: "60"

fuzz-run-long:
if: ${{ github.event_name == 'schedule' }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd
- uses: dtolnay/rust-toolchain@3c5f7ea28cd621ae0bf5283f0e981fb97b8a7af9
with:
toolchain: nightly
- uses: taiki-e/install-action@7a79fe8c3a13344501c80d99cae481c1c9085912
with:
tool: cargo-fuzz
- run: cargo xtask fuzz-run
env:
J2K_FUZZ_RUNS: "20000"
J2K_FUZZ_MAX_TOTAL_TIME_SECONDS: "900"

package:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd
- uses: dtolnay/rust-toolchain@3c5f7ea28cd621ae0bf5283f0e981fb97b8a7af9
with:
toolchain: stable
- run: cargo xtask package

coverage:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: taiki-e/install-action@cargo-llvm-cov
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd
- uses: dtolnay/rust-toolchain@3c5f7ea28cd621ae0bf5283f0e981fb97b8a7af9
with:
toolchain: stable
- uses: taiki-e/install-action@91534edaf9fd796a162759d80d49cdff574bff2c
with:
tool: cargo-llvm-cov
- run: cargo xtask coverage
- uses: actions/upload-artifact@v4
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02
if: always()
with:
name: signinum-lcov
name: j2k-lcov
path: lcov.info
if-no-files-found: ignore

deny:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: EmbarkStudios/cargo-deny-action@v2
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd
- uses: dtolnay/rust-toolchain@3c5f7ea28cd621ae0bf5283f0e981fb97b8a7af9
with:
toolchain: stable
- uses: EmbarkStudios/cargo-deny-action@8f84122a46a358a27cb0625d85ad60ab436a1b87
with: { command: check licenses advisories bans sources }
Loading
Loading