Skip to content

Commit 788aaef

Browse files
committed
Windows GPU jobs: build artifact only (drop ctest on GPU-less runners)
Run 28329190065 (d36d026): the CUDA full-toolkit fix worked — CUDA 13.2 now compiles the entire ggml-cuda backend and the build succeeds. It then failed at ctest: gtest_discover_tests cannot enumerate the CUDA-linked jllama_test.exe on a GPU-less GitHub runner (the binary errors probing for a CUDA device at startup), so CMake registers the failing jllama_test_NOT_BUILT sentinel. Running a GPU-linked unit-test binary on a runner with no GPU is not possible, and the C++ unit suite is CPU-only logic already fully covered by the `C++ Tests` job and the CPU Windows jobs. So the three Windows GPU build jobs now build the artifact only: drop -DBUILD_TESTING and the ctest step from cuda/vulkan/opencl. The jllama.dll artifact (the real deliverable) is unaffected. Docs (CLAUDE.md, TODO.md) updated. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Deqf9xS6jz9t1idytVTaPV
1 parent d36d026 commit 788aaef

3 files changed

Lines changed: 18 additions & 12 deletions

File tree

.github/workflows/publish.yml

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -723,10 +723,12 @@ jobs:
723723
Add-Content -Path $env:GITHUB_PATH -Value "$env:RUNNER_TEMP\sccache\$rel"
724724
- name: Build libraries
725725
shell: cmd
726+
# GPU jobs build the artifact only — no -DBUILD_TESTING / ctest. The C++ unit
727+
# suite is CPU-only and fully covered by the `C++ Tests` job + the CPU Windows
728+
# jobs; a GPU-linked jllama_test.exe cannot be discovered/run on a GPU-less
729+
# GitHub runner (it errors probing for a CUDA device -> ctest *_NOT_BUILT).
726730
run: |
727-
.github\build.bat -G "Ninja Multi-Config" -DGGML_CUDA=ON -DOS_NAME=Windows -DOS_ARCH=x86_64 -DBUILD_TESTING=ON
728-
- name: Run C++ unit tests
729-
run: ctest --test-dir build --output-on-failure
731+
.github\build.bat -G "Ninja Multi-Config" -DGGML_CUDA=ON -DOS_NAME=Windows -DOS_ARCH=x86_64
730732
- name: Upload artifacts
731733
uses: actions/upload-artifact@v7
732734
with:
@@ -771,10 +773,10 @@ jobs:
771773
Add-Content -Path $env:GITHUB_PATH -Value "$env:RUNNER_TEMP\sccache\$rel"
772774
- name: Build libraries
773775
shell: cmd
776+
# Build the artifact only (see the CUDA job's note: GPU-less runner can't run a
777+
# GPU-linked jllama_test; the C++ unit suite is covered by the CPU jobs).
774778
run: |
775-
.github\build.bat -G "Ninja Multi-Config" -DGGML_VULKAN=ON -DOS_NAME=Windows -DOS_ARCH=x86_64 -DBUILD_TESTING=ON
776-
- name: Run C++ unit tests
777-
run: ctest --test-dir build --output-on-failure
779+
.github\build.bat -G "Ninja Multi-Config" -DGGML_VULKAN=ON -DOS_NAME=Windows -DOS_ARCH=x86_64
778780
- name: Upload artifacts
779781
uses: actions/upload-artifact@v7
780782
with:
@@ -814,10 +816,10 @@ jobs:
814816
Add-Content -Path $env:GITHUB_PATH -Value "$env:RUNNER_TEMP\sccache\$rel"
815817
- name: Build libraries
816818
shell: cmd
819+
# Build the artifact only (see the CUDA job's note: GPU-less runner can't run a
820+
# GPU-linked jllama_test; the C++ unit suite is covered by the CPU jobs).
817821
run: |
818-
.github\build_opencl_windows.bat -G "Ninja Multi-Config" -DGGML_OPENCL=ON -DGGML_OPENCL_EMBED_KERNELS=ON -DOS_NAME=Windows -DOS_ARCH=x86_64 -DBUILD_TESTING=ON
819-
- name: Run C++ unit tests
820-
run: ctest --test-dir build --output-on-failure
822+
.github\build_opencl_windows.bat -G "Ninja Multi-Config" -DGGML_OPENCL=ON -DGGML_OPENCL_EMBED_KERNELS=ON -DOS_NAME=Windows -DOS_ARCH=x86_64
821823
- name: Upload artifacts
822824
uses: actions/upload-artifact@v7
823825
with:

CLAUDE.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -188,8 +188,11 @@ model-backed Java suite (`test-java-windows-x86_64` = default/Ninja, `test-java-
188188
installed CUDA 13 Toolkit (`cudart64_13.dll`/`cublas64_13.dll`/`cublasLt64_13.dll` on `PATH`); Vulkan
189189
needs `vulkan-1.dll` (ships with current GPU drivers); OpenCL needs the vendor ICD
190190
(`System32\OpenCL.dll`). Not bundling = no NVIDIA-EULA redistribution obligation. **GitHub-hosted
191-
Windows runners have NO GPU**, so the GPU jobs build + run the C++ unit suite (`ctest`, CPU-only) but
192-
**cannot run model-backed GPU inference** — end-to-end GPU validation is local / self-hosted.
191+
Windows runners have NO GPU**, so the GPU jobs **build the artifact only** (no `-DBUILD_TESTING`/`ctest`)
192+
— a GPU-linked `jllama_test.exe` can't even be enumerated on a GPU-less runner (it errors probing for a
193+
device, so `gtest_discover_tests` registers a failing `*_NOT_BUILT` sentinel). The CPU-only C++ unit
194+
suite is fully covered by the `C++ Tests` job + the CPU Windows jobs; model-backed GPU inference is
195+
local / self-hosted.
193196

194197
Wiring (mirrors the CUDA-Linux / OpenCL-Android classifier pattern):
195198

TODO.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,8 @@ Multi-Config + MSVC.
196196
artifacts `Windows-{arch}-libraries`); `build-windows-x86_64-msvc` / `build-windows-x86-msvc` are
197197
**MSVC** (artifacts `Windows-{arch}-msvc`). `test-java-windows-x86_64` (default/Ninja) and
198198
`test-java-windows-x86_64-msvc` both load the DLL via JNI and run the full model-backed suite.
199-
- **GPU build jobs (x86_64, Ninja, build + `ctest` only — runners have no GPU):**
199+
- **GPU build jobs (x86_64, Ninja, build the artifact only — runners have no GPU, and a
200+
GPU-linked jllama_test can't be enumerated there; C++ suite runs on the CPU jobs):**
200201
`build-windows-x86_64-cuda` (`Jimver/cuda-toolkit@v0.2.35` CUDA `13.2.0` + `-DGGML_CUDA=ON`),
201202
`build-windows-x86_64-vulkan` (`jakoch/install-vulkan-sdk-action` + `-DGGML_VULKAN=ON`),
202203
`build-windows-x86_64-opencl` (`build_opencl_windows.bat` stages the ICD loader + `-DGGML_OPENCL=ON`).

0 commit comments

Comments
 (0)