From 065d796d735b09857b7d61fbe65e860279673b75 Mon Sep 17 00:00:00 2001 From: Frank Date: Mon, 19 Oct 2026 14:12:05 -0700 Subject: [PATCH] =?UTF-8?q?docs(frank-tts):=20renderD128=20is=20the=20NVID?= =?UTF-8?q?IA=20node=20=E2=80=94=20pass=20/dev/dri,=20not=20a=20guessed=20?= =?UTF-8?q?number?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The trial's quadlet line said AddDevice=/dev/dri/renderD128. Resolved the nodes by driver instead of assuming: on this hybrid host renderD128 -> nvidia and renderD129 -> amdgpu, so the guess pointed the engine at the wrong card. Also records the gate-1 command that works (vulkaninfo --text; --batch prints help and exits 1) and the probe script path. --- report/tts-npu-spike-verdict-2026-10-19.md | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/report/tts-npu-spike-verdict-2026-10-19.md b/report/tts-npu-spike-verdict-2026-10-19.md index 8093397..5646585 100644 --- a/report/tts-npu-spike-verdict-2026-10-19.md +++ b/report/tts-npu-spike-verdict-2026-10-19.md @@ -150,16 +150,20 @@ TTS engine today|3.84 GiB RSS, CPU|its device-resident replacement lands in that explicitly, so this is a one-word diff. 3. Runtime stage: add `mesa-vulkan-drivers`. Without a Vulkan **ICD inside the image** the device node buys nothing — there is no `radeon_icd.json` in the container today. -4. `frank-tts-engine.container`: `AddDevice=/dev/dri/renderD128` + `GroupAdd=keep-groups`. +4. `frank-tts-engine.container`: `AddDevice=/dev/dri` + `GroupAdd=keep-groups` — **not** + `renderD128`. On this hybrid box that node is the NVIDIA card; the iGPU is + `renderD129` (`readlink -f /sys/class/drm/renderD129/device/driver` → `amdgpu`). 5. Engine argv: `--device Vulkan0` — qwentts.cpp's tools take `--device ` at the pinned commit. -Gate 1 is one command: `vulkan-tools` in a throwaway container off the same base with -`/dev/dri` passed through, then `vulkaninfo` and read the `VkPhysicalDeviceMemoryProperties` -heap sizes — no model, no load, no compute. Every package involved has a candidate on the -host's apt (`vulkan-tools` 1.4.341, `libvulkan-dev` 1.4.341, `glslang-dev`/`glslang-tools` -16.2.0); the build stage runs on the digest-pinned Ubuntu 24.04 base, whose versions are -older but present. +Gate 1 recipe, already run and **PASSED**: `mesa-vulkan-drivers` + `vulkan-tools` in a +throwaway container off the same base, `--device /dev/dri`, then `vulkaninfo --text` and read +the `VkPhysicalDeviceMemoryProperties` heap sizes — no model, no load, no compute. The probe +trap: `vulkaninfo --batch` is not a flag in Ubuntu 24.04's `vulkan-tools` — it prints the help +page and exits 1, which reads like a driver failure. Every package involved has a candidate on +the host's apt (`vulkan-tools` 1.4.341, `libvulkan-dev` 1.4.341, `glslang-dev`/`glslang-tools` +16.2.0); the build stage runs on the digest-pinned Ubuntu 24.04 base, whose versions are older +but present. Script: `/home/dank/spikes/npu-tts/vk_probe.sh` on Dankclaw. Constraints that do not relax for a co-tenant: `/dev/dri` passthrough needs the ComfyUI pattern (`AddDevice` + `GroupAdd=keep-groups` + the world-writable udev rule) because