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:
- Per le nuove operazioni:
- Aggiungi l'operazione in VhloOps.td
- Aggiungi StableHLO → conversione VHLO in StablehloLegalizeToVhlo.cpp
- Aggiungi VHLO → conversione StableHLO in VhloLegalizeToStablehlo.cpp
- Per le nuove versioni delle operazioni esistenti:
- Aggiungi l'operazione in VhloOps.td
- Aggiorna la mappatura da StableHLO a VHLO in MapStablehloToVhlo.h
- Aggiungi una conversione tra le versioni nuove e vecchie dell'operazione in VhloToVersion.cpp
- Per nuovi tipi o attributi:
- Aggiungi il tipo in VhloTypes.td o l'attributo in VhloAttrs.td
- Aggiungi StableHLO → conversione VHLO in StablehloLegalizeToVhlo.cpp
- Aggiungi VHLO → conversione StableHLO in VhloLegalizeToStablehlo.cpp
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