78c77bf6c8
Two independent defects in the CUDA syntax job, both caught on its first run. 1. `cuda: '12.6.3'` — Jimver/cuda-toolkit@v0.2.19's version table stops at 12.6.2, so the install step died with "Version not available: 12.6.3" before nvcc was ever invoked. One digit. 2. `nvcc ... 2>&1 | head -40` — a pipeline exits with the status of its LAST command, so head's 0 masked every nvcc error. The job printed "CUDA syntax check passed" unconditionally: it could not fail. Defect 1 is why we found out, since it broke the step *before* the pipe. The second one is the one that matters. backend_cuda.cu is compiled by nothing else in this repo — no local build, no test — so this job is the only thing standing between a CUDA change and a user's GPU. A check that cannot fail is worse than no check: it buys false confidence in exactly the file that most needs the real thing. #298 spent a night debugging CUDA against no oracle at all; this job is supposed to be that oracle. It is also, precisely, the disease of the week in YAML form: a signal that measures its own intention rather than the thing it claims to measure. See the `~335 GB I/O saved` counter that counted dropped experts instead of bytes not read (#303), and `route_agree: 95.3%` cited as "quality preserved" when it only measures which experts coincide. The other three jobs (engine, web, python) passed on the first run. Co-Authored-By: ZacharyZcR <#144> Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
73 lines
2.0 KiB
YAML
73 lines
2.0 KiB
YAML
name: CI
|
|
|
|
on:
|
|
pull_request:
|
|
branches: [dev, main]
|
|
push:
|
|
branches: [dev, main]
|
|
|
|
jobs:
|
|
engine:
|
|
name: Engine (Linux, CPU)
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Build glm
|
|
run: cd c && make glm
|
|
- name: C test suite
|
|
run: cd c && make test-c
|
|
|
|
engine-cuda-syntax:
|
|
name: CUDA syntax check
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Install CUDA toolkit (compiler only)
|
|
uses: Jimver/cuda-toolkit@v0.2.19
|
|
with:
|
|
# v0.2.19's version table stops at 12.6.2 — 12.6.3 fails the install
|
|
# step with "Version not available" before nvcc is ever reached.
|
|
cuda: '12.6.2'
|
|
method: network
|
|
sub-packages: '["nvcc"]'
|
|
- name: Compile backend_cuda.cu (syntax only, no GPU)
|
|
run: |
|
|
cd c
|
|
# NOT `nvcc ... | head -40`: a pipeline exits with the status of its
|
|
# LAST command, so head's 0 masked every nvcc error and the job could
|
|
# only ever be green. A check that cannot fail is worse than no check —
|
|
# it buys false confidence in the one file nothing else compiles.
|
|
nvcc -O2 -std=c++17 -arch=sm_80 -c backend_cuda.cu -o /dev/null \
|
|
-Xcompiler=-Wall,-Wextra
|
|
echo "CUDA syntax check passed"
|
|
|
|
web:
|
|
name: Web UI
|
|
runs-on: ubuntu-latest
|
|
defaults:
|
|
run:
|
|
working-directory: web
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/setup-node@v4
|
|
with:
|
|
node-version: '22'
|
|
cache: npm
|
|
cache-dependency-path: web/package-lock.json
|
|
- run: npm ci
|
|
- name: Build
|
|
run: npm run build
|
|
- name: Test
|
|
run: npx vitest run
|
|
|
|
python:
|
|
name: Python tests
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/setup-python@v5
|
|
with:
|
|
python-version: '3.12'
|
|
- name: Python test suite
|
|
run: cd c && python3 -m unittest discover -s tests -p 'test_*.py'
|