From 4c4071e7c70ce0577bc85c7bda2eefe90f431b9e Mon Sep 17 00:00:00 2001 From: Chris Sherwood Date: Wed, 26 Aug 2026 14:21:48 -0700 Subject: [PATCH] fix(benchmark): WSL2 submits "Microsoft Basic Render Driver" as the GPU model Under WSL2 the GPU is reached through /dev/dxg rather than the real adapter, so si.graphics() returns Microsoft's generic placeholder even while CUDA work runs on a physical card. isUnresolvedGpuModel() caught blanks, "Device " and "Unknown" but not this, so the placeholder was accepted as a legitimate model name and the authoritative detection path was skipped. The reporter on #1218 has an RTX 3090 doing real work (92% utilisation, 11.6 GB VRAM, 352 W, 127.9 tok/s) that reaches the public leaderboard labelled "Microsoft Basic Render Driver". A wrong label is worse than none: it fragments per-hardware grouping, which is the same failure #1165 fixed for raw PCI ids. Adds Microsoft's two placeholder adapter names to the same rejection list. Scoped so it cannot affect anyone off WSL: these are Microsoft's own placeholder names and appear nowhere outside a Windows/WSL graphics stack, so on a native Linux host the function returns exactly what it returns today. Checked against real product names from all four vendors, including "Microsoft Basic Renderer Pro 9000" as a near-miss, to confirm the anchored pattern cannot swallow one. Note this makes the model resolve to unknown rather than to "RTX 3090": the admin container has no nvidia-smi and WSL's copy lives at /usr/lib/wsl/lib, outside the container. Honest-unknown is the correct outcome here; naming the card under WSL is a separate problem. Refs #1218 Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01LtGWCVMPYn6qPWVYiycK74 --- admin/app/services/benchmark_service.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/admin/app/services/benchmark_service.ts b/admin/app/services/benchmark_service.ts index e366db65..68f69b7f 100644 --- a/admin/app/services/benchmark_service.ts +++ b/admin/app/services/benchmark_service.ts @@ -203,6 +203,16 @@ function isUnresolvedGpuModel(model: string): boolean { if (s === '') return true if (/^device\s+[0-9a-f]{4}$/i.test(s)) return true if (/^unknown$/i.test(s)) return true + // WSL2 exposes the GPU through /dev/dxg rather than the real adapter, so + // si.graphics() reports Microsoft's generic placeholder even while CUDA work + // is running on a physical card. Left unhandled, an RTX 3090 reaches the + // public leaderboard labelled "Microsoft Basic Render Driver", which is worse + // than no label: it is wrong, and it fragments per-hardware grouping (#1218). + // + // These are Microsoft's own placeholder adapter names and appear nowhere + // outside a Windows/WSL graphics stack, so this cannot reject a real product + // name on a native Linux host. + if (/^microsoft basic (render driver|display adapter)$/i.test(s)) return true return false }