-
1 · Cited, not measured on the local desktop
Confirm the card is on AMD’s WSL2 / Radeon matrix
ROCm 10.1.0 compatibility matrix lists WSL2 as an operating-system choice next to Ubuntu, RHEL, and Windows. The Radeon table names AI PRO R9000 (gfx1201), RX 9000 (gfx1200 / gfx1201), PRO W7000 (gfx1100), RX 7000 (gfx1101), PRO V Series (gfx1102), and PRO W6000 (gfx1030). The same table names Adrenalin 26.10.41.05 and Windows 11 25H2. The install selector also lists Ubuntu 26.04, 24.04, and 22.04 as WSL2 guests. If your SKU is not on that matrix, stop — do not invent support. House measured SKU is still one R9700 on bare-metal Ubuntu, not WSL.
-
2 · Cited, not measured on the local desktop
Install the Windows host Adrenalin driver first
AMD’s 10.1 blog: install the Windows driver, then install ROCm in the Ubuntu guest. The GPU reaches the guest through paravirtualization, not a native Linux amdgpu DKMS in WSL. AMD’s 10.1 install page points at the Adrenalin / ROCm 10.1 download note (RN-RAD-ROCM-10-01). The matrix names Adrenalin 26.10.41.05 on the Radeon row — we do not invent a different pin. Confirm the discrete Radeon in AMD Software or Device Manager before you open a guest. BIOS notes (Above 4G, ReBAR/SAM, CSM off) still apply on the same board. Cited, not measured on the local desktop.
-
3 · Cited, not measured on the local desktop
Install WSL2 and a listed Ubuntu guest
Microsoft: open PowerShell as administrator and run wsl --install, then restart. That enables WSL and installs Ubuntu. To pick a guest AMD names, run wsl --list --online and wsl --install -d with a listed Ubuntu 26.04, 24.04, or 22.04 distro — do not invent a slug. Confirm VERSION 2 with wsl --list --verbose. New installs default to WSL 2; wsl --set-version Ubuntu 2 upgrades an older WSL 1 guest. AMD’s 10.1 install page: WSL support is a Technical Preview and you may hit known issues. Finish the rest of ROCm inside that guest, not in PowerShell.
-
4 · Cited, not measured on the local desktop
Check that the GPU is visible in the guest
AMD’s 10.1 notes: ROCr detects WSL2 by looking for /dev/dxg and loads librocdxg. In the guest, ls -l /dev/dxg should list that device. Then rocminfo — the 10.1 verify block prints “WSL2 environment detected.” and an HSA GPU agent. AMD SMI on WSL2 is discovery and monitoring only; amd-smi version is the cited check, and amd-smi event is not supported. KFD-dependent tools that need /dev/kfd or amdgpu sysfs topology are out of scope. ls -l /dev/kfd may be missing — that is a cited preview limit, not a reason to file “ROCm is broken on Radeon.” If rocminfo never prints the WSL2 line or no GPU agent appears, stop and use /setup/windows Vulkan or bare-metal /setup.
-
5 · Cited, not measured on the local desktop
Install ROCm 10.1 in the Ubuntu guest
Follow AMD’s Install ROCm 10.1.0 page for the WSL2 + Ubuntu selector — Ubuntu .deb and Python wheels, not RPM. Register the ROCm 10.1 apt repo AMD documents, then install the gfx meta package that matches the card (amdrocm10.1-gfx1201 for the house R9700 generation). Do not apt install rocm from Ubuntu’s archive. Do not install a native Linux amdgpu DKMS into the guest; the Windows host already owns the display driver. AMD lists profiling packages as installable but unavailable on WSL2. After packages land, rerun rocminfo. Cited, not measured on the local desktop.
-
6 · Cited, not measured on the local desktop
Build llama.cpp with HIP — first engine in the guest
llama.cpp’s build.md documents the Linux HIP path: HIPCXX="$(hipconfig -l)/clang" HIP_PATH="$(hipconfig -R)" cmake -S . -B build -DGGML_HIP=ON -DCMAKE_BUILD_TYPE=Release && cmake --build build --config Release -- -j$(nproc). GPU_TARGETS is optional; omit it so CMake targets GPUs on the box, or set the gfx AMD lists for your SKU (house R9700 is gfx1201). After the build, serve the house file with the same flags we use on Ubuntu: ./build/bin/llama-server -m ~/models/Qwen3.6-35B-A3B-UD-Q5_K_XL.gguf -ngl 99 -c 262144 --cache-type-k f16 --cache-type-v f16 --host 127.0.0.1 --port 8080. Those flags are the house daily-driver set — not a WSL tok/s. llama.cpp does not document Vulkan-in-WSL as a first path, so we do not invent one. Native Windows Vulkan stays on /setup/windows. Confirm curl -s http://127.0.0.1:8080/v1/models before a harness.
-
7 · Cited, not measured on the local desktop
Pick Q6, Q5, or Q4 — Q3 is a labeled estimate
Download the same official-instruct GGUF the Linux recipes name. House file is Qwen3.6-35B-A3B-UD-Q5_K_XL.gguf. Start at Q6, Q5, or Q4 and size VRAM + KV on the calculator. Q3 stays a cited labeled estimate unless a WSL run card exists — none does. Q1/Q2 stay off. Tok/s, VRAM, and RAM on /benchmarks and /results are Ubuntu llama-bench on the local desktop. Treat them as comparison, not a WSL promise. Stay on the house Qwen3.6 family already on /models.
-
8 · Cited, not measured on the local desktop
Keep the GGUF on the Linux filesystem, not /mnt/c
Microsoft’s WSL environment guide: store project files in the Linux file system, not on a Windows drive mounted under /mnt. Prefill stalls with an idle GPU meter are often the disk. Staging is not RAM offload. House Linux warns off /mnt/bulk; the WSL equivalent is “do not serve a GGUF from /mnt/c.” Put the file in ~/models inside the guest. Not measured on the local desktop.
-
9 · Cited, not measured on the local desktop
Fit VRAM and the two RAM lines
Wherever a file spills, the two labels stay Minimum system RAM needed (the load at the context you picked) and RAM needed at full context (262144 for the house 35B). Overnight UD-Q5 one-GPU Ubuntu peaks are 37.32 GB at 4K and 42.9 GB at 256K — measured on llama.cpp on the local desktop, not inside WSL. Label estimate unless measured. Microsoft documents .wslconfig memory= (default 50% of Windows RAM) at %UserProfile%\.wslconfig; run wsl --shutdown after edits. We do not invent a recommended pin. If the guest looks RAM-starved, read that file before you blame ROCm.
-
10 · Cited, not measured on the local desktop
When it breaks — KFD, driver mismatch, .wslconfig
No /dev/kfd: expected on this preview. AMD says KFD-dependent tooling is out of scope; do not file “ROCm is broken on Radeon.” Fall back to /setup/windows Vulkan or bare-metal /setup. Driver mismatch: host Adrenalin must be the 10.1 Windows driver AMD names; guest packages must be the 10.1 Ubuntu .deb path — do not mix a native Linux amdgpu DKMS into WSL. Memory limits: Microsoft’s .wslconfig memory= caps the WSL 2 VM (default 50% of Windows RAM). AMD’s known issues mention that key only as a Valgrind-specific workaround, not a llama.cpp pin. Start from /troubleshoot. Cited rows live on /rocm-problems/windows-wsl-preview. Firmware: /bios. Jargon: /glossary. Short answers: /faq.