metal-kernel

Offizieller PyTorch-Leitfaden für native Metal-Kernel und MPS-Operatoren auf Apple Silicon.

metal-kernel ist ein offizieller Skill aus dem PyTorch-Repository. Er richtet sich an Entwicklerinnen und Entwickler, die PyTorch-Operatoren für Apples MPS-Backend ergänzen, bestehende MPSGraph-Implementierungen auf native Metal-Kernel umstellen oder CUDA-nahe Logik für Apple Silicon übertragen. Laut Anbieter ist das Ziel ausdrücklich die Nutzung der nativen Metal-Infrastruktur unter c10/metal und nicht MPSGraph. Der Skill ist damit ein technischer Arbeitsleitfaden für PyTorch-Beiträge, kein fertiger GPU-Treiber, kein eigenständiges Metal-Framework und kein allgemeiner Einführungskurs in maschinelles Lernen.

Zweck und Architektur

Der beschriebene Ablauf verbindet drei Schichten. Zuerst wird in native_functions.yaml die Dispatch-Zuordnung für den Operator gepflegt. Bei einer Migration sollen alle relevanten Overloads geprüft werden, also funktionale, In-place-, Out- und Tensor- oder Scalar-Varianten. Danach entsteht der Metal-Kernel unter aten/src/ATen/native/mps/kernels. Für elementweise Operationen beschreibt die Quelle Funktoren und Registrierungs-Makros für unäre, binäre oder Alpha-Parameter. Die dritte Schicht ist der Host-seitige Stub unter aten/src/ATen/native/mps/operations. Er bindet TensorIterator an die passende Kernel-Bibliothek und registriert den MPS-Dispatch. Diese Trennung macht sichtbar, ob ein Fehler in der YAML-Zuordnung, im Metal-Code oder in der Host-Anbindung liegt.

Praktische Implementierung

Laut Anbieter helfen REGISTER_UNARY_OP und REGISTER_BINARY_OP dabei, die Iterator-Anbindung für typische elementweise Operationen zu kapseln. Je nach Semantik können Gleitkomma-, Integer-, BFloat16- oder komplexe Datentypen eigene Registrierungen und Funktor-Überladungen benötigen. Die Quelle erläutert opmath- und Akkumulationstypen sowie präzise mathematische Hilfsfunktionen aus c10/metal. Für komplexe Werte ist zu beachten, dass Metal-Darstellungen als Vektoren auftreten können. Wer eine vorhandene MPSGraph-Operation migriert, muss den alten Host-Implementierungspfad entfernen und jeden verbliebenen Verweis auf die alte Funktion prüfen. Ein einzelner unvollständig migrierter Overload kann sonst weiterhin den alten Pfad verwenden.

Tests und Diagnose

Die PyTorch-Testinfrastruktur unter test/test_mps.py prüft grundlegende Übereinstimmung zwischen Ausgaben. Der Skill verweist zusätzlich auf torch.mps.compile_shader, womit einzelne Metal-Shader isoliert kompiliert und auf dem MPS-Gerät getestet werden können. Die offizielle Dokumentation beschreibt dabei Threads als Gesamtzahl der Threads und group_size als Threadzahl pro Threadgruppe. Diese Unterscheidung ist wichtig, weil dispatchThreads nicht dasselbe bedeutet wie dispatchThreadgroups. Bei Pipelines aus mehreren Kerneln sollte jede Zwischenstufe gegen eine CPU- oder NumPy-Referenz geprüft werden, ohne aus Bequemlichkeit jeden GPU-Wert auf die CPU zu kopieren.

Grenzen und Sicherheit

Der Skill setzt Kenntnisse in C++, Objective-C oder Objective-C++, Metal, PyTorch-Builds und MPS voraus. Die beschriebenen Dateien liegen im PyTorch-Quellbaum; sie verändern nicht automatisch eine installierte PyTorch-Version. Apple-Hardware, passende Betriebssysteme, Compiler, SDKs und ein korrekt konfigurierter Build sind erforderlich. Der Leitfaden garantiert weder Performance noch numerische Gleichheit für jede Form und jeden Datentyp. Besonders wichtig sind leere und nicht zusammenhängende Tensoren, große Tensoren, Indexgrenzen und asynchrone Fehler. Laut Anbieter sollen Fehler über den vorgesehenen MPS-Fehlerpuffer gemeldet werden, nicht durch erzwungene GPU-zu-CPU-Synchronisation. Builds und Tests dürfen nur in einer kontrollierten Entwicklungsumgebung ausgeführt werden; unbekannte Dateien, Skripte oder automatisch erzeugte Änderungen müssen vor der Ausführung geprüft werden.

Quelle und Einordnung

Die Primärquelle ist https://github.com/pytorch/pytorch/tree/main/.claude/skills/metal-kernel. Ergänzend ist https://docs.pytorch.org/docs/stable/generated/torch.mps.compile_shader.html die offizielle PyTorch-Dokumentation für das isolierte Shader-Testen. Der Quellbaum von PyTorch ist unter BSD-3-Clause lizenziert. Diese Katalogbeschreibung wurde am 9. September 2026 geprüft. GitHub-Sterne werden für diesen Eintrag nicht gespeichert, weil das Skill-Modell kein github_stars-Feld besitzt. Der Skill passt zu Claude Code, weil er als .claude/skills-Ressource veröffentlicht ist; die fachliche Anleitung selbst ersetzt keine Prüfung der jeweils installierten PyTorch-Version.

Kostenlos
Anbieter
PyTorch
Lizenz
BSD-3-Clause
Zuletzt geprüft
09.09.2026

Repository und Dokumentation

Kategorien

Kompatibel mit

Claude Code