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:
- Per le nuove operazioni:
- Aggiungi l'operazione in VhloOps.td
- Aggiungi la conversione da StableHLO a 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 op nuove e precedenti in VhloToVersion.cpp
- Per nuovi tipi o attributi:
- Aggiungi il tipo in VhloTypes.td o l'attributo in VhloAttrs.td
- Aggiungi la conversione da StableHLO a VHLO in StablehloLegalizeToVhlo.cpp
- Aggiungi VHLO → conversione StableHLO in VhloLegalizeToStablehlo.cpp
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