Lista de tareas de VHLO

Consulta vhlo.md para obtener información sobre VHLO.

Cómo enviar cambios incompatibles

Todos los cambios con implicaciones de compatibilidad deben pasar por el proceso de RFC. Esto incluye agregar, dar de baja o cambiar el nombre de una función. Una vez que se apruebe la RFC, se deben completar los siguientes pasos:

1. Actualiza el número de versión en Version.h y el registro de versiones

Antes de actualizar las operaciones, los atributos, los tipos o las conversiones de VHLO, incrementa el número de versión secundario en Version.h y actualiza el registro de versión en VhloDialect.td.

Cualquier función VHLO nueva que se agregue usaría esta versión actualizada. Por ejemplo, después de actualizar 0.10.0 --> 0.11.0, una operación nueva en VhloOps.td usaría lo siguiente:

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

2. Agregar la implementación y las conversiones de VHLO requeridas

El código exacto necesario para integrar una función nueva variará, pero, en su mayoría, se deberá cambiar lo siguiente:

3. Agregar o actualizar pruebas de unidades

El colaborador de un cambio incompatible es responsable de las pruebas de unidades positivas y negativas de la función, así como de las pruebas de unidades de compatibilidad.

Las pruebas de unidades de compatibilidad implican actualizar stablehlo_legalize_to_vhlo.mlir para garantizar que StableHLO realice viajes de ida y vuelta con la versión más reciente de VHLO, así como cualquier prueba de retrocompatibilidad o compatibilidad con versiones posteriores que se requiera. 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 muestre que la operación no es compatible antes de la versión X. Si agregas una versión nueva de una operación, agrega un archivo de prueba como vhlo_to_version_downgrade.0_Y_0.mlir, que muestre que la operación se puede cambiar a una versión inferior correctamente.

Si tu operación tiene atributos predeterminados, incluye pruebas que muestren que los valores predeterminados se serializan y deserializan correctamente.

4. Se agregó la prueba de serialización con versión

Después de agregar pruebas a stablehlo_legalize_to_vhlo.mlir, copia el archivo de prueba con versión con la versión más reciente en un archivo nuevo en la versión nueva y agrega las pruebas nuevas a ese archivo también. También deberás crear un archivo de bytecode asociado 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