Elenco di controllo VHLO

Per informazioni su VHLO, visita la pagina vhlo.md.

Contributo di modifiche incompatibili

Tutte le modifiche con implicazioni di compatibilità devono passare attraverso il processo RFC. Ciò include l'aggiunta, la deprecazione o la ridenominazione di una funzionalità. Una volta che l'RFC approvato, devi completare questi passaggi:

1. Rileva il numero di versione in Version.h e aggiorna il log delle versioni

Prima di aggiornare operazioni, attributi, tipi o conversioni VHLO, incrementa numero di versione secondario in Version.h, e aggiorna il log della versione in VhloDialect.td

Tutte le nuove funzionalità VHLO aggiunte utilizzeranno questa versione con impatto, ad esempio dopo compare 0.10.0 --> 0.11.0, una nuova operazione in VhloOps.td userebbe:

VHLO_Op<"abs_v2", "0.11.0", "current">

2. Aggiungi l'implementazione VHLO e le conversioni richieste

Il codice esatto necessario per integrare una nuova funzionalità varia, ma per la maggior parte parte seguente dovrà cambiare:

3. Aggiungi / aggiorna test delle unità

Chi ha contribuito a una modifica incompatibile è responsabile sia di test delle unità negativi della caratteristica, nonché test delle unità di compatibilità.

Il test delle unità di compatibilità comporta l'aggiornamento di stablehlo_legalize_to_vhlo.mlir per garantire che i viaggi di andata e ritorno dello StableHLO con l'ultima versione di VHLO ed eventuali test aggiuntivi di compatibilità con le versioni precedenti o future. Ad esempio: se aggiungi una nuova operazione alla versione X con Y = X - 1, aggiungi un file di test come vhlo_to_version_downgrade_invalid.0_Y_0.mlir che indica che l'operazione non è supportata prima della versione X. Se aggiungi una nuova versione di un'operazione, aggiungi un file di test come vhlo_to_version_downgrade.0_Y_0.mlir che indica che è possibile eseguire il downgrade dell'operazione correttamente.

Se l'operazione ha attributi predefiniti, includi i test che mostrano che i valori predefiniti sono serializzato e deserializzato correttamente.

4. Aggiungi test di serializzazione con più versioni

Dopo aver aggiunto i test a stablehlo_legalize_to_vhlo.mlir, copia il test sottoposto al controllo delle versioni con la versione più grande in un nuovo file nella nuova versione e aggiungi il nuovi test per quel file. Dovrai inoltre creare un modello associato file bytecode utilizzando 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