Checkliste für die StableHLO-Spezifikation

In diesem Dokument werden die Richtlinien zum Prüfen von Änderungen der Spezifikation zusammengefasst. Derzeit beinhalten diese Änderungen in der Regel die Prüfung mehrerer Dinge in mehreren Quellen. In diesem Dokument werden daher alle zusammengefasst, um die Überprüfung zu vereinfachen:

  1. Prüfen Sie, ob in der Spalte „Specification“ in status.md „yes“ steht.
  2. Prüfen Sie, ob der Abschnittstitel mit der Gedächtnisstütze des Vorgangs in der ODS übereinstimmt.
  3. Prüfen Sie, ob der Abschnitt „Semantics“ mit der Operation Semantics von XLA übereinstimmt.
  4. Prüfen Sie, ob in den Abschnitten „Inputs“ und „Outputs“ Folgendes angezeigt wird:
    1. Listen Sie dieselben Elemente wie die ODS auf.
    2. Geben Sie dieselben Elemente wie in HloInstruction::CreateFromProto an.
    3. Sie werden genauso wie ODS sortiert.
    4. Prüfen Sie bei Abweichungen, ob entsprechende Tickets vorhanden sind.
  5. Prüfen Sie, ob im Bereich „Einschränkungen“ Folgendes zutrifft:
    1. Entspricht shape_inference.cc von XLA.
    2. Übereinstimmung mit hlo_verifier.cc von XLA
    3. Entspricht der ODS.
    4. Stimmt mit StablehloOps.cpp überein.
    5. Prüfen Sie bei Abweichungen, ob entsprechende Tickets vorhanden sind. Verknüpfen Sie alle diese Tickets in der Spezifikation an möglichst spezifischen Standorten. Wenn ein Ticket beispielsweise eine Einschränkung betrifft, die nicht implementiert wurde, verknüpfen Sie das Ticket direkt in dieser Einschränkung.
    6. Wenn die entsprechenden Teile von ODS und StablehloOps.cpp der Spezifikation entsprechen, prüfen Sie, ob in den Spalten „Verification“ und „Type Inference“ in status.md „yes“ angegeben ist.
  6. Prüfen Sie, ob im Abschnitt „Beispiele“:
    1. Es gibt nur ein Beispiel. (In Zukunft verlinken wir auf weitere Beispiele aus der StableHLO-Interpreter-Testsuite.)
    2. Verwendet gültige MLIR-Syntax durch Ausführen von stablehlo-opt für Codebeispiele.
    3. Verwendet generische MLIR-Syntax, die durch Ausführen von stablehlo-opt -mlir-print-op-generic abgerufen werden kann. Wir halten uns an die generische Syntax in der Spezifikation, um zu vermeiden, dass die Spezifikation bei Änderungen der Prettyprinter-Datei geändert werden muss.
  7. Prüfen Sie, ob description in den ODS des Vorgangs vorhanden ist:
    1. Enthält den ersten Satz der Spezifikation.
    2. Links zum entsprechenden Abschnitt der Spezifikation.
    3. Es wird dann das gleiche Beispiel wie in der Spezifikation verwendet, allerdings mit der Syntax, die durch Ausführen von stablehlo-opt abgerufen werden kann.
  8. Prüfen Sie, ob die Dateien, die sich auf die Implementierung von Verifizierungs- und Typinferenzeinschränkungen beziehen, den folgenden Richtlinien entsprechen:
    1. Folgen Sie der Richtlinie 1 für StablehloOps.td.
    2. Folgen Sie der Richtlinie #2 für TypeInference.cpp und StablehloOps.cpp.
    3. Folgen Sie der Richtlinie 5 für ops_stablehlo.mlir.
    4. Folgen Sie der Richtlinie #6 für infer_stablehlo.mlir.