Lista kontrolna specyfikacji StableHLO

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:

  1. Sprawdź, czy w kolumnie „Specification” (Specyfikacja) w pliku status.md znajduje się wartość „yes” (tak).
  2. Sprawdź, czy tytuł sekcji jest zgodny z mnemonologią operatora w ODS.
  3. Sprawdź, czy sekcja „Semantyki” jest zgodna z Semantyką operacji w XLA.
  4. Sprawdź, czy sekcje „Dane wejściowe” i „Dane wyjściowe”:
    1. Wymień te same produkty co ODS.
    2. Umieść te same elementy co HloInstruction::CreateFromProto.
    3. Są uporządkowane dokładnie tak jak ODS.
    4. Jeśli występują rozbieżności, sprawdź, czy istnieją odpowiednie zgłoszenia.
  5. Sprawdź, czy sekcja „Ograniczenia”:
    1. Pasuje do pliku shape_inference.cc XLA.
    2. Pasuje do pliku hlo_verifier.cc XLA.
    3. Pasuje do ODS.
    4. Pasuje do pliku StablehloOps.cpp.
    5. 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).
    6. 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”.
  6. Sprawdź, czy sekcja „Przykłady”:
    1. Ma tylko 1 przykład. W przyszłości podamy więcej przykładów z pakietu testowego tłumacza w wersji StableHLO.
    2. Stosuje prawidłową składnię MLIR przez uruchomienie polecenia stablehlo-opt na przykładach kodu.
    3. 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”).
  7. Sprawdź, czy description w ODS operacji:
    1. Zawiera pierwsze zdanie specyfikacji.
    2. Następnie prowadzi do odpowiedniej sekcji specyfikacji.
    3. 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.
  8. Sprawdź, czy pliki związane z implementacją ograniczeń weryfikacji i wnioskowania typu są zgodne z tymi wytycznymi:
    1. Postępuj zgodnie z wytycznymi nr 1 dotyczącymi StablehloOps.td.
    2. Przestrzegaj wytycznych nr 2 dotyczących obiektów TypeInference.cpp i StablehloOps.cpp.
    3. Postępuj zgodnie z wytycznymi nr 5 dotyczącymi pliku ops_stablehlo.mlir.
    4. Postępuj zgodnie z wytycznymi nr 6 dotyczącymi instancji infer_stablehlo.mlir.