Skip to content

Commit 8933257

Browse files
authored
Merge pull request #1 from Readon/copilot/fix-issue-4848
Fix AMD APU unified memory VRAM detection (Strix Halo / Ryzen AI MAX)
2 parents 28006d8 + 829e446 commit 8933257

2 files changed

Lines changed: 25 additions & 0 deletions

File tree

gpustack_runtime/detector/amd.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,16 @@ def detect(self) -> Devices | None:
179179
dev_gpu_vram_usage = pyamdsmi.amdsmi_get_gpu_vram_usage(dev)
180180
dev_mem = dev_gpu_vram_usage.get("vram_total")
181181
dev_mem_used = dev_gpu_vram_usage.get("vram_used")
182+
# On APUs with unified memory (e.g., AMD Strix Halo), VRAM
183+
# reports only the BIOS carveout (~512 MiB); VIS_VRAM reports
184+
# the full usable system memory. Use VIS_VRAM when larger.
185+
with contextlib.suppress(pyrocmsmi.ROCMSMIError):
186+
dev_mem_vis_vram = byte_to_mebibyte(
187+
pyrocmsmi.rsmi_dev_memory_total_get(
188+
dev_idx, pyrocmsmi.RSMI_MEM_TYPE_VIS_VRAM,
189+
),
190+
)
191+
dev_mem = max(dev_mem, dev_mem_vis_vram)
182192
dev_ecc_count = pyamdsmi.amdsmi_get_gpu_ecc_count(
183193
dev,
184194
pyamdsmi.AmdSmiGpuBlock.UMC,
@@ -189,6 +199,16 @@ def detect(self) -> Devices | None:
189199
dev_mem = byte_to_mebibyte( # byte to MiB
190200
pyrocmsmi.rsmi_dev_memory_total_get(dev_idx),
191201
)
202+
# On APUs with unified memory (e.g., AMD Strix Halo), VRAM
203+
# reports only the BIOS carveout (~512 MiB); VIS_VRAM reports
204+
# the full usable system memory. Use VIS_VRAM when larger.
205+
with contextlib.suppress(pyrocmsmi.ROCMSMIError):
206+
dev_mem_vis_vram = byte_to_mebibyte(
207+
pyrocmsmi.rsmi_dev_memory_total_get(
208+
dev_idx, pyrocmsmi.RSMI_MEM_TYPE_VIS_VRAM,
209+
),
210+
)
211+
dev_mem = max(dev_mem, dev_mem_vis_vram)
192212
dev_mem_used = byte_to_mebibyte( # byte to MiB
193213
pyrocmsmi.rsmi_dev_memory_usage_get(dev_idx),
194214
)

gpustack_runtime/detector/pyrocmsmi/__init__.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,11 @@
6262
ROCMSMI_IOLINK_TYPE_XGMI = 2
6363
ROCMSMI_IOLINK_TYPE_NUMIOLINKTYPES = 3
6464

65+
## Memory Types ##
66+
RSMI_MEM_TYPE_VRAM = 0
67+
RSMI_MEM_TYPE_GTT = 1
68+
RSMI_MEM_TYPE_VIS_VRAM = 2
69+
6570
## Error Codes ##
6671
ROCMSMI_ERROR_UNINITIALIZED = -99997
6772
ROCMSMI_ERROR_FUNCTION_NOT_FOUND = -99998

0 commit comments

Comments
 (0)