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.
3 Kernel-Launches · Zwischenergebnisse müssen über HBM
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
Fused Kernel vs. Mega-Kernel
Beide reduzieren Overhead — aber in völlig anderem Ausmaß
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
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