Question about LZ77 decode dependencies and parallelization (learning)
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 25/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Da chiarire
- Stato di attività
- Tranquilla
- Stack tecnologico
- c
- Ambito
- performance
Direzione di ricerca
L’issue non indica file sorgente, test o punti di ingresso. Inizia esaminando il contesto globale LZ77 descritto, gli offset dei blocchi e le questioni relative alla decodifica parallela; il lavoro sarebbe completato con una spiegazione documentata del modello delle dipendenze e delle insidie, supportata dal codice promesso o da dettagli aggiuntivi.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Hi,
I’m not very experienced with compression, so sorry if this is a naive question.
I’ve been experimenting with an LZ77-like approach and got a result that I don’t fully understand.
I managed to get:
- bit-perfect decoding
- ~10 GB/s decode on a ~1GB file
- while still using a global compression context
The way I structured it is roughly:
- compression is global (matches can reference earlier data across the whole input)
- but I split the output into blocks
- and precompute offsets so each block knows where its literals / offsets / lengths / commands are
So blocks are not independently compressed, but I try to make them independently decodable.
This seems to allow parallel decode, which is where the speed comes from.
But I feel like I’m probably misunderstanding something fundamental, because I don’t see this pattern used much.
My questions:
- Is there a fundamental reason why LZ77 decode is usually strictly sequential?
- Are there known designs that separate compression context from decode dependency like this?
- What are the main pitfalls of this approach in real implementations?
I’m not claiming this is new — I’m just trying to understand what I might be missing.
Happy to share code or more details if that helps.
Thanks
- Lingua principale
- C
- Stelle
- 28.1k
- Fork
- 2.7k
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di facebook/zstd
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
-
cmake: AddZstdCompilationFlags still depends on C++ after #4357Forse già presa @Tyagiquamar l’ha presa 29 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
-
ZSTD_compressSequencesAndLiterals() does not enforce its documented litCapacity >= litSize + 8 contract — the implemented check is 8 bytes weaker than the API documentation, its own error message, and the introducing commitForse già presa @KSAGlory l’ha presa 49 giorni fa. Aperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
-
seekable_format warning with -DNDEBUG: potential uninitialised local variable newOffset usedForse già presa @i098 l’ha presa 18 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
Tutte le issue di facebook/zstd
Issue simili
-
GPU-UNLOCK RTX 4070 (2786) Gigabyte 1458:416C: cold boot AND warm reboot unlock, Ubuntu 26.04Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
JustAResearcher/gpu-unlock-ada#124 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
-
inflate: total_in uses plain += on c_ulong (32-bit on Windows), panics in debug for streams > 4 GiBAperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 85/100
trifectatechfoundation/zlib-rs#570 · 1 commento ·
-
vim.filetype.match() prefixes a URL buffer name with the cwd before passing it to filetype functionsAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 73/100
I maintainer di solito rispondono entro 1 giorno
-
compilation errorAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
COVESA/dlt-daemon#925 · 1 reazione ·