Lista kontrolna VHLO

Więcej informacji na temat VHLO znajdziesz na stronie vhlo.md.

Niezgodne zmiany

Wszystkie zmiany, które mają wpływ na zgodność ze zgodnością, muszą przejść przez proces RFC. Obejmuje to dodanie, wycofanie lub zmianę nazwy funkcji. Po wprowadzeniu RFC zatwierdzone, należy wykonać te czynności:

1. Popraw numer wersji w pliku Version.h i zaktualizuj log wersji

Przed zaktualizowaniem operacji, atrybutów, typów lub konwersji VHLO zwiększ wartość numer wersji podrzędnej w Version.h: i zaktualizuj dziennik wersji w pliku VhloDialect.td.

Nowe dodane funkcje VHLO będą używać tej wersji skróconej, na przykład po wskakuj na 0.10.0 --> 0.11.0, nową operację w grze VhloOps.td użyjesz:

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

2. Dodaj wymaganą implementację VHLO i konwersje

Dokładny kod niezbędny do zintegrowania nowej funkcji jest różny, ale co należy zmienić:

3. Dodaj / zaktualizuj testy jednostkowe

Osoba powodująca niekompatybilną zmianę jest odpowiedzialna zarówno za pozytywne, jak i na negatywnych testów jednostkowych funkcji, a także testów zgodności.

Testowanie jednostki zgodności wymaga aktualizacji pliku stablehlo_legalize_to_vhlo.mlir aby zapewnić, że StableHLO korzysta z najnowszej wersji VHLO, a także oraz wszelkie dodatkowe testy zgodności wstecznej i wcześniejszej. Przykład: jeśli dodajesz nową operację w wersji X z Y = X - 1, dodaj plik testowy taki jak vhlo_to_version_downgrade_invalid.0_Y_0.mlir sygnalizujący, że operacja jest nieobsługiwana przed wersją X. Jeśli dodajesz nową wersję operacji, dodaj plik testowy taki jak vhlo_to_version_downgrade.0_Y_0.mlir, który pokazuje, że działanie można obniżyć. .

Jeśli Twój operator ma atrybuty domyślne, uwzględnij testy, które pokazują, że wartości domyślne to poprawnie zserializować i poddać deserializacji.

4. Dodaj test serializacji wersjonowanej

Po dodaniu testów do usługi stablehlo_legalize_to_vhlo.mlir skopiuj test z włączoną obsługą wersji z największą wersją do nowego pliku w nowej wersji i dodaj parametr nowe testy tego pliku. Musisz też utworzyć powiązane konto pliku z kodem bajtowym za pomocą funkcji 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