Skip to content

Commit 7689a40

Browse files
committed
ci: add Vulkan build verification on Debian 11 / RTX 3090 (PR #79)
Full Vulkan build verified on a second host after supplying glslc and Vulkan-Headers 1.4.309 locally (Debian 11 ships neither): - Debian 11 (bullseye), Linux 5.10.0-43-amd64 - AMD Ryzen 9 5950X (32 threads), 62 GiB RAM - NVIDIA GeForce RTX 3090 (host) - GCC 10.2.1, CMake 3.31.11, Ninja 1.10.1 - glslc: shaderc v2023.2 (built from source -> ~/.local/bin) - Vulkan headers 1.4.309 (KhronosGroup Vulkan-Headers -> ~/.local) - GGML_VULKAN=ON, GGML_NATIVE=ON, Release, -j32 - Full build rc=0, all binaries produced, test-dflash-plumbing rc=0 - 0 errors; only benign -Wdouble-promotion/-Wmissing-field-initializers warnings No PR source changes required; host-side additions only.
1 parent 4efe543 commit 7689a40

1 file changed

Lines changed: 73 additions & 2 deletions

File tree

VULKAN_BUILD_VERIFICATION.md

Lines changed: 73 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,14 @@
11
# Vulkan Build Verification for PR #79
22

3+
Verifies that PR #79 (`dflash: enable Qwen3-Coder-Next on Vulkan`, commit `b788b4af1`) builds cleanly for the Vulkan backend on two independent host environments.
4+
5+
---
6+
7+
## Verification 1 — AMD Strix Halo (Debian 13 / Mesa RADV)
8+
39
**Commit verified:** `b788b4af1``dflash: enable Qwen3-Coder-Next on Vulkan`
410

5-
## Build System
11+
### Build System
612

713
| Component | Detail |
814
|---|---|
@@ -41,6 +47,71 @@ Vulkan shader features detected:
4147
- **Binaries produced:** `llama-server`, `llama-cli`, `llama-bench`, `llama`, `llama-perplexity`, `llama-imatrix`, `llama-quantize`, `llama-llama-bench`, all test binaries
4248
- **Working tree:** Clean, nothing to commit
4349

44-
## Conclusion
50+
### Conclusion
4551

4652
PR #79 builds cleanly for Vulkan on native AMD hardware (Strix Halo / Radeon 8060S) with Mesa RADV driver. No compilation errors or warnings.
53+
54+
---
55+
56+
## Verification 2 — NVIDIA RTX 3090 host (Debian 11 / NVIDIA Vulkan ICD)
57+
58+
**Commit verified:** `b788b4af1``dflash: enable Qwen3-Coder-Next on Vulkan` (on the updated PR head `4efe54303`)
59+
60+
### Build System
61+
62+
| Component | Detail |
63+
|---|---|
64+
| **OS** | Debian GNU/Linux 11 (bullseye), Linux 5.10.0-43-amd64 |
65+
| **CPU** | AMD Ryzen 9 5950X 16-Core (32 threads, `-march=native`) |
66+
| **GPU** | NVIDIA GeForce RTX 3090 (GA102) — host for the build |
67+
| **RAM** | 62 GiB |
68+
| **CMake** | 3.31.11 |
69+
| **Compiler** | GCC 10.2.1 (`g++ (Debian 10.2.1-6)`) |
70+
| **Make/Ninja** | Ninja 1.10.1, 32 parallel jobs |
71+
| **glslc** | shaderc v2023.2 (built from source, installed to `~/.local/bin/glslc`; not packaged in Debian 11) |
72+
| **Vulkan headers** | 1.4.309 (KhronosGroup `Vulkan-Headers` v1.4.309, header-only, installed to `~/.local`; Debian 11 ships only 1.2.162 which is too old for current `ggml-vulkan.cpp`) |
73+
| **Vulkan loader** | libvulkan 1.2.162 (system `libvulkan-dev`) — sufficient to link; newer symbols are resolved at runtime via the loader/ICD |
74+
75+
### Setup notes for Debian 11
76+
77+
Debian 11 does not ship `glslc`/`shaderc` and its Vulkan headers (1.2.162) predate symbols the current Vulkan backend requires (`vk::PhysicalDeviceMaintenance4Properties`, `vk::DriverId::eMesaTurnip`/`eMesaDozen`, `layer_setting_info`). Two host-side additions were needed, neither touching the PR source:
78+
79+
1. Build and install `glslc` from Shaderc `v2023.2` source → `~/.local/bin/glslc`.
80+
2. Install header-only `Vulkan-Headers` v1.4.309 → `~/.local/include/vulkan`.
81+
82+
Then configure with the local prefix so CMake's `FindVulkan` picks up the new headers:
83+
84+
```bash
85+
export CMAKE_PREFIX_PATH="$HOME/.local:$CMAKE_PREFIX_PATH"
86+
cmake -B build_vulkan -DGGML_VULKAN=ON -DGGML_NATIVE=ON -DCMAKE_BUILD_TYPE=Release \
87+
-DVulkan_INCLUDE_DIR="$HOME/.local/include"
88+
cmake --build build_vulkan -j32
89+
```
90+
91+
### CMake Configuration
92+
93+
```
94+
-- Found Vulkan: /usr/lib/x86_64-linux-gnu/libvulkan.so (found version "1.4.309") found components: glslc missing components: glslangValidator
95+
-- Vulkan found
96+
-- GL_KHR_cooperative_matrix not supported by glslc
97+
-- GL_NV_cooperative_matrix2 not supported by glslc
98+
-- GL_EXT_integer_dot_product not supported by glslc
99+
-- GL_EXT_bfloat16 not supported by glslc
100+
-- Including Vulkan backend
101+
```
102+
103+
(Shader feature probes are `not supported` due to the older `glslc` v2023.2 build; this only disables optional cooperative-matrix fast paths and does not affect compilation.)
104+
105+
### Build Result
106+
107+
- **Configure:** Success (rc=0)
108+
- **ggml-vulkan target:** Success (rc=0, 100%)
109+
- **Full build:** Success (rc=0, 100%)
110+
- **Binaries produced:** `llama-server`, `llama-cli`, `llama-bench`, `llama-perplexity`, `test-dflash-plumbing` (plus shared libs `libggml-vulkan.so`, `libllama-server-impl.so`, etc.)
111+
- **DFlash plumbing test:** `test-dflash-plumbing` → rc=0
112+
- **Errors:** 0 (zero `error:` lines in the full build log)
113+
- **Warnings:** only benign — 35× `-Wdouble-promotion`, 1× `-Wmissing-field-initializers` (no `-Werror`)
114+
115+
### Conclusion
116+
117+
PR #79 builds cleanly for Vulkan on a Debian 11 / NVIDIA RTX 3090 host once `glslc` and current Vulkan headers are supplied locally (no PR source changes required). Combined with Verification 1, the Vulkan backend compiles end-to-end on both AMD/Mesa RADV (Debian 13) and NVIDIA (Debian 11) hosts.

0 commit comments

Comments
 (0)