Informacje o VHLO znajdziesz w sekcji vhlo.md
.
Niezgodne zmiany
Wszystkie zmiany, które mają wpływ na zgodność, muszą przejść proces RFC. Obejmuje to dodawanie, wycofywanie i zmienianie nazwy funkcji. Po zatwierdzeniu prośby o udostępnienie danych 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 numer wersji podrzędnej w Version.h i zaktualizuj dziennik wersji w VhloDialect.td
Wszystkie nowe funkcje VHLO będą używać tej wersji. Na przykład po aktualizacji funkcji 0.10.0 --> 0.11.0
nowa opcja w pliku VhloOps.td będzie używać:
VHLO_Op<"abs_v2", "0.11.0", "current">
2. Dodawanie konwersji i wdrażanie VHLO
Dokładny kod potrzebny do zintegrowania nowej funkcji będzie się różnić, ale w większości przypadków trzeba będzie zmienić te elementy:
- W przypadku nowych operacji:
- Dodaj opcję w VhloOps.td
- Dodaj konwersję StableHLO → VHLO w pliku StablehloLegalizeToVhlo.cpp.
- Dodaj VHLO → konwersja StableHLO w VhloLegalizeToStablehlo.cpp
- Nowe wersje dotychczasowych operacji:
- Dodaj opcję w VhloOps.td
- Zaktualizuj mapowanie StableHLO na VHLO w pliku MapStablehloToVhlo.h
- Dodaj konwersję między nową a starą wersją op w pliku VhloToVersion.cpp.
- W przypadku nowych typów lub atrybutów:
- Dodaj typ w VhloTypes.td lub w atrybucie VhloAttrs.td.
- Dodaj konwersję StableHLO → VHLO w pliku StablehloLegalizeToVhlo.cpp.
- Dodaj konwersję VHLO → StableHLO w pliku VhloLegalizeToStablehlo.cpp.
3. Dodawanie i aktualizowanie testów jednostkowych
Współtwórca niezgodnych zmian odpowiada za pozytywne i negatywne testy jednostkowe funkcji, a także za testy jednostkowe zgodności.
Testowanie jednostek pod kątem zgodności wymaga aktualizacji pliku stablehlo_legalize_to_vhlo.mlir, aby zapewnić stabilność HLO w obie strony z najnowszą wersją VHLO, a także dodatkowe testy zgodności wstecz i wprzód. Jeśli na przykład dodajesz nową opcję w wersji X
z wartością Y = X - 1
, dodaj plik testowy, np. vhlo_to_version_downgrade_invalid.0_Y_0.mlir
, który pokazuje, że opcja nie jest obsługiwana przed wersją X
. Jeśli dodajesz nową wersję opcji, dodaj plik testowy, na przykład vhlo_to_version_downgrade.0_Y_0.mlir
, który pokazuje, że opcję można pomyślnie obniżyć.
Jeśli Twój operator ma atrybuty domyślne, uwzględnij testy, które pokazują, że wartości domyślne są prawidłowo zserializowane i deserializowane.
4. Dodawanie testu serializacji wersji
Po dodaniu testów do pliku stablehlo_legalize_to_vhlo.mlir
skopiuj wersję pliku testowego z największą wersją do nowego pliku w nowej wersji, a potem dodaj do niego nowe testy. Musisz też utworzyć powiązany plik 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