Mega-Kernels

Expertenniveau

Von fused Kernels zu Mega-Kernels: wie man Launch-Overhead und HBM-Traffic radikal reduziert, indem man immer mehr der GPU-Ausführung in einen einzigen Kernel verlagert.

Zuletzt aktualisiert: 24. Sept. 2026

Fused Kernel: Operationen zusammenkleben

Ein Fused Kernel verbindet mehrere aufeinanderfolgende Operationen zu einem einzigen GPU-Kernel. Das klassische Beispiel: MatMul + Bias + GELU. Statt drei separaten Kernels, die ihre Zwischenergebnisse über den Hauptspeicher (HBM) austauschen, berechnet ein einziger Kernel alles in einem Durchlauf.

Ohne Fusion
MatMul
→HBM
Bias
→HBM
GELU

3 Kernel-Launches · Zwischenergebnisse müssen über HBM

Mit Fusion
MatMul
→Bias
→GELU
Register / Shared Memory

1 Kernel-Launch · Zwischenergebnisse bleiben in Registern/Shared Memory

Weniger Launch-Overhead

Jeder Kernel-Launch kostet Zeit — CPU-Scheduling, Grid-Setup, Synchronisation. Aus drei Launches wird einer. Bei vielen kleinen Operationen summieren sich diese Einsparungen dramatisch.

Zwischenergebnisse in Registern & Shared Memory

Statt das MatMul-Ergebnis nach HBM zu schreiben und im nächsten Kernel sofort wieder zu lesen, bleibt es in Registern oder Shared Memory. Das spart die teuersten Speicherzugriffe — die Rechnung wird nicht schneller, aber der Speicherverkehr fällt fast weg.

Mega-Kernel: der ganze Schritt in einem Kernel

Ein Mega-Kernel treibt diese Idee auf die Spitze: Nicht nur ein paar zusammenhängende Operationen, sondern ein kompletter Transformer- oder MoE-Rechenschritt läuft in EINEM Kernel. RMSNorm, QKV-Projektion, RoPE, Attention, Output-Projektion, MLP — und bei MoE sogar das Expert-Routing — werden zu einem einzigen GPU-Programm zusammengebaut.

Der Mega-Kernel-Pfad

Alle Schritte eines Transformer-Blocks — in einem einzigen Kernel

RMSNorm
Residual-Stream normalisieren
→
QKV
Query-, Key- und Value-Projektion
→
RoPE
Rotary Positional Embeddings anwenden
→
Attention
Scores berechnen, Softmax, gewichtete Summe
→
Projektion
Output-Projektion zurück in den Residual-Stream
→
MLP
Up/Gate/Down-Projektion mit Aktivierung
→
Routing
Expertenauswahl und Dispatch bei MoE

Fused Kernel vs. Mega-Kernel

Beide reduzieren Overhead — aber in völlig anderem Ausmaß

Dimension
Fused Kernel
Mega-Kernel
Umfang
Einige zusammenhängende Operationen (z. B. MatMul + Bias + GELU)
Ein großer Algorithmusabschnitt — ganzer Transformer- oder MoE-Schritt
Kernel-Launches
Reduziert — aus mehreren Launches wird einer pro Fusionsgruppe
Extrem reduziert — der komplette Block braucht einen Launch
HBM-Traffic
Zwischenergebnisse bleiben in Registern/Shared Memory statt in HBM
Zwischenstufen verlassen den Kernel gar nicht — minimaler Speicherverkehr
Komplexität
Moderat — etablierte Optimierung, gut handhabbar
Sehr hoch — Registerdruck, Scheduling und Fehlerquellen steigen drastisch
Registerbedarf
Leicht erhöht durch zusätzliche Live-Werte
Hoch — viele gleichzeitig lebendige Werte begrenzen die Occupancy
Scheduling
Die GPU-Runtime plant weiterhin jeden Kernel separat
Teilweise im Kernel — Ablaufsteuerung und Synchronisation übernimmt der Kernel selbst
Beispiele
Fused RMSNorm, Fused Bias+GELU, FlashAttention
Ganzer Transformer-Pfad, MoE-Pfad mit Routing in einem Kernel

Persistent Kernels

Die konsequente Weiterentwicklung: Ein Kernel, der einfach nicht mehr aufhört.

Einmal starten, durchgehend laufen

Bei einem persistenten Kernel startet die CPU den Kernel genau einmal — danach bleibt die GPU durchgehend aktiv. Statt für jeden Rechenschritt einen neuen Kernel zu launchen, laufen auf den Streaming Multiprocessors Schleifen, die sich immer neue Arbeit holen: Attention → MLP → Routing → Attention → … Die Synchronisation übernimmt der Kernel selbst, die CPU hält sich komplett raus.

Der Aufmerksamkeits-MLP-Routing-Loop

Die GPU bleibt aktiv und holt sich Arbeit in einer Schleife

Attention
→MLP
→Routing
⟲… und von vorn

Besonders wertvoll bei MoE

Mixture-of-Experts-Modelle erzeugen viele kleine, unregelmäßige Workloads — einzelne Experten bekommen oft nur ein paar Tokens zugewiesen. Im klassischen Launch-Modell kostet jeder Mini-Workload einen vollen Kernel-Launch; die GPU verbringt mehr Zeit mit Starten als mit Rechnen. Ein persistenter Kernel holt sich diese kleinen Aufgaben in seiner Schleife und füllt genau die Lücken, in denen die GPU sonst warten würde.

Kernsatz

Kernel Fusion = Operationen zusammenkleben.

Mega-Kernel = Den Großteil der GPU-Ausführung in einen einzigen Kernel verlagern.

Wichtige Erkenntnisse

  • 1Fused Kernel kleben einige aufeinanderfolgende Operationen zusammen: weniger Kernel-Launches und Zwischenergebnisse in Registern/Shared Memory statt HBM
  • 2Ein Mega-Kernel verlagert einen kompletten Transformer- oder MoE-Schritt — RMSNorm, QKV, RoPE, Attention, Projektion, MLP, Routing — in einen einzigen Kernel
  • 3Der Preis: sehr hohe Komplexität, starker Registerdruck und Scheduling, das teilweise in den Kernel wandert
  • 4Persistente Kernels starten einmal und laufen in Schleifen weiter — besonders wertvoll bei MoE mit vielen kleinen Workloads