[Bug]: qwen36 CUDA_DLL on Windows: tier selects 0 devices unless COLI_GPUS is set (available_device_count is queried before the DLL is loaded)
Author: cyphrrrCreated Sep 16, 2026Updated Sep 17, 2026
Commit or version
b5968eb67cbf9e64e9b03ef066fe9b1d57a21e7d (dev, includes #1537)
Environment
- Windows 11 Pro 24H2 (10.0.26200), native, no WSL
- Intel i5-12600KF, 32 GB RAM, NVMe
- NVIDIA RTX 4070 SUPER (12 GB, sm_89), driver 616.92
- CUDA Toolkit 13.4.1, VS 2022 Build Tools 17.14 (MSVC 19.44.35229, x64), MSYS2 make 4.4.1 / MinGW gcc 16.2.0
- Model: Qwen3.6-35B-A3B int4-gs64 container
Reproduction steps
From an x64 Native Tools prompt with C:\msys64\\\usr\bin on PATH, in c/:
make cuda-dll CUDA_ARCH=sm_89
make qwen36.exe CUDA_DLL=1 ARCH=native
Then start the engine with the tier requested but without COLI_GPUS/COLI_GPU:
set COLI_CUDA=1
set SNAP=<qwen36_i4 container>
set N_NEW=8
qwen36.exe 256 4 prompt.txt
(Same result through the launcher: coli chat --model <qwen36_i4> --gpu auto --cap 256 — --gpu auto does not set COLI_GPUS.)
Expected behavior
The tier picks the visible GPU(s), as on Linux, and prints [CUDA] device 0: ... / [CUDA] mode: routed experts (qwen36 VRAM tier).
Actual behavior and logs
[qtier] COLI_GPUS unset: selecting 0 visible device(s)
[qtier] no visible CUDA devices -> CPU path
Source: JustVugg/colibri