Elenco di controllo della specifica StableHLO

In questo documento, riepiloghiamo le linee guida per la revisione delle modifiche alla specifica. Al momento, queste modifiche comportano in genere la verifica di più elementi in più fonti, quindi questo documento li riassume tutti per semplificare le recensioni:

  1. Verifica che la colonna "Specifica" in status.md indichi "sì".
  2. Controlla se il titolo della sezione corrisponde alla parola mnemonica dell'opera nell'ODS.
  3. Controlla se la sezione "Semantica" corrisponde alla Semantica operativa di XLA.
  4. Controlla se le sezioni "Input" e "Output":
    1. Elenca le stesse voci dell'ODS.
    2. Elenca le stesse voci di HloInstruction::CreateFromProto.
    3. Vengono ordinate esattamente come gli ODS.
    4. In caso di mancate corrispondenze, verifica che ci siano ticket corrispondenti.
  5. Controlla se la sezione "Vincoli":
    1. Corrisponde a shape_inference.cc di XLA.
    2. Corrisponde a hlo_verifier.cc di XLA.
    3. Corrisponde all'ODS.
    4. Corrisponde a StablehloOps.cpp.
    5. In caso di mancate corrispondenze, verifica che ci siano ticket corrispondenti. Collega tutti i ticket nella specifica, in posizioni il più specifiche possibile (ad esempio, se un ticket riguarda un vincolo che non è stato implementato, collega il ticket direttamente in tale vincolo).
    6. Se le parti corrispondenti di ODS e StablehloOps.cpp corrispondono alle specifiche, controlla che le colonne "Verifica" e "Tipo di inferenza" in status.md indichino "sì".
  6. Controlla se la sezione "Esempi":
    1. Ha solo un esempio. In futuro, aggiungeremo altri esempi della suite di test per interpreti StableHLO.
    2. Utilizza una sintassi MLIR valida eseguendo stablehlo-opt su esempi di codice.
    3. Utilizza una sintassi MLIR generica che può essere ottenuta eseguendo stablehlo-opt -mlir-print-op-generic (attieniti alla sintassi generica nelle specifiche per evitare di dover modificare le specifiche relative alle modifiche della stampante).
  7. Controlla che il description nella ODS dell'operazione:
    1. Include la prima frase della specifica.
    2. quindi collega alla sezione corrispondente delle specifiche.
    3. Quindi utilizza lo stesso esempio della specifica, ma tramite sintassi piuttosto carina che può essere ricavata eseguendo stablehlo-opt.
  8. Verifica che i file relativi all'implementazione dei vincoli di verifica e di inferenza dei tipi rispettino le linee guida riportate di seguito:
    1. Segui la linea guida n. 1 per StablehloOps.td.
    2. Segui la linea guida #2 per TypeInference.cpp e StablehloOps.cpp.
    3. Segui la linea guida #5 per ops_stablehlo.mlir.
    4. Segui la linea guida n. 6 per infer_stablehlo.mlir.