The NPU is a dead end for this payload (report/tts-npu-spike-verdict-2026-10-19.md); the iGPU is the accelerator that exists on this box today. This flips frank-tts-engine from the CPU build of qwentts.cpp to ggml's Vulkan backend on the gfx1151 — sharing the card with frank-dragoon.
Four files, one shape
Containerfile.engine — -DGGML_VULKAN=ON, plus the three packages the door needs to configure (libvulkan-dev, glslc — Ubuntu's glslang-tools ships glslangValidator and NOT glslc, and find_package(Vulkan COMPONENTS glslc REQUIRED) fails without it — and spirv-headers), and libvulkan1 + mesa-vulkan-drivers (the RADV ICD) at runtime. No NVIDIA ICD on purpose: one Vulkan device in the enumeration is what makes the nameVulkan0 safe to write down.
tts-engine-start.sh — QWENTTS_DEVICE → --device, default Vulkan0. Set-but-empty passes no flag: that is the CPU rollback, and it is why the default is an -v test rather than := — := also fires on an empty value and would silently undo the rollback.
quadlet — AddDevice=/dev/dri + GroupAdd=keep-groups; the render node is deliberately not named because this host is hybrid (renderD128 = NVIDIA, renderD129 = amdgpu). /dev/kfd stays absent.
scripts/frank-tts-engine.env — QWENTTS_DEVICE=Vulkan0 and the device law in its header.
Evidence
Configure in the digest-pinned base on Dankclaw: Found Vulkan: /usr/lib/x86_64-linux-gnu/libvulkan.so (found version "1.3.275") found components: glslc → Including Vulkan backend.
Gate 1 (RADV GFX1151 visible to a rootless container off this same base with --device /dev/dri --group-add keep-groups) is recorded in the verdict report.
./tests/run.sh: 451/451. The two CPU-only assertions now assert the Vulkan shape; a new test pins the rollback (empty device ⇒ no --device in argv).
Rollback: QWENTTS_DEVICE= (empty) in the env file, redeploy the service. No rebuild, nothing else on the box restarts.
Not in this PR: the deployment itself, and gate 2 (dragoon's TTFT with a synthesis in flight) — those run after merge, on the live pair.
Built in worktree /home/blank/.omp/wt/wt-tts-vulkan.
The NPU is a dead end for this payload (`report/tts-npu-spike-verdict-2026-10-19.md`); the iGPU is the accelerator that exists on this box today. This flips `frank-tts-engine` from the CPU build of qwentts.cpp to ggml's **Vulkan** backend on the gfx1151 — sharing the card with `frank-dragoon`.
**Four files, one shape**
- `Containerfile.engine` — `-DGGML_VULKAN=ON`, plus the three packages the door needs to configure (`libvulkan-dev`, **`glslc`** — Ubuntu's `glslang-tools` ships `glslangValidator` and NOT `glslc`, and `find_package(Vulkan COMPONENTS glslc REQUIRED)` fails without it — and `spirv-headers`), and `libvulkan1` + `mesa-vulkan-drivers` (the RADV ICD) at runtime. No NVIDIA ICD on purpose: one Vulkan device in the enumeration is what makes the *name* `Vulkan0` safe to write down.
- `tts-engine-start.sh` — `QWENTTS_DEVICE` → `--device`, default `Vulkan0`. **Set-but-empty passes no flag**: that is the CPU rollback, and it is why the default is an `-v` test rather than `:=` — `:=` also fires on an empty value and would silently undo the rollback.
- quadlet — `AddDevice=/dev/dri` + `GroupAdd=keep-groups`; the render node is deliberately not named because this host is hybrid (`renderD128` = NVIDIA, `renderD129` = amdgpu). `/dev/kfd` stays absent.
- `scripts/frank-tts-engine.env` — `QWENTTS_DEVICE=Vulkan0` and the device law in its header.
**Evidence**
- Configure in the digest-pinned base on Dankclaw: `Found Vulkan: /usr/lib/x86_64-linux-gnu/libvulkan.so (found version "1.3.275") found components: glslc` → `Including Vulkan backend`.
- Gate 1 (RADV GFX1151 visible to a rootless container off this same base with `--device /dev/dri --group-add keep-groups`) is recorded in the verdict report.
- `./tests/run.sh`: **451/451**. The two CPU-only assertions now assert the Vulkan shape; a new test pins the rollback (empty device ⇒ no `--device` in argv).
**Rollback**: `QWENTTS_DEVICE=` (empty) in the env file, redeploy the service. No rebuild, nothing else on the box restarts.
**Not in this PR**: the deployment itself, and gate 2 (dragoon's TTFT with a synthesis in flight) — those run after merge, on the live pair.
Built in worktree `/home/blank/.omp/wt/wt-tts-vulkan`.
---
cwd: /home/blank/.omp/wt/wt-20261019-020309-6d1fc1f · session: 01a15366-7601-7175-bb69-c62186c3f8b5
The NPU path is a dead end for this payload (verdict:
report/tts-npu-spike-verdict-2026-10-19.md); the iGPU is the accelerator that
exists on this box today, and it is already shared with frank-dragoon.
- Containerfile.engine: -DGGML_VULKAN=ON, plus the three packages the door
needs to configure — libvulkan-dev, spirv-headers, and glslc, which Ubuntu's
glslang-tools does NOT ship (find_package(Vulkan COMPONENTS glslc REQUIRED)
fails without it) — and libvulkan1 + mesa-vulkan-drivers (the RADV ICD) at
runtime. No NVIDIA ICD on purpose: one Vulkan device in the enumeration is
what makes the NAME Vulkan0 safe to write down.
- tts-engine-start.sh: QWENTTS_DEVICE -> --device, default Vulkan0. A value
that is set but EMPTY passes no flag at all, which is the CPU rollback; that
is why the default is written as an -v test and not with :=, because := also
fires on an empty value and would silently undo the rollback.
- quadlet: AddDevice=/dev/dri + GroupAdd=keep-groups (a rootless container that
drops its supplementary groups enumerates no render device). The node is not
named: this host is hybrid, renderD128 is the NVIDIA card and renderD129 the
amdgpu iGPU.
- env: QWENTTS_DEVICE=Vulkan0 plus the device law in the header, including the
rollback line.
- tests: the two CPU-only assertions now assert the Vulkan shape, and a new one
pins the rollback (empty device => no --device in argv). 451/451 green.
Measured before writing any of it: the configure in the digest-pinned base
answers "Found Vulkan: ... found components: glslc" and "Including Vulkan
backend"; gate 1 (RADV GFX1151 visible to a rootless container off this base)
is recorded in the verdict report.
dank
merged commit 6248f02ca2 into main2026-10-19 14:27:12 -07:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
The NPU is a dead end for this payload (
report/tts-npu-spike-verdict-2026-10-19.md); the iGPU is the accelerator that exists on this box today. This flipsfrank-tts-enginefrom the CPU build of qwentts.cpp to ggml's Vulkan backend on the gfx1151 — sharing the card withfrank-dragoon.Four files, one shape
Containerfile.engine—-DGGML_VULKAN=ON, plus the three packages the door needs to configure (libvulkan-dev,glslc— Ubuntu'sglslang-toolsshipsglslangValidatorand NOTglslc, andfind_package(Vulkan COMPONENTS glslc REQUIRED)fails without it — andspirv-headers), andlibvulkan1+mesa-vulkan-drivers(the RADV ICD) at runtime. No NVIDIA ICD on purpose: one Vulkan device in the enumeration is what makes the nameVulkan0safe to write down.tts-engine-start.sh—QWENTTS_DEVICE→--device, defaultVulkan0. Set-but-empty passes no flag: that is the CPU rollback, and it is why the default is an-vtest rather than:=—:=also fires on an empty value and would silently undo the rollback.AddDevice=/dev/dri+GroupAdd=keep-groups; the render node is deliberately not named because this host is hybrid (renderD128= NVIDIA,renderD129= amdgpu)./dev/kfdstays absent.scripts/frank-tts-engine.env—QWENTTS_DEVICE=Vulkan0and the device law in its header.Evidence
Found Vulkan: /usr/lib/x86_64-linux-gnu/libvulkan.so (found version "1.3.275") found components: glslc→Including Vulkan backend.--device /dev/dri --group-add keep-groups) is recorded in the verdict report../tests/run.sh: 451/451. The two CPU-only assertions now assert the Vulkan shape; a new test pins the rollback (empty device ⇒ no--devicein argv).Rollback:
QWENTTS_DEVICE=(empty) in the env file, redeploy the service. No rebuild, nothing else on the box restarts.Not in this PR: the deployment itself, and gate 2 (dragoon's TTFT with a synthesis in flight) — those run after merge, on the live pair.
Built in worktree
/home/blank/.omp/wt/wt-tts-vulkan.cwd: /home/blank/.omp/wt/wt-20261019-020309-6d1fc1f · session: 01a15366-7601-7175-bb69-c62186c3f8b5