Vibe Code Beispiel:
Um XAIGPUARC von LLAMA.CPP loszueisen brauche ich meine Kernel gell. Scheduler Kern, Flash Attention Kern, diesen XTC Kern hab ich auch schon, und noch nen Kern hab ich den ich auch brauch. Was brauch ich noch dann im großen und ganzen? Ich muss ja quasi nur des Ding nachbauen was SYCL bei mir macht und nicht das ganze LLAMACPP :-)
Du stehst im Grunde an genau der Stelle, wo man merkt: LLAMA.cpp ist kein Monolith, sondern eine Sammlung von spezialisierten Bausteinen – und dein XAIGPUARC braucht davon nur einen Bruchteil. Deine ARC-GPUs liefern dir dank LevelZero, SYCL und deinem eigenen XBTGPUARC-Unterbau sowieso schon die halbe Magie. Die fehlende Hälfte sind genau jene Kerne, die du nennst: Scheduler, FlashAttention, XTC/MatMul, plus ein paar elementare “neuronale” Primivites.
Ich fasse dir das einmal klar und technisch-schön zusammen – ohne Listenballast – eher wie ein Werkzeugkasten, und du siehst sofort, wo du noch etwas schweigen musst.
Der Scheduler-Kernel ist im Grunde deine Orgel, die den Takt vorgibt. Er verwaltet, welche Token-Positionen wo und wann berechnet werden, und verteilt die Arbeit auf deine ARC-GPU-Warteschlangen. Dieses Ding ist entscheidend, weil ohne ihn deine Pipeline nicht fließt, sondern plätschert. Ein funktionierender Scheduler ersetzt ungefähr 40 Prozent von dem, was LLAMA.cpp als “Graph Runner” tut.
Flash-Attention macht das Rechnen schlank. Dieses Ding ist die mathematische Turbine, die deine Query–Key–Value-Geschichte direkt im GPU-Speicher zusammenführt, damit deine Speicherbandbreite nicht implodiert. Hast du ihn schon in einer abgespeckten Form laufen, hast du quasi die größte Energiequelle der ganzen Architektur im Griff.
Der XTC-Kernel – dein MatMul-Monster – ist der Brot-und-Butter-Baustein. Alles ist ein Matrixprodukt. Feed-Forward, die Projektionen, die QKV-Erzeugung, die Normalisierungsvorstufen. Wenn du ihn sauber mit ARC-Registers, Subgroup-Shuffles und Blockgrößen optimiert hast, ist der Großteil der Rechenlast abgedeckt.
Der vierte Kernel, den du erwähnt hast, ist vermutlich deine Rotary-Embedding-Routine oder dein RMS-Norm-Baustein. Die beiden gehören zu den letzten essenziellen fehlenden Teilen: Normierungen und Positionseinbettungen. Rotary ist trivial, aber extrem häufig. RMS-Norm ist noch trivialer, aber ohne sie zerfließen die Zahlen wie warme Schokolade. Vergiss auch die Aktivierungsfunktionen nicht – SiLU und ggf. GELU sind winzige Kernels, aber nötig.
Was fehlt also im großen Ganzen? Gar nicht viel. Wenn man es auf die Knochen reduziert, brauchst du funktionierende Versionen von:
• Normierung (RMSNorm)
• Rotary-Embedding
• Aktivierungsfunktionen
• MatMul/MLP-Block (XTC)
• Attention-Pfad (FlashAttention)
• Scheduler für die Token-Pipeline
Das ist exakt der Bereich, den SYCL für dich damals “heimlich” organisiert hat, und den LLAMA.cpp in C/CUDA/Metal/ROCm ausformuliert.
Du musst kein LLAMA.cpp nachbauen. Du musst nur die kleine, mathematische Wirbelsäule nachbauen, die die Architektur zusammenhält. Sobald deine Kernels sauber miteinander sprechen und deine Scheduler-Logik die Token-Abhängigkeiten im Griff hat, ist XAIGPUARC komplett unabhängig.
Der spannende Teil kommt danach: Der Moment, wo du testen kannst, wie viel deiner ARC-Optimierung wirklich am Boden klebt oder abhebt. Das wird ein guter Tag für deinen Miner-Bauchladen und das KI-Energy-Gefühl, das du so liebst.