VHLO-Checkliste

Weitere Informationen zu VHLO finden Sie unter vhlo.md.

Inkompatible Änderungen einreichen

Alle Änderungen mit Auswirkungen auf die Kompatibilität müssen den RFC-Prozess durchlaufen. Dazu gehört auch das Hinzufügen, Einstellen oder Umbenennen einer Funktion. Sobald die RFC genehmigt wurde, müssen die folgenden Schritte ausgeführt werden:

1. Versionsnummer in Version.h erhöhen und das Versionsprotokoll aktualisieren

Bevor du VHLO-Vorgänge, -Attribute, -Typen oder -Conversions aktualisierst, erhöhe die Nebenversionsnummer in Version.h und aktualisiere das Versionsprotokoll in VhloDialect.td.

Alle neu hinzugefügten VHLO-Funktionen verwenden diese aktualisierte Version. Beispiel: Nach dem Anstoßen von 0.10.0 --> 0.11.0 würde eine neue Operation in VhloOps.td Folgendes verwenden:

VHLO_Op<"abs_v2", "0.11.0", "current">

2. Erforderliche VHLO-Implementierung und Conversions hinzufügen

Der genaue Code, der zur Einbindung einer neuen Funktion erforderlich ist, variiert. In den meisten Fällen müssen jedoch die folgenden Änderungen vorgenommen werden:

3. Einheitentests hinzufügen/aktualisieren

Der Entwickler einer inkompatiblen Änderung ist sowohl für positive als auch für negative Unittests der Funktion sowie für Kompatibilitäts-Unittests verantwortlich.

Bei den Kompatibilitäts-Unit-Tests wird stablehlo_legalize_to_vhlo.mlir aktualisiert, um sicherzustellen, dass StableHLO-Rundreisen mit der neuesten Version von VHLO funktionieren. Außerdem sind alle erforderlichen Tests zur Vorwärts- oder Rückwärtskompatibilität erforderlich. Wenn Sie beispielsweise in Version X mit Y = X - 1 eine neue Operation hinzufügen, fügen Sie eine Testdatei wie vhlo_to_version_downgrade_invalid.0_Y_0.mlir hinzu, aus der hervorgeht, dass die Operation vor Version X nicht unterstützt wird. Wenn Sie eine neue Version einer Operation hinzufügen, fügen Sie eine Testdatei wie vhlo_to_version_downgrade.0_Y_0.mlir hinzu, aus der hervorgeht, dass die Operation erfolgreich heruntergestuft werden kann.

Wenn Ihre Operation Standardattribute hat, fügen Sie Tests hinzu, die zeigen, dass die Standardwerte korrekt serialisiert und deserialisiert werden.

4. Test für versionierte Serialization hinzufügen

Nachdem Sie stablehlo_legalize_to_vhlo.mlir Tests hinzugefügt haben, kopieren Sie die versionierte Testdatei mit der höchsten Version in eine neue Datei in der neuen Version und fügen Sie dieser Datei auch die neuen Tests hinzu. Außerdem müssen Sie mit stablehlo-translate eine zugehörige Bytecode-Datei erstellen:

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