Was macht at-dispatch-v2?
Konvertiert PyTorch AT_DISPATCH-Makros in das AT_DISPATCH_V2-Format im ATen C++-Code. Verwenden Sie dies beim Portieren von AT_DISPATCH_ALL_TYPES_AND*, AT_DISPATCH_FLOATING_TYPES* oder anderen Dispatch-Makros auf die neue v2-API. Für ATen-Kernel-Dateien, CUDA-Kernel und native Operator-Implementierungen.
Unterstützte Makros
AT_DISPATCH_ALL_TYPES_AND*AT_DISPATCH_FLOATING_TYPES*AT_DISPATCH_COMPLEX_TYPES*AT_DISPATCH_INTEGRAL_TYPES*AT_DISPATCH_QINT_TYPES*
Funktionsweise
Die Konvertierung erfolgt durch:
- Erkennen des Dispatch-Makros und seiner Argumente
- Ersetzen durch das entsprechende
AT_DISPATCH_V2-Äquivalent - Beibehalten des Lambda-Körpers und aller Typparameter
- Anpassen der Typ-Alias-Deklarationen an die v2-Konvention
Beispiel
Vorher (v1):
AT_DISPATCH_FLOATING_TYPES(input.scalar_type(), "my_kernel", [&]() {
auto output = input * scalar_t(2.0);
return output;
});
Nachher (v2):
AT_DISPATCH_V2(input.scalar_type(), "my_kernel", AT_EXPAND(AT_FLOAT_TYPES), [&]() {
using scalar_t = scalar_t;
auto output = input * scalar_t(2.0);
return output;
});
Wichtige Hinweise
- Stellen Sie sicher, dass die Quelldatei die erforderlichen Includes für die v2-API enthält (z.B.
<ATen/Dispatch_v2.h>) - Überprüfen Sie nach der Konvertierung die Korrektheit des generierten Codes
- Die Konvertierung bewahrt alle Lambda-Körper und Typargumente unverändert
- Bei gemischten v1/v2-Projekten kann eine schrittweise Migration durchgeführt werden
Verwendung
Führen Sie die Konvertierung auf einer einzelnen Datei oder einem Verzeichnis aus:
# Einzelne Datei konvertieren
skills/at-dispatch-v2 path/to/kernel.cpp
# Alle Dateien in einem Verzeichnis konvertieren
skills/at-dispatch-v2 path/to/aten/
Die Fähigkeit erkennt automatisch Dateien mit den Endungen .cpp, .h, .cu oder .cuh und führt die Konvertierung nur durch, wenn relevante Makros gefunden werden.