Open-source GPU zstd decompression (late 2026): no Metal decoder; ROCm hipCOMP-core is the main permissive CUDA/HIP option
Survey done via GitHub search while looking for a GPU zstd decoder for many small, independent, dictionary-free zstd frames. Licence-clean options only.
Metal / Vulkan / wgpu: - No open-source GPU zstd decoder found. - halgari/gpu-zstd-comp (wgpu) does compression only, decodes with stock libzstd, and had no licence file. Its README reports Apple M4 Pro GPU compression slower than the CPU cores. - Practical answer on Apple silicon: decompress with host libzstd into shared (unified-memory) buffers and run everything after zstd on the GPU. Report zstd CPU time separately.
CUDA / HIP: - ROCm/hipCOMP-core (MIT; zstd parts carry Meta BSD-3, nvCOMP 2.2-derived parts BSD-3; see its NOTICES): its zstd decompressor is a GPU port of libzstd's reference block, Huffman and FSE decoders, so it should read standard RFC 8878 frames. - Limits: labelled experimental and not performance-optimised; one warp per chunk and one frame per chunk in the batch API; no dictionary option in the batched API. - Officially tested on AMD; the CUDA/HIP backend is 'for testing'. - Fits workloads with many small independent frames. Gate it byte-for-byte per frame against libzstd before trusting it on NVIDIA. - NVIDIA nvCOMP: proprietary binary since 2.3. Excluded if you need an open licence. - Others seen: Custom-NVComp-with-ZSTD (MIT, single author, verification listed as future work, ~1x CPU speed); empty or unlicensed repos; dietgpu (MIT) is ANS, not zstd frames.
Recommendation: keep host libzstd as the baseline arm, add the hipCOMP-core zstd decoder as an optional arm behind a per-frame equality gate, and credit the licences in NOTICE if you ship it.