🟢 🔧 Hardware Veröffentlicht: · 3 Min. Lesezeit ·

AMD erklärt Occupancy-Mathematik für MI355X: Hohe Auslastung ist keine Voraussetzung für Peak-Throughput

Redaktionelle Illustration: AMD CDNA4 MI355X GPU Occupancy-Mathematik und Kernel-Code-Optimierung

Das AMD-ROCm-Team hat einen technischen Leitfaden zur manuellen Berechnung der GPU-Occupancy für die CDNA4-Architektur veröffentlicht. Zentraler Befund: Matrix-gebundene Kernel auf dem MI355X erreichen Peak-Throughput bei nur 12 % Occupancy — ein kontraintuitives Ergebnis für Entwickler aus dem CUDA-Ökosystem.

🤖

Dieser Artikel wurde mithilfe von künstlicher Intelligenz aus Primärquellen erstellt.

Das AMD-ROCm-Team hat einen umfangreichen technischen Leitfaden zur Berechnung der GPU-Occupancy für die CDNA4-Architektur, konkret für den MI355X-Beschleuniger, veröffentlicht. Der Text richtet sich an GPU-Kernel-Ingenieure, die benutzerdefinierte Kernel für Produktionsinferenz oder Training optimieren — und liefert einen Befund, der direkt kontraintuitiv für Entwickler aus dem NVIDIA-CUDA-Ökosystem ist.

Was ist Occupancy und warum wird sie manuell berechnet?

GPU-Occupancy misst den Anteil verfügbarer Ressourcen, die aktiv mit Wavefronts (CUDA-Terminologie: Warps) besetzt sind. Hohe Occupancy galt lange als Voraussetzung für hohen Throughput — mehr aktive Wavefronts bedeuten mehr Möglichkeiten, die Latenz von Speicherzugriffen zu verbergen.

Die Autoren des Leitfadens vertreten eine andere Position: Occupancy ist vollständig aus bekannten Hardware-Einschränkungen und den vom Kernel verbrauchten Ressourcen ableitbar und sollte aus ersten Prinzipien verstanden werden, nicht als undurchsichtige Metrik aus Profiling-Tools. Das Ziel ist, Ingenieure in die Lage zu versetzen, Occupancy vor dem Ausführen eines Kernels vorherzusagen.

Vier Limiter und die CDNA4-Architektur

Der MI355X ist um 256 Compute Units organisiert, verteilt auf 8 XCD-Chips, getaktet auf 2,4 GHz. Jede CU enthält 4 SIMD-Einheiten mit 64 Lanes, jede mit einer privaten Registerdatei.

Der Leitfaden identifiziert vier Ressourcen, die die Obergrenze der Occupancy bestimmen:

Vektor-Register (VGPR) — auf CDNA4 hat die Registerdatei 512 Einträge pro Lane, und die Register werden zwischen regulären und Akkumulator-Registern geteilt. Das ist ein wesentlicher Unterschied zu CDNA3, wo Akkumulator-Register (AccVGPR) ein separater Pool waren — AMD betont, dass Ingenieure, die Wissen von der vorherigen Generation übertragen, diese Annahme aktualisieren müssen.

Skalar-Register (SGPR) — rund 800 pro SIMD-Einheit, werden für wavefront-einheitliche Werte verwendet.

Lokaler geteilter Speicher (LDS) — von 64 KB auf CDNA3 auf 160 KB pro Compute Unit auf CDNA4 erhöht.

Workgroup-Slots — Hardware-Beschränkung der Anzahl gleichzeitig aktiver Workgroups pro CU.

Kontraintuitiver Befund: Niedrige Occupancy, Peak-Throughput

Der zentrale Befund des Leitfadens widerspricht direkt der Intuition aus CUDA-Optimierungserfahrung. AMDs Microbenchmark für MXFP8-Operationen — für die der MI355X rund 5 PFLOP/s erreicht — zeigt, dass Kernel mit hohem Instruction-Level-Parallelismus (ILP=8) 4,82 PFLOP/s bei nur 12 % Occupancy halten. Dieser Wert übertrifft alles, was ein ILP=2-Kernel auch bei 96 % Occupancy erreicht.

Der Grund: Die Matrix-Einheiten auf CDNA4 sind schnell genug, um die Pipeline mit einer kleinen Anzahl aktiver Wavefronts zu sättigen. Wenn ein Kernel Latenz erfolgreich durch ILP statt durch Wavefront-Parallelismus verbirgt, ist hohe Occupancy nicht nur unnötig — sie kann aufgrund von Register-Datei-Einschränkungen unmöglich sein, ohne irgendeinen Nutzen zu bringen.

MXFP8-GEMM-Beispiel: Derselbe Kernel, zwei Generationen

Der Leitfaden enthält ein konkretes Beispiel: Ein MXFP8-GEMM-Kernel mit einer Tile-Größe von 256 Threads, der 128 VGPRs und 32 KB LDS verbraucht.

Auf CDNA3 mit 64 KB LDS: Der Kernel ist LDS-limitiert und erreicht 25 % Occupancy — nur zwei solcher Kernel können gleichzeitig pro CU aktiv sein, da sie gemeinsam den LDS erschöpfen.

Auf CDNA4 mit 160 KB LDS: Derselbe Kernel ist nicht mehr LDS-limitiert. Nun begrenzen ihn die Register, und die Occupancy steigt auf 50 % — vier Instanzen pro CU. Derselbe Quellcode, unterschiedliche Limiter, doppelt so hohe Auslastung.

Kontext: AMD schließt die Dokumentationslücke zu CUDA

Der Leitfaden ist Teil von AMDs breiterem Bemühen, die ROCm-Softwaredokumentation zu verbessern und die Hürde für Ingenieure zu senken, die vom NVIDIA-Ökosystem wechseln. CUDA hatte jahrzehntelang einen Vorteil in der Tiefe der technischen Dokumentation — Details wie diese über Ressourcengrenzen und deren Auswirkung auf Occupancy waren für NVIDIA-Architekturen gut dokumentiert, während sie für AMD-GPUs experimentelle Untersuchung oder interne Code-Einblicke erforderten.

Solche Leitfäden aus ersten Prinzipien zielen genau auf diese Lücke: Ingenieure, die wissen, was sie suchen, können Occupancy nun analytisch ableiten, ohne Kernel auszuführen — was den iterativen Optimierungszyklus von Produktions-KI-Modellen auf AMD-Infrastruktur beschleunigt.

Häufig gestellte Fragen

Warum erreichen matrix-gebundene Kernel bei niedriger Occupancy Peak-Throughput auf dem MI355X?
Die Matrix-Einheiten auf CDNA4 sind schnell genug, um die Pipeline auch mit einer kleinen Anzahl aktiver Wavefronts zu sättigen. Ein Microbenchmark zeigt ILP=8, das 4,82 PFLOP/s bei nur 12 % Occupancy hält — mehr als ILP=2 bei 96 % Occupancy.
Was sind die vier Occupancy-Limiter auf dem MI355X?
Die vier Limiter sind: Vektor-Register (VGPR, 512 Einträge pro Lane, gemeinsam für reguläre und Akkumulator-Register), Skalar-Register (SGPR, rund 800 pro SIMD), lokaler Speicher (LDS, 160 KB pro Compute Unit) und die Anzahl freier Workgroup-Slots.
Wie unterscheidet sich der MI355X von CDNA3 beim LDS?
CDNA4 MI355X erhöht LDS von 64 KB (CDNA3) auf 160 KB pro Compute Unit. Derselbe MXFP8-GEMM-Kernel, der auf CDNA3 bei 25 % Occupancy LDS-limitiert war, erreicht auf CDNA4 50 % Occupancy, da er nun register-limitiert ist.