Summary
The C reference supports job-based parallel compression via ZSTDMT — splitting input into jobs processed by worker threads. This is essential for large file compression and saturating modern multi-core CPUs.
C reference implementation (zstdmt_compress.c)
Architecture
- Job-based: Input split into chunks (min 512KB per job)
- Worker thread pool: Generic pool from
pool.c/h
- Overlap: Sequential jobs share context via overlap region
- Buffer pool: Pre-allocated reusable buffers with mutex
Key parameters
ZSTD_c_nbWorkers: 1-256 threads (0 = single-threaded)
ZSTD_c_jobSize: Per-thread workload (512KB-1GB)
ZSTD_c_overlapLog: Overlap fraction between jobs
Challenges
- Job overlap ensures cross-boundary matches are found
- Results must be assembled in order
- Non-deterministic (scheduling-dependent) unless overlap=full
- Memory scales with thread count
What needs to be implemented
- Job splitting — divide input into chunks with overlap regions
- Thread pool — worker thread management (could use
rayon or custom)
- Per-job compression — each job independently compresses its chunk
- Ordered assembly — collect job outputs in original order
- Overlap management — each job gets tail of previous job as prefix context
- Buffer pool — reuse allocated buffers across jobs
- Parameter API — nbWorkers, jobSize, overlapLog
Acceptance criteria
Dependencies
Time estimate
5d
Blocked by
Summary
The C reference supports job-based parallel compression via
ZSTDMT— splitting input into jobs processed by worker threads. This is essential for large file compression and saturating modern multi-core CPUs.C reference implementation (zstdmt_compress.c)
Architecture
pool.c/hKey parameters
ZSTD_c_nbWorkers: 1-256 threads (0 = single-threaded)ZSTD_c_jobSize: Per-thread workload (512KB-1GB)ZSTD_c_overlapLog: Overlap fraction between jobsChallenges
What needs to be implemented
rayonor custom)Acceptance criteria
Dependencies
Time estimate
5d
Blocked by