Lista kontrolna VHLO

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:

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