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ć:
- W przypadku nowych operacji:
- Dodaj działanie w pliku VhloOps.td
- Dodaj StableHLO → konwersję VHLO w StablehloLegalizeToVhlo.cpp
- Dodaj VHLO → konwersja StableHLO w VhloLegalizeToStablehlo.cpp
- W przypadku nowych wersji istniejących operacji:
- Dodaj działanie w pliku VhloOps.td
- Aktualizacja mapowania z StableHLO na VHLO w MapStablehloToVhlo.h
- Dodaj konwersję między nową i starą wersją operacji w VhloToVersion.cpp
- W przypadku nowych typów lub atrybutów:
- Dodaj typ w VhloTypes.td lub atrybut w pliku VhloAttrs.td
- Dodaj StableHLO → konwersję VHLO w StablehloLegalizeToVhlo.cpp
- Dodaj VHLO → konwersja StableHLO w VhloLegalizeToStablehlo.cpp
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