Strix Halo AI Benchmarks
gfx1151RDNA 3.5117 GiB Unified Memory

Strix Halo: die Hardware verstehen

Ein Ryzen AI Max+ 395 mit einer iGPU, die keinen eigenen Speicher hat. Fast jedes Problem auf dieser Maschine — von der Token-Rate ueber das BIOS bis zur Modellgroesse — laeuft auf dieselbe Ursache zurueck: Es gibt nur einen Speicher, und alle wollen ihn gleichzeitig. Diese Seite erklaert das Modell, die Zahl, an der alles haengt, und die Widersprueche, die dabei in diesem Repo entstanden sind.

1

Die Maschine

MerkmalErfasst
CPUAMD Ryzen AI MAX+ PRO 395 (6C Zen4 + 8C Strix Point Zen5, max 5,1 GHz)
GPURadeon 8060S / 890M (40 CUs RDNA 3.5) mit Infinity Fabric <-> CPU
ArbeitsspeicherLPDDR5X-8533 on-die, bis zu 94 GB nutzbar als Unified Memory
Storage1,9 TB NVMe · 512 eMMC
GPU-ComputeRDNA 3.5 FP16: ~ 182 TFLOP · Ray Tracing: ~ 447 TFLOP
OSFedora Workstation 44 / Kernel ~7.x (AMDGPU-Treiber)
BackendROCm Standard + OpenCL über OLLAMA_OPENCL=1
Ollama0.32.5
GPU-Targetgfx1151 (RDNA 3.5)

Quelle: src/data/models.ts · hardwareSpecs. Der Punkt „Bandbreite“ fehlt hier bewusst — dazu Abschnitt 3 und Abschnitt 5.

2

Unified Memory statt VRAM

Der Radeon 8060S hat keinen eigenen VRAM. Er greift über GPU-Virtual-Memory (GPUVM) auf den ganz normalen System-RAM zu. AMD beschreibt das so: Speicher wird auf RDNA3.5-APUs gemappt, nicht physisch partitioniert. CPU und GPU nutzen dasselbe Blech — es gibt hier, anders als bei dedizierten Karten, keinen Geschwindigkeitsvorteil durch „echtes“ VRAM.

BegriffBedeutung
VRAM / Carve-out / GARTDer im BIOS fest fuer die GPU reservierte Block. Permanent weg vom Betriebssystem, auch wenn die GPU nichts tut.
GTTDer Pool an System-RAM, der dynamisch in GPU-Adressraeume gemappt werden darf. Das ist der Topf, aus dem PyTorch und vLLM sich bedienen — standardmaessig ca. 50 % des RAM.

Praktisch heisst das: Die Frage ist nie „wie viel VRAM hat die GPU“, sondern „wie viel von den 117 GiB passen gleichzeitig in den GPU-Adressraum und bleiben dem OS noch“. Ein 68-GiB-Modell ist moeglich, aber nur, weil nichts anderes gleichzeitig grossflaechig Speicher belegt.

3

Die Bandbreiten-Wand

Stilisiert, nicht maßstabsgetreu. Leuchtend markiert: der Weg vom LPDDR5X-Interface zur GPU. Beim Decode müssen pro Token alle aktiven Gewichte durch genau diesen Bus — deshalb entscheidet hier die Bandbreite, nicht die Zahl der Compute Units.

Bei der Token-Erzeugung passiert pro Token genau eine Sache: alle aktiven Gewichte muessen einmal komplett durch den Speicherbus. Rechenleistung ist dabei nicht das Limit — die GPU wartet auf Daten. Strix Halo hat nominell 256 GB/s, real erreichbar sind ~200–220 GB/s. Das ist die Wand, und sie gilt fuer jedes Modell und jedes Backend.

QuantModellgroessetheoretisch moeglichgemessenAusnutzung
IQ4_XS14,6 GiB~14,5 t/s13,3 t/s92 %
UD-Q4_K_XL17,1 GiB~12,5 t/s12,0 t/s96 %
Q8_028,0 GiB~7,7 t/s7,7 t/s100 %

Zum Vergleich: dense 27B ist der unguenstigste Fall fuer diese Hardware. MoE-Modelle auf derselben Maschine erreichen 69 t/s (qwen3-coder:30b) bzw. 51 t/s (glm-4.7-flash) — nicht, weil sie besser optimiert waeren, sondern weil sie pro Token nur einen Bruchteil ihrer Gewichte anfassen.

4

Was das fuer die Modellwahl heisst

Aus der Wand folgen genau drei Hebel — und eine Reihe von Dingen, die ausdrucklich keine Hebel sind.

HebelWirkungGrenze
MoE statt denseWeniger aktive Gewichte pro Token, direkt mehr t/s. 69 t/s (MoE 30B) gegen 7,7 t/s (dense 27B, Q8_0) auf derselben Maschine.Qualitaet haengt nicht an der Aktivrate — das kleinere Modell ist oft das bessere.
Kleineres QuantDer einzige Weg unter die Grenze. Q8_0 → IQ4_XS: 28 → 15 GB, 7,7 → 13,3 t/s.Irgendwann leidet die Qualitaet; unter Q4 wird es je nach Modell deutlich.
Speculative DecodingDer einzige Weg ueber die Grenze. MTP hebt 13,3 auf 30,9 t/s (Code) bzw. 25,0 t/s (Prosa).Braucht einen passenden Draft; Gewinn haengt von der Akzeptanzrate ab.
Backend / Treiber / FlagsBei der Generierung irrelevant: 13,29 vs 13,38 t/s zwischen Vulkan und ROCm — unter 1 %. Die GPU wartet auf Speicher, nicht auf Rechenwerke.Beim Prompt-Processing gewinnt ROCm klar (+15 %), weil das compute-bound ist.

Die einzige Regel, die aus alldem uebrig bleibt: Immer MoE-Modelle, niemals dense — ausser, ein bestimmtes dichtes Modell ist qualitativ alternativlos. Dann ist Speculative Decoding der einzige Ausweg.

5

Widersprueche in den eigenen Zahlen

Diese Seite wurde nicht von einer einzigen Quelle geschrieben. Dabei sind Werte entstanden, die sich gegenseitig widersprechen — und ein Teil der kursierenden Rechnungen ist auf den falschen Wert gestuetzt. Hier steht, was gilt und warum.

Speicherbandbreite

  • src/data/constants.ts→ Infinity Fabric ca. 1 GB/s
  • src/data/models.ts→ ~10 GB/s (Infinity Fabric)
  • src/data/setup.ts→ ~256 GB/s
  • vllm.md→ ~256 GB/s theoretisch, real ~215 GB/s
  • QWEN38-STRIX-HALO.md→ nominell 256 GB/s, real 200–220 GB/s
Verwendet: 256 GB/s nominell, 200–220 GB/s real

Nur dieser Wert erklaert die gemessene Rate: 28 GiB Modell bei 7,7 t/s Q8_0 ergeben rund 216 GB/s — und genau dort liegt die Ausnutzung laut Messung bei 100 %. Die 1 GB/s und 10 GB/s beschreiben den CPU-GPU-Link, nicht den Speicherbus, und gehoeren in keine Token-Rechnung.

Nutzbarer Arbeitsspeicher

  • src/data/models.ts→ bis zu 94 GB Unified Memory
  • src/data/media.ts→ 117 GB nutzbar
  • bench/ergebnisse · speicher.gesamt_ram_gib→ 117,678 GiB
Verwendet: 117 GiB laut Messprotokoll

Der Wert 94 GB stammt aus der fruehen Ollama-Phase und taucht in den neueren Messungen nicht wieder auf. Belegbar ist MemTotal aus dem Messprotokoll.

GPU-Bezeichnung

  • src/data/models.ts→ Radeon 8060S / 890M
  • src/data/constants.ts→ Radeon 890M
  • bench/ergebnisse · system.cpu_modell→ AMD Ryzen AI Max+ PRO 395 w/ Radeon 8060S
Verwendet: Radeon 8060S (gfx1151)

Die 890M ist das benachbarte Die-Modell, nicht die hier verbaute Variante. Die 8060S steht so in der erfassten CPU-Kennung.

Storage

  • src/data/models.ts→ 1,9 TB NVMe + 512 GB eMMC
  • src/data/constants.ts→ 960 GB eMMC + 1,6 TB NVMe
Verwendet: 1,9 TB NVMe + 512 GB eMMC

Konflikt ohne Auswirkung auf Messungen. Aufgeloest nach dem neueren Datenmodell; constants.ts ist Altbestand.

6

Weiter zur Praxis