Weitere Informationen zu VHLO finden Sie unter vhlo.md
.
Inkompatible Änderungen beitragen
Alle Änderungen mit Auswirkungen auf die Kompatibilität müssen den RFC-Prozess durchlaufen. Dies gilt auch für das Hinzufügen, Einstellen oder Umbenennen eines Elements. Sobald der RFC genehmigt haben, müssen folgende Schritte ausgeführt werden:
1. Die Versionsnummer in Version.h anstoßen und das Versionsprotokoll aktualisieren
Erhöhen Sie vor der Aktualisierung von VHLO-Vorgängen, -Attributen, -Typen oder -Conversions die Nebenversionsnummer in Version.h und aktualisieren Sie das Versionsprotokoll in VhloDialect.td.
Alle neu hinzugefügten VHLO-Funktionen würden diese überarbeitete Version verwenden, z. B. nach
Anstoßen von 0.10.0 --> 0.11.0
, einer neuen Operation in VhloOps.td
würde Folgendes verwenden:
VHLO_Op<"abs_v2", "0.11.0", "current">
2. Erforderliche VHLO-Implementierung und -Conversions hinzufügen
Der genaue Code zum Einbinden einer neuen Funktion variiert unterschiedlich, aber für die meisten Teil, den Sie ändern müssen:
- Für neue Vorgänge:
<ph type="x-smartling-placeholder">
- </ph>
- Fügen Sie den Vorgang in VhloOps.td hinzu.
- Fügen Sie StableHLO → VHLO-Konvertierung in StablehloLegalizeToVhlo.cpp hinzu
- Fügen Sie die Konvertierung von VHLO → StableHLO in VhloLegalizeToStablehlo.cpp hinzu.
- Für neue Versionen vorhandener Vorgänge:
<ph type="x-smartling-placeholder">
- </ph>
- Fügen Sie den Vorgang in VhloOps.td hinzu.
- Die Zuordnung von StableHLO zu VHLO in MapStablehloToVhlo.h aktualisieren
- Fügen Sie in VhloToVersion.cpp eine Konvertierung zwischen der neuen und der alten operativen Version hinzu.
- Für neue Typen oder Attribute:
<ph type="x-smartling-placeholder">
- </ph>
- Fügen Sie den Typ in VhloTypes.td hinzu. oder das Attribut in VhloAttrs.td
- Fügen Sie StableHLO → VHLO-Konvertierung in StablehloLegalizeToVhlo.cpp hinzu
- Fügen Sie die Konvertierung von VHLO → StableHLO in VhloLegalizeToStablehlo.cpp hinzu.
3. Einheitentests hinzufügen / aktualisieren
Wer zu einer inkompatiblen Änderung beigetragen hat, ist sowohl für positive negative Unittests der Funktion sowie Kompatibilitätseinheitentests.
Beim Testen der Kompatibilitätseinheiten wird stablehlo_legalize_to_vhlo.mlir aktualisiert.
damit StableHLO mit der neuesten Version von VHLO umgeht,
da zusätzliche Tests zur Vorwärts- oder Abwärtskompatibilität erforderlich sind. Beispiel:
Wenn Sie eine neue Operation in Version X
mit Y = X - 1
hinzufügen, fügen Sie eine Testdatei wie
vhlo_to_version_downgrade_invalid.0_Y_0.mlir
, die den Vorgang anzeigt, wird nicht unterstützt
vor Version X
. Wenn Sie eine neue Version eines Vorgangs hinzufügen, fügen Sie eine Testdatei wie
vhlo_to_version_downgrade.0_Y_0.mlir
, die angibt, dass der Vorgang herabgestuft werden kann
erfolgreich war.
Wenn Ihr Vorgang Standardattribute hat, schließen Sie Tests ein, die zeigen, dass die Standardwerte serialisiert und deserialisiert wird.
4. Versionierten Serialisierungstest hinzufügen
Nach dem Hinzufügen von Tests zu stablehlo_legalize_to_vhlo.mlir
den versionierten Test kopieren
-Datei mit der größten Version in eine neue Datei mit der neuen Version
neue Tests in diese Datei einfügen. Außerdem müssen Sie ein verknüpftes
Bytecode-Datei mit stablehlo-translate
:
export TARGET_VERSION=1.X.0
export TARGET_FILENAME=${TARGET_VERSION//./_}
stablehlo-translate --serialize --target=$TARGET_VERSION --strip-debuginfo stablehlo/tests/vhlo/stablehlo_legalize_to_vhlo.$TARGET_FILENAME.mlir > stablehlo/tests/vhlo/stablehlo_legalize_to_vhlo.$TARGET_FILENAME.mlir.bc