Checklist pour VHLO

Pour en savoir plus sur les VHLO, consultez vhlo.md.

Contribuer à des modifications incompatibles

Toutes les modifications ayant des implications en termes de compatibilité doivent passer par le processus RFC. Cela inclut l'ajout, l'abandon ou le renommage d'une fonctionnalité. Une fois le document RFC approuvé, vous devez effectuer les étapes suivantes:

1. Modifier le numéro de version dans Version.h et mettre à jour le journal des versions

Avant de mettre à jour les opérations, les attributs, les types ou les conversions VHLO, incrémentez le numéro de version mineure dans Version.h et mettez à jour le journal de version dans VhloDialect.td.

Toutes les nouvelles fonctionnalités VHLO ajoutées utiliseraient cette version mise à jour. Par exemple, après avoir mis à jour 0.10.0 --> 0.11.0, une nouvelle opération dans VhloOps.td utiliserait :

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

2. Ajouter l'implémentation et les conversions VHLO requises

Le code exact nécessaire pour intégrer une nouvelle fonctionnalité varie, mais dans la plupart des cas, les éléments suivants doivent être modifiés :

3. Ajouter/Mettre à jour des tests unitaires

Le contributeur d'une modification incompatible est responsable des tests unitaires positifs et négatifs de la fonctionnalité, ainsi que des tests unitaires de compatibilité.

Les tests unitaires de compatibilité impliquent de mettre à jour stablehlo_legalize_to_vhlo.mlir pour vous assurer que StableHLO fonctionne en aller-retour avec la dernière version de VHLO, ainsi que tous les tests de compatibilité avant ou arrière supplémentaires requis. Par exemple, si vous ajoutez une nouvelle opération à la version X avec Y = X - 1, ajoutez un fichier de test tel que vhlo_to_version_downgrade_invalid.0_Y_0.mlir qui indique que l'opération n'est pas prise en charge avant la version X. Si vous ajoutez une nouvelle version d'une opération, ajoutez un fichier de test tel que vhlo_to_version_downgrade.0_Y_0.mlir qui montre que l'opération peut être rétrogradée avec succès.

Si votre opération possède des attributs par défaut, incluez les tests qui montrent que les valeurs par défaut sont sérialisées et désérialisées correctement.

4. Ajouter un test de sérialisation avec version

Après avoir ajouté des tests à stablehlo_legalize_to_vhlo.mlir, copiez le fichier de test avec la version la plus élevée dans un nouveau fichier à la nouvelle version, puis ajoutez-y les nouveaux tests. Vous devez également créer un fichier de bytecode associé à l'aide de 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