Elenco di controllo VHLO

Per informazioni su VHLO, consulta vhlo.md.

Contribuire con modifiche incompatibili

Tutte le modifiche con implicazioni di compatibilità devono essere sottoposte alla procedura RFC. Sono inclusi l'aggiunta, il ritiro o la ridenominazione di una funzionalità. Una volta approvata la richiesta, devono essere completati i seguenti passaggi:

1. Aumenta il numero di versione in Version.h e aggiorna il log della versione

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

Eventuali nuove funzionalità VHLO aggiunte utilizzeranno questa versione aggiornata, ad esempio dopo aver aggiornato 0.10.0 --> 0.11.0, una nuova operazione in VhloOps.td utilizzerà:

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

2. Aggiungi le conversioni e l'implementazione VHLO richieste

Il codice esatto necessario per integrare una nuova funzionalità varia, ma per la maggior parte è necessario modificare quanto segue:

3. Aggiungi / aggiorna test delle unità

Il collaboratore di una modifica incompatibile è responsabile sia dei test di unità positivi che di quelli negativi della funzionalità, nonché dei test di unità di compatibilità.

I test di unità di compatibilità richiedono l'aggiornamento di stablehlo_legalize_to_vhlo.mlir per garantire che i viaggi di andata e ritorno di StableHLO con l'ultima versione di VHLO, nonché eventuali test di compatibilità in avanti o all'indietro aggiuntivi richiesti. 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 mostri che l'operazione non è supportata prima della versione X. Se aggiungi una nuova versione di un'operazione, aggiungi un file di test comevhlo_to_version_downgrade.0_Y_0.mlir che dimostri che è possibile eseguire il downgrade dell'operazione.

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

4. Aggiungi test di serializzazione con versione

Dopo aver aggiunto i test a stablehlo_legalize_to_vhlo.mlir, copia il file di test con versione della versione più grande in un nuovo file nella nuova versione e aggiungi anche i nuovi test a quel file. Dovrai anche creare un file bytecode associato 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