[Issue]: WSL ROCDXG: dashboard ignores working WSL amd-smi (requires /dev/kfd; uses wrong binary path /dev/dxg)
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 40
- Forks
- 9
- Avg merge
- 4d 20h
- Merged PRs (30d)
- 59
Description
Problem Description
On WSL2 with ROCDXG, GPU inference and WSL amd-smi telemetry work, but the rocm-cli dashboard shows no GPU data. rocm serve uses the GPU successfully, and the dashboard daemon connects — but all GPU telemetry is empty. The dashboard collector requires amd-smi + readable /dev/kfd, which WSL ROCDXG does not provide.
Operating System
Windows WSL (Ubuntu 24.04.4)
CPU
AMD RYZEN AI MAX+ 395 w/ Radeon 8060S
GPU
AMD Radeon(TM) 8060S Graphics [ StrixHalo ] [gfx1151]
ROCm Version
7.13.0
ROCm Component
No response
Steps to Reproduce
Environment
- Host: blr-apu-b30-03
- OS: WSL2 Ubuntu 24.04.4 LTS (kernel 6.18.x-microsoft-standard-WSL2)
- Hardware: AMD Ryzen AI Max+ 395 w/ Radeon 8060S (gfx1151)
- ROCDXG: rocdxg-roct 1.2.1 + rocdxg-amd-smi-lib 1.2.1
- rocm-cli: 0.1.0 (nightly channel)
- Managed runtime:
release-wheel-gfx1151-7-13-0(TheRock 7.13.0) - Inference:
rocm serve qwen→ Lemonadellamacpp:rocm, deviceROCm0 : AMD Radeon(TM) 8060S Graphics
Steps to reproduce
- Install ROCDXG + rocdxg-amd-smi-lib + rocm-cli in WSL; run
rocm install sdk. - Confirm GPU inference works:
rocm serve qwen --foreground --verbose(ROCm0 in logs). - Open dashboard:
rocm→ "Open full dashboard". - Observe Home / Observe / left GPU panel / CONTEXT peak util.
Expected
- GPU count ≥ 1, model name (Radeon 8060S), utilization, VRAM, temp, power
- Node throughput shows GPU model (not "Unknown GPU")
- Health shows GPU/Driver/ROCm checks
- Peak util updates during inference
Actual
GPUs: 0/no GPU telemetry- Node throughput:
Unknown GPU - Health: unchecked (
· GPU,· Driver,ROCm —) - Peak util stuck at
0.0% - Header warning badge:
⚠ 1
Note
amd-smi metric --json - works fine
Evidence
Device nodes
$ ls -l /dev/kfd /dev/dxg 2>/dev/null
crw-rw-rw- 1 root root 10, 258 Aug 19 03:04 /dev/dxg
# /dev/kfd does not exist
### amd-smi fails
$ $RT/lib/python3.12/site-packages/_rocm_sdk_devel/bin/amd-smi metric --json
ERROR:root:Drivers not loaded (amdgpu, amd_hsmp, ionic, rdma drivers not found in modules)
### rocm examine (works)
- detected_gfx_target: gfx1151
- driver_status: wsl_rocdxg_ready
- wsl_dxg_device: true, wsl_dxcore: true, wsl_librocdxg: true
## Suspected root cause
Dashboard daemon uses AmdSmiCollector::detect() which requires readable /dev/kfd. WSL ROCDXG exposes /dev/dxg instead. When detection fails, daemon emits warning: "amd-smi unavailable (no /dev/kfd or binary missing)".
## Suggested fix direction
- Detect WSL + ROCDXG and use an alternate telemetry path (or honest platform-limited state)
- Do not show "Unknown GPU" / 0% util when inference is confirmed working via rocm examine / serve state
- Surface explicit message: "GPU telemetry unavailable on WSL ROCDXG (no /dev/kfd)"
##Impact
Dashboard appears broken on a supported WSL platform where GPU serving works.(Severity - S1)
### (Optional for Linux users) Output of /opt/rocm/bin/rocminfo --support
gha-runner@blr-apu-b30-03:/mnt/c/Users/gha-runner$ $RT/lib/python3.12/site-packages/_rocm_sdk_devel/bin/rocminfo --support
WSL environment detected.
pid:14435 tid:0x750a661c8e80 [hsakmt_hsa_loader_init] dlopen libhsa-runtime64.so failed - libhsa-runtime64.so: cannot open shared object file: No such file or directory
HSA System Attributes
Runtime Version: 1.21
Runtime Ext Version: 1.21
System Timestamp Freq.: 1000.000000MHz
Sig. Max Wait Duration: 18446744073709551615 (0xFFFFFFFFFFFFFFFF) (timestamp count)
Machine Model: LARGE
System Endianness: LITTLE
Mwaitx: DISABLED
XNACK enabled: NO
DMAbuf Support: YES
VMM Support: YES
HSA Agents
Agent 1
Name: AMD RYZEN AI MAX+ 395 w/ Radeon 8060S
Uuid: CPU-XX
Marketing Name: AMD RYZEN AI MAX+ 395 w/ Radeon 8060S
Vendor Name: CPU
Feature: None specified
Profile: FULL_PROFILE
Float Round Mode: NEAR
Max Queue Number: 0(0x0)
Queue Min Size: 0(0x0)
Queue Max Size: 0(0x0)
Queue Type: MULTI
Node: 0
Device Type: CPU
Cache Info:
L1: 49152(0xc000) KB
Chip ID: 0(0x0)
Cacheline Size: 64(0x40)
BDFID: 0
Internal Node ID: 0
Compute Unit: 32
SIMDs per CU: 0
Shader Engines: 0
Shader Arrs. per Eng.: 0
Memory Properties:
Features: None
Pool Info:
Pool 1
Segment: GLOBAL; FLAGS: FINE GRAINED
Size: 63594148(0x3ca5ea4) KB
Allocatable: TRUE
Alloc Granule: 4KB
Alloc Recommended Granule:4KB
Alloc Alignment: 4KB
Accessible by all: TRUE
Pool 2
Segment: GLOBAL; FLAGS: EXTENDED FINE GRAINED
Size: 63594148(0x3ca5ea4) KB
Allocatable: TRUE
Alloc Granule: 4KB
Alloc Recommended Granule:4KB
Alloc Alignment: 4KB
Accessible by all: TRUE
Pool 3
Segment: GLOBAL; FLAGS: KERNARG, FINE GRAINED
Size: 63594148(0x3ca5ea4) KB
Allocatable: TRUE
Alloc Granule: 4KB
Alloc Recommended Granule:4KB
Alloc Alignment: 4KB
Accessible by all: TRUE
Pool 4
Segment: GLOBAL; FLAGS: COARSE GRAINED
Size: 63594148(0x3ca5ea4) KB
Allocatable: TRUE
Alloc Granule: 4KB
Alloc Recommended Granule:4KB
Alloc Alignment: 4KB
Accessible by all: TRUE
ISA Info:
Agent 2
Name: gfx1151
Uuid: GPU-ffffffffffffffff
Marketing Name: AMD Radeon(TM) 8060S Graphics
Vendor Name: AMD
Feature: KERNEL_DISPATCH
Profile: BASE_PROFILE
Float Round Mode: NEAR
Max Queue Number: 128(0x80)
Queue Min Size: 64(0x40)
Queue Max Size: 131072(0x20000)
Queue Type: MULTI
Node: 1
Device Type: GPU
Cache Info:
L1: 32(0x20) KB
L2: 2048(0x800) KB
L3: 32768(0x8000) KB
Chip ID: 5510(0x1586)
Cacheline Size: 64(0x40)
Max Clock Freq. (MHz): 2900
BDFID: 50176
Internal Node ID: 1
Compute Unit: 40
SIMDs per CU: 2
Shader Engines: 2
Shader Arrs. per Eng.: 2
Coherent Host Access: FALSE
Memory Properties:
Features: KERNEL_DISPATCH
Fast F16 Operation: TRUE
Wavefront Size: 32(0x20)
Workgroup Max Size: 1024(0x400)
Workgroup Max Size per Dimension:
x 1024(0x400)
y 1024(0x400)
z 1024(0x400)
Max Waves Per CU: 32(0x20)
Max Work-item Per CU: 1024(0x400)
Grid Max Size: 4294967295(0xffffffff)
Grid Max Size per Dimension:
x 4294967295(0xffffffff)
y 65535(0xffff)
z 65535(0xffff)
Max fbarriers/Workgrp: 32
Packet Processor uCode:: 34
SDMA engine uCode:: 18
IOMMU Support:: None
Pool Info:
Pool 1
Segment: GLOBAL; FLAGS: COARSE GRAINED
Size: 107736056(0x66bebf8) KB
Allocatable: TRUE
Alloc Granule: 4KB
Alloc Recommended Granule:2048KB
Alloc Alignment: 4KB
Accessible by all: FALSE
Pool 2
Segment: GLOBAL; FLAGS: EXTENDED FINE GRAINED
Size: 107736056(0x66bebf8) KB
Allocatable: TRUE
Alloc Granule: 4KB
Alloc Recommended Granule:2048KB
Alloc Alignment: 4KB
Accessible by all: FALSE
Pool 3
Segment: GROUP
Size: 64(0x40) KB
Allocatable: FALSE
Alloc Granule: 0KB
Alloc Recommended Granule:0KB
Alloc Alignment: 0KB
Accessible by all: FALSE
ISA Info:
ISA 1
Name: amdgcn-amd-amdhsa--gfx1151
Machine Models: HSA_MACHINE_MODEL_LARGE
Profiles: HSA_PROFILE_BASE
Default Rounding Mode: NEAR
Default Rounding Mode: NEAR
Fast f16: TRUE
Workgroup Max Size: 1024(0x400)
Workgroup Max Size per Dimension:
x 1024(0x400)
y 1024(0x400)
z 1024(0x400)
Grid Max Size: 4294967295(0xffffffff)
Grid Max Size per Dimension:
x 2147483647(0x7fffffff)
y 65535(0xffff)
z 65535(0xffff)
FBarrier Max Size: 32
ISA 2
Name: amdgcn-amd-amdhsa--gfx11-generic
Machine Models: HSA_MACHINE_MODEL_LARGE
Profiles: HSA_PROFILE_BASE
Default Rounding Mode: NEAR
Default Rounding Mode: NEAR
Fast f16: TRUE
Workgroup Max Size: 1024(0x400)
Workgroup Max Size per Dimension:
x 1024(0x400)
y 1024(0x400)
z 1024(0x400)
Grid Max Size: 4294967295(0xffffffff)
Grid Max Size per Dimension:
x 2147483647(0x7fffffff)
y 65535(0xffff)
z 65535(0xffff)
FBarrier Max Size: 32
*** Done ***
gha-runner@blr-apu-b30-03:/mnt/c/Users/gha-runner$
### Additional Information
_No response_
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with AmdSmiCollector::detect() and trace how the dashboard daemon discovers GPU telemetry. Compare the existing /dev/kfd and amd-smi checks with the WSL ROCDXG evidence, including /dev/dxg, rocm examine, and serve state. Done means WSL ROCDXG is handled through an alternate telemetry path or reports the explicit platform-limited message instead of Unknown GPU and zero telemetry.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- cli, observability-sre
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100