Checklist pour VHLO

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

Contribution de modifications incompatibles

Toutes les modifications ayant des implications en termes de compatibilité doivent passer par le processus RFC. Par exemple, vous pouvez ajouter, rendre obsolète ou renommer un élément géographique. Une fois que le RFC est vous devez effectuer les étapes suivantes:

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

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

Toutes les nouvelles fonctionnalités VHLO ajoutées utiliseront cette version rechargée, par exemple après renversant 0.10.0 --> 0.11.0, une nouvelle opération dans VhloOps.td utiliseriez:

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

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

Le code exact nécessaire à l'intégration d'une nouvelle fonctionnalité varie, mais vous devez modifier l'une des parties suivantes:

3. Ajouter / Mettre à jour des tests unitaires

Le contributeur d'une modification incompatible est responsable à la fois des éléments positifs et des tests unitaires négatifs de la fonctionnalité et des tests unitaires de compatibilité.

Les tests unitaires de compatibilité impliquent la mise à jour du fichier stablehlo_legalize_to_vhlo.mlir. pour garantir que les allers-retours StableHLO avec la dernière version de VHLO car tout autre test de compatibilité ascendant ou ascendante requis. Par exemple : si vous ajoutez une nouvelle opération à la version X avec Y = X - 1, ajoutez un fichier de test comme vhlo_to_version_downgrade_invalid.0_Y_0.mlir indiquant 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 comme vhlo_to_version_downgrade.0_Y_0.mlir indiquant 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 sont correctement sérialisées et désérialisées.

4. Ajouter un test de sérialisation avec gestion des versions

Après avoir ajouté des tests à stablehlo_legalize_to_vhlo.mlir, copiez le test avec gestion des versions fichier contenant la version la plus volumineuse dans un nouveau fichier de la nouvelle version, puis ajoutez le paramètre de nouveaux tests sur ce fichier. Vous devez également créer un bucket bytecode à 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