Bringing Up the RK3576 NPU on Mainline Linux: A Byte-Exact Single-Task Path and a Falsification-First Negative Result on Chained-Task Compute
Published July 2026 | Version v1
Preprint Open
Bringing Up the RK3576 NPU on Mainline Linux: A Byte-Exact Single-Task Path and a Falsification-First Negative Result on Chained-Task Compute
Authors/Creators
- Hu, Jiaxing1
- 1. Independent
Show affiliations
Description
The Rockchip RK3576 ships a 6 TOPS NPU whose only fully open software stack is the mainline drivers/accel/rocket driver plus the Mesa Teflon delegate, byte-perfect on the sibling RK3588, yet all-zero on the RK3576. Positive: after root-causing an int8 requantization error (rescale multiplier emitted at Q14 where the hardware consumes Q4, a 2^10 over-scale saturating every output), a single int8 convolution is byte-exact against a CPU reference. Negative (the main contribution): any job with more than one task computes exactly one, the first after the NPU power domain resumes; each later task engages its units, DMAs real input, and advances the sequencer, yet its multiply-accumulate never commits (measured for int8; whether fp16 escapes the wall is argued from mechanism, not yet measured). Under a falsification-first rule we drive the chain through three dispatch mechanisms and refute every software-observable cause: dispatch grammar, the full register write set, config geometry, buffer/cache/IOMMU state, clock/power, and firmware. The vendor's closed stack, on the same kernel, chains dozens of tasks per session, matching every write we make. Our best-supported localization is the on-chip CBUF -> CSC -> CMAC consume-arm: a per-power-session resource with no register footprint, below what black-box probing can reach. An independent RK3568 bring-up reaches a matching engaged-but-empty wall; an open-stack RK3588 effort runs multi-op fp16 matmul and LLM prefill through the same driver, cross-confirming five findings. We publish the full ledger, two upstreamable bugs, and the conditions that would reopen it.
Files
###
rk3576-npu.pdf
###
Files (503.7 kB)
| Name | Size | Download all | | -------------------------------------------------------------------------------------------------------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | rk3576-npu.pdf md5:994a88f6da029c14270c0e799e61b411 | 430.4 kB | Preview Download | | rk3576-npu.tex md5:cb6c814fc4ec387cb4703de820249345 | 73.3 kB | Download |
Additional details
Software: https://github.com/gahingwoo/linux-rk3576-npu (URL) Other: https://gahingwoo.github.io/posts/rk3576-npu-mainline/ (URL)
Jump up


