Consulta vhlo.md
para obtener información sobre VHLO.
Cómo contribuir a cambios incompatibles
Todos los cambios con implicaciones de compatibilidad deben pasar por el proceso de RFC. Esto incluye agregar un atributo, darlo de baja o cambiar su nombre. Una vez que el RFC aprobado, se deben completar los siguientes pasos:
1. Modifica el número de versión en Version.h y actualiza el registro de versiones
Antes de actualizar las operaciones, los atributos, los tipos o las conversiones de VHLO, incrementa número de versión menor en Version.h, y actualiza el registro de la versión en VhloDialect.td.
Cualquier función nueva de VHLO que se agregue usaría esta versión mejorada, por ejemplo, después
mostrando 0.10.0 --> 0.11.0
, una nueva op en VhloOps.td
usaría:
VHLO_Op<"abs_v2", "0.11.0", "current">
2. Agregar la implementación y las conversiones de VHLO requeridas
El código exacto que se necesita para integrar una función nueva variará, pero para la mayoría lo siguiente deberá cambiar:
- Para operaciones nuevas:
- Agrega la op en VhloOps.td
- Se agregó la conversión de StableHLO → VHLO en StablehloLegalizeToVhlo.cpp
- Se agregó la conversión de VHLO → StableHLO en VhloLegalizeToStablehlo.cpp
- Para versiones nuevas de operaciones existentes:
- Agrega la op en VhloOps.td
- Se actualizó la asignación de StableHLO a VHLO en MapStablehloToVhlo.h.
- Agrega una conversión entre las versiones de operaciones nuevas y antiguas en VhloToVersion.cpp
- Para tipos o atributos nuevos:
- Agrega el tipo en VhloTypes.td. o el atributo de VhloAttrs.td
- Se agregó la conversión de StableHLO → VHLO en StablehloLegalizeToVhlo.cpp
- Se agregó la conversión de VHLO → StableHLO en VhloLegalizeToStablehlo.cpp
3. Agregar o actualizar pruebas de unidades
La persona que contribuye a un cambio incompatible es responsable de pruebas de unidades negativas de la función, así como pruebas de unidades de compatibilidad.
La prueba de unidades de compatibilidad implica la actualización de stablehlo_legalize_to_vhlo.mlir.
para garantizar que los recorridos de StableHLO sean de ida y vuelta con la versión más reciente de VHLO,
como se requiere cualquier prueba adicional de retrocompatibilidad. Por ejemplo:
Si agregas una operación nueva en la versión X
con Y = X - 1
, agrega un archivo de prueba, como
vhlo_to_version_downgrade_invalid.0_Y_0.mlir
, que muestra que la op no es compatible.
anterior a la versión X
. Si agregas una versión nueva de una op, agrega un archivo de prueba, como
vhlo_to_version_downgrade.0_Y_0.mlir
que muestra que la operación se puede cambiar a una versión inferior.
con éxito.
Si tu operación tiene atributos predeterminados, incluye pruebas que muestren que los valores predeterminados son serializado y deserializado correctamente.
4. Agregar prueba de serialización con control de versiones
Después de agregar pruebas a stablehlo_legalize_to_vhlo.mlir
, copia la prueba con control de versiones.
con la versión más grande en un nuevo archivo en la nueva versión y agrega el
pruebas nuevas a ese archivo también. También deberás crear una cuenta
archivo de código de bytes con 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