W tym dokumencie podsumowujemy wytyczne dotyczące sprawdzania zmian w specyfikacji. Obecnie zmiany te wymagają sprawdzenia wielu rzeczy w wielu źródłach, dlatego w tym dokumencie podsumowujemy je, aby uprościć sprawdzanie:
- Sprawdź, czy w kolumnie „Specification” (Specyfikacja) w pliku status.md znajduje się wartość „yes” (tak).
- Sprawdź, czy tytuł sekcji jest zgodny z mnemonologią operatora w ODS.
- Sprawdź, czy sekcja „Semantyki” jest zgodna z Semantyką operacji w XLA.
- Sprawdź, czy sekcje „Dane wejściowe” i „Dane wyjściowe”:
- Wymień te same produkty co ODS.
- Umieść te same elementy co HloInstruction::CreateFromProto.
- Są uporządkowane dokładnie tak jak ODS.
- Jeśli występują rozbieżności, sprawdź, czy istnieją odpowiednie zgłoszenia.
- Sprawdź, czy sekcja „Ograniczenia”:
- Pasuje do pliku shape_inference.cc XLA.
- Pasuje do pliku hlo_verifier.cc XLA.
- Pasuje do ODS.
- Pasuje do pliku StablehloOps.cpp.
- Jeśli występują rozbieżności, sprawdź, czy istnieją odpowiednie zgłoszenia. Połącz wszystkie te bilety w specyfikacji w możliwie najdokładniejszych lokalizacjach (np. jeśli zgłoszenie dotyczy ograniczenia, które nie zostało zaimplementowane, połącz zgłoszenie bezpośrednio w tym ograniczeniu).
- Jeśli odpowiednie części pliku ODS i StablehloOps.cpp są zgodne ze specyfikacją, sprawdź, czy w kolumnach „Weryfikacja” i „Wnioskowanie typu” w pliku status.md widnieje wartość „tak”.
- Sprawdź, czy sekcja „Przykłady”:
- Ma tylko 1 przykład. W przyszłości podamy więcej przykładów z pakietu testowego tłumacza w wersji StableHLO.
- Stosuje prawidłową składnię MLIR przez uruchomienie polecenia
stablehlo-opt
na przykładach kodu. - Wykorzystuje ogólną składnię MLIR, którą można uzyskać po uruchomieniu
stablehlo-opt -mlir-print-op-generic
(przestrzegamy ogólnej składni w specyfikacji, aby uniknąć konieczności zmiany specyfikacji w przypadku zmian w elemencie „estprinter”).
- Sprawdź, czy
description
w ODS operacji:- Zawiera pierwsze zdanie specyfikacji.
- Następnie prowadzi do odpowiedniej sekcji specyfikacji.
- Następnie używa się tego samego przykładu co specyfikacja, ale z użyciem bardzo zaawansowanej składni, którą można uzyskać, uruchamiając
stablehlo-opt
.
- Sprawdź, czy pliki związane z implementacją ograniczeń weryfikacji i wnioskowania typu są zgodne z tymi wytycznymi:
- Postępuj zgodnie z wytycznymi nr 1 dotyczącymi StablehloOps.td.
- Przestrzegaj wytycznych nr 2 dotyczących obiektów TypeInference.cpp i StablehloOps.cpp.
- Postępuj zgodnie z wytycznymi nr 5 dotyczącymi pliku ops_stablehlo.mlir.
- Postępuj zgodnie z wytycznymi nr 6 dotyczącymi instancji infer_stablehlo.mlir.