Cataract: NPU (RKNPU2) and open GPU (panvk/panthor) can't share a kernel #1
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Cataract's core idea — run prefill concurrently on the NPU (RKNPU2) and the open GPU (panvk) — has a kernel-coexistence blocker to solve before a single token flows.
The conflict
6.1.75-npu-portkernel — where themalikbase blob owns the GPU and theRKNPUdriver exposes the NPU (/dev/dri/renderD129).panthorkernel, where the GPU is bound topanthorand the vendormaliblob is absent.These are two different kernels. Today you get NPU xor open-GPU, not both.
Open questions
RKNPUa vendor-only driver? (On panthor we sawcard0/renderD128 -> rockchip-drm,card1/renderD129 -> RKNPUon the vendor kernel; need to confirm what mainline exposes.)rknpukmod be built/loaded against a mainline panthor kernel (out-of-tree), so RKNPU2 + panvk share one kernel?Why it matters
Without coexistence, "NPU + GPU concurrent prefill" collapses to "pick one engine." The GPU champion (this repo, 28 t/s Qwen-3B) and the NPU (42 t/s ornith-9B) each work in isolation on their own kernel; Cataract needs them on the same boot.
Blocks: the Cataract heterogeneous-prefill benchmark.