|
1 | 1 | # Vulkan Build Verification for PR #79 |
2 | 2 |
|
| 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 | + |
3 | 9 | **Commit verified:** `b788b4af1` — `dflash: enable Qwen3-Coder-Next on Vulkan` |
4 | 10 |
|
5 | | -## Build System |
| 11 | +### Build System |
6 | 12 |
|
7 | 13 | | Component | Detail | |
8 | 14 | |---|---| |
@@ -41,6 +47,71 @@ Vulkan shader features detected: |
41 | 47 | - **Binaries produced:** `llama-server`, `llama-cli`, `llama-bench`, `llama`, `llama-perplexity`, `llama-imatrix`, `llama-quantize`, `llama-llama-bench`, all test binaries |
42 | 48 | - **Working tree:** Clean, nothing to commit |
43 | 49 |
|
44 | | -## Conclusion |
| 50 | +### Conclusion |
45 | 51 |
|
46 | 52 | 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