TinkerLab
DIAGNOSTIC TREE // STRIX-HALO-ROCM-GTT-TRAP (4 ROOT CAUSES)

New Hardware GPU Memory & Driver Trap (AMD Strix Halo 15.5GB GTT / Intel Arc B580 / DGX Spark UMA)

Diagnose why 128GB AMD Strix Halo only sees 15.5GB VRAM on Linux, why Intel Arc B580 falls back to CPU in Docker, and why Unified Memory hosts hit OOM from Linux page cache.

[KEY VERIFIED TAKEAWAY / TL;DR]This diagnostic decision tree for "New Hardware GPU Memory & Driver Trap (AMD Strix Halo 15.5GB GTT / Intel Arc B580 / DGX Spark UMA)" provides 7 interactive nodes and 4 hardware-verified root-cause fixes (Fix: Allocate 96GB UMA in BIOS or Set amdttm.pages_limit on Kernel 6.16.9+; Fix: Enable ROCBLAS_USE_HIPBLASLT=1 and Flash Attention on gfx1151; Fix: Pass /dev/dri with Numerical Render GID and Enable Xe2 SYCL / Vulkan Backend; Fix: Flush Linux Page Cache & Reclaim GUI Memory on Unified Memory Hosts (DGX Spark / Jetson)), paired with our reproducible guide "intel-arc-b580-and-amd-uma-gtt-vram-allocation-troubleshooting".
New Hardware GPU Memory & Driver Trap (AMD Strix Halo 15.5GB GTT / Intel Arc B580 / DGX Spark UMA)
Step 1: Identify Your Hardware Platform & Symptom

Which hardware architecture is failing to allocate expected GPU memory or falling back to slow CPU execution?

Diagnostic Probe Command
uname -r && lspci | grep -iE "vga|display|3d"

Select what your environment outputs:
DIAGNOSTIC PROBE SEQUENCE // 完整分步探测命令与症状分支

All 3 Terminal Diagnostic Probes in "New Hardware GPU Memory & Driver Trap (AMD Strix Halo 15.5GB GTT / Intel Arc B580 / DGX Spark UMA)"

Complete static reference of every read-only probe command, baseline hint, and branch transition in this decision tree.

Step 1: Identify Your Hardware Platform & Symptomstep-new-hw-vendor

Which hardware architecture is failing to allocate expected GPU memory or falling back to slow CPU execution?

uname -r && lspci | grep -iE "vga|display|3d"
Symptom Branches:
  • • AMD Ryzen AI Max+ 395 (Strix Halo 128GB) caps at ~15.5GB VRAM or runs slowly on ROCm→ step-strix-halo-symptom
  • • Intel Arc B580 (12GB Battlemage) or NVIDIA Unified Memory (DGX Spark / Jetson Super) fails→ step-arc-or-uma-symptom
Step 2: Check Strix Halo (gfx1151) Visible GTT Pool vs ROCm Kernel Speedstep-strix-halo-symptom

Inspect `amdttm` page limits and `rocminfo`. Does the model fail to load (>15.5GB OOM), or does it load but evaluate prompts slower than Vulkan?

cat /sys/module/amdttm/parameters/pages_limit && cat /proc/cmdline
Symptom Branches:
  • • Models >15.5GB fail with OOM (or `amdgpu.gttsize` warning in dmesg)→ sol-strix-halo-amdttm-96gb
  • • 96GB VRAM is visible, but ROCm prompt eval is 40–50% slower than Vulkan→ sol-strix-halo-hipblaslt
Step 2: Distinguish Intel Arc DRI Permission Drop vs Linux UMA Page Cache OOMstep-arc-or-uma-symptom

Are you running Intel Arc B580 (Xe2) inside Docker/Linux, or running a 70B+ model on NVIDIA DGX Spark / Jetson Unified Memory?

ls -l /dev/dri/renderD128 && free -h
Symptom Branches:
  • • Intel Arc B580 (12GB) ignores XPU/Vulkan and runs at 3 tok/s on CPU→ sol-arc-b580-dri-sycl
  • • NVIDIA DGX Spark / Jetson Super throws CUDA OOM despite `free -h` showing 40GB+ available→ sol-uma-page-cache-drop
ALL VERIFIED FIXES IN THIS TREE // 本树涵盖的全部根因与修复方案一览

4 Verified Root Causes, Fix Configs & Commands in "New Hardware GPU Memory & Driver Trap (AMD Strix Halo 15.5GB GTT / Intel Arc B580 / DGX Spark UMA)"

Fix: Allocate 96GB UMA in BIOS or Set amdttm.pages_limit on Kernel 6.16.9+

sol-strix-halo-amdttm-96gb

On Linux kernels 6.14+, the legacy `amdgpu.gttsize` boot parameter is deprecated and ignored on Strix Halo (`gfx1151`), leaving the default TTM/GTT pool capped at ~15.5GB unless configured via BIOS UMA Frame Buffer or `amdttm.pages_limit`.

  1. Recommended: Enter BIOS -> Advanced -> UMA Frame Buffer Size and set it to 96GB (leaving 32GB for Linux OS on a 128GB machine) on Kernel 6.16.9+.
  2. Or for dynamic GTT allocation without locking static BIOS RAM: replace `amdgpu.gttsize` with `amdttm.pages_limit=25165824 amdttm.page_pool_size=25165824` (96GB in 4KB pages) in `/etc/default/grub` and reboot.
# Set 96GB (25,165,824 x 4KB pages) in GRUB for AMD Strix Halo (gfx1151):
sudo sed -i 's/amdgpu.gttsize=[0-9]*//g' /etc/default/grub
sudo grubby --update-kernel=ALL --args="amdttm.pages_limit=25165824 amdttm.page_pool_size=25165824" || sudo update-grub
# Reboot and verify 96GB pool

[BOUNDARY]Never assign 100% of 128GB RAM to `amdttm.pages_limit`; always leave at least 24GB–32GB for the Linux kernel, Docker daemon, and mmap buffers to avoid OOM-killer freezes.

Verify: cat /sys/module/amdttm/parameters/pages_limit

Fix: Enable ROCBLAS_USE_HIPBLASLT=1 and Flash Attention on gfx1151

sol-strix-halo-hipblaslt

Default `rocBLAS` fallback routines lack tuned matrix kernels for RDNA 3.5 (`gfx1151`), causing untuned ROCm builds to run slower than Vulkan (`RADV`). Routing GEMM calls through `hipBLASLt` on ROCm 7.2+ unlocks native `gfx1151` acceleration.

  1. Export `ROCBLAS_USE_HIPBLASLT=1`, `OLLAMA_FLASH_ATTENTION=1`, and `OLLAMA_KV_CACHE_TYPE=q8_0` in your Ollama systemd service or `llama-server` environment.
  2. For maximum single-user stability without ROCm driver dependencies, use the `llama.cpp` Vulkan (`RADV`) backend, which achieves 78+ tok/s on `Qwen3-30B-A3B-Q4_K_M`.
sudo mkdir -p /etc/systemd/system/ollama.service.d
cat << 'EOF' | sudo tee /etc/systemd/system/ollama.service.d/strix-halo.conf
[Service]
Environment="ROCBLAS_USE_HIPBLASLT=1"
Environment="OLLAMA_FLASH_ATTENTION=1"
Environment="OLLAMA_KV_CACHE_TYPE=q8_0"
EOF
sudo systemctl daemon-reload && sudo systemctl restart ollama

[BOUNDARY]Strix Halo has ~256 GB/s LPDDR5X bandwidth: sparse MoE models (`Qwen3-30B-A3B`, 3.3B active) hit 75–88 tok/s, while dense 70B Q4 models are physically bandwidth-bound to ~6 tok/s.

Verify: systemctl show ollama --property=Environment

Fix: Pass /dev/dri with Numerical Render GID and Enable Xe2 SYCL / Vulkan Backend

sol-arc-b580-dri-sycl

Intel Arc B580 (`Battlemage Xe2`) requires Linux Kernel 6.12+ (`xe` driver) and explicit `/dev/dri` + numeric `render` group GID passthrough in Docker; otherwise `llama.cpp` / IPEX-LLM silently falls back to CPU.

  1. Look up the numeric group ID of `/dev/dri/renderD128` via `stat -c "%g" /dev/dri/renderD128` on the host.
  2. Pass `--device /dev/dri:/dev/dri --group-add <RENDER_GID>` and `GGML_VK_VISIBLE_DEVICES=0` (or `ONEAPI_DEVICE_SELECTOR=level_zero:0` for IPEX-LLM SYCL) to the container.
RENDER_GID=$(stat -c "%g" /dev/dri/renderD128)
docker run -d --name tinker-arc-llm \
  --device /dev/dri:/dev/dri \
  --group-add "$RENDER_GID" \
  -e GGML_VK_VISIBLE_DEVICES=0 \
  -p 127.0.0.1:11434:11434 \
  ollama/ollama:0.5.7

[BOUNDARY]Intel Arc B580 has 12GB GDDR6 (456 GB/s) with a ~10.6GB safe usable ceiling; keep 8B–12B models under num_ctx=16384 with q8_0 KV cache.

Verify: docker exec tinker-arc-llm ls -l /dev/dri/renderD128

Fix: Flush Linux Page Cache & Reclaim GUI Memory on Unified Memory Hosts (DGX Spark / Jetson)

sol-uma-page-cache-drop

On ARM64 Unified Memory systems (NVIDIA DGX Spark GB10 128GB & Jetson Orin Nano Super 8GB), the Linux kernel caches `.gguf` files in RAM (`buff/cache`). Unlike standard `malloc`, CUDA unified memory (`cudaMallocManaged`) cannot always evict dirty filesystem page caches fast enough during contiguous 70B+ or 4B allocations, triggering spurious CUDA OOMs.

  1. Drop clean filesystem page caches (`echo 3 | sudo tee /proc/sys/vm/drop_caches`) before loading a 70B–120B model on DGX Spark or a 4B model on Jetson Orin Nano Super.
  2. On Jetson Orin Nano Super (8GB), disable the Ubuntu GNOME desktop (`sudo systemctl set-default multi-user.target`) to permanently reclaim ~1.1GB of unified memory.
# 1. Immediately flush Linux filesystem page cache before loading large models:
sync && echo 3 | sudo tee /proc/sys/vm/drop_caches

# 2. Tune vm.vfs_cache_pressure so unified memory prefers GPU allocations over file cache:
sudo sysctl -w vm.vfs_cache_pressure=200

[BOUNDARY]Dropping `drop_caches=3` is non-destructive (dirty pages are synced first) and typically frees 15GB–45GB on DGX Spark and 0.8GB–1.5GB on Jetson.

Verify: free -h
PAIRED REPRODUCIBLE GUIDE // 配套实测指南与硬件环境基线

New Hardware GPU & Unified Memory Troubleshooting: Intel Arc B580 Docker Fallback, AMD Strix Halo 15.5GB Cap & DGX Spark Page Cache OOM

Root-cause diagnostics and one-line verification scripts for three high-frequency new-hardware failures: Intel Arc B580 (12GB Xe2) silent CPU fallback in Docker, AMD Strix Halo deprecated `amdgpu.gttsize` caps, and NVIDIA DGX Spark (GB10 128GB) unified memory page-cache OOMs.

TESTED HARDWARE & OS

Intel Arc B580 (12GB GDDR6 Xe2) · AMD Ryzen AI Max+ 395 (128GB UMA) · NVIDIA DGX Spark (GB10 128GB Coherent Unified Memory)

PINNED STACK VERSIONS

Linux Kernel 6.12+ (xe) / 6.16.9+ (amdttm) · Docker Engine 27.5 · Ollama 0.6.2 / llama.cpp Vulkan & SYCL · NVIDIA Driver 570.x (GB10 UMA)

VERIFIED (2026-10-27)

100% Local Kernel & Runtime Diagnostics — All diagnostic probes inspect local `/sys`, `/proc`, `/dev/dri`, and container runtime namespaces offline.