Checklist de la spécification StableHLO

Ce document résume les consignes à suivre pour examiner les modifications apportées à la spécification. Pour le moment, ces modifications impliquent généralement la vérification de plusieurs éléments dans plusieurs sources. Ce document les résume donc toutes pour simplifier les examens:

  1. Vérifiez que la colonne "Specification" (Spécification) de status.md indique "yes" (oui).
  2. Vérifiez si le titre de la section correspond au mnémonique de l'opération dans l'ODS.
  3. Vérifiez si la section "Sémantique" correspond à l'opération sémantique de XLA.
  4. Vérifiez si les sections "Entrées" et "Sorties" :
    1. Listez les mêmes éléments que l'ODS.
    2. Répertoriez les mêmes éléments que HloInstruction::CreateFromProto.
    3. sont commandés exactement comme ODS ;
    4. En cas d'incohérences, vérifiez qu'il existe des demandes d'assistance correspondantes.
  5. Vérifiez si la section "Contraintes" :
    1. Correspond au fichier shape_inference.cc de XLA.
    2. Correspond au fichier hlo_verifier.cc de XLA.
    3. Correspond à l'ODS.
    4. Correspond à StablehloOps.cpp.
    5. En cas d'incohérences, vérifiez qu'il existe des demandes d'assistance correspondantes. Liez tous les billets dans la spécification, à des emplacements aussi spécifiques que possible (par exemple, si un ticket concerne une contrainte qui n'a pas été mise en œuvre, associez-le directement dans cette contrainte).
    6. Si les parties correspondantes de ODS et de StablehloOps.cpp correspondent aux spécifications, vérifiez que les colonnes "Verification" et "Type Inference" (Inférence de type) de status.md indiquent "yes" (oui).
  6. Vérifiez si la section "Exemples" :
    1. Cette chaîne ne comporte qu'un seul exemple. (Nous ajouterons ultérieurement des liens vers d'autres exemples de la suite de tests d'interpréteur StableHLO.)
    2. Utilise une syntaxe MLIR valide en exécutant stablehlo-opt sur les exemples de code.
    3. Utilise une syntaxe MLIR générique qui peut être obtenue en exécutant stablehlo-opt -mlir-print-op-generic (nous nous en servons à la syntaxe générique dans la spécification pour éviter d'avoir à modifier la spécification lors des modifications apportées à Joller Printer).
  7. Vérifiez que description dans l'ODS de l'opération :
    1. Inclut la première phrase de la spécification.
    2. Ensuite, un lien vers la section correspondante de la spécification s'affiche.
    3. Elle utilise ensuite le même exemple que la spécification, mais via une syntaxe élégante qui peut être obtenue en exécutant stablehlo-opt.
  8. Vérifiez que les fichiers liés à la mise en œuvre des contraintes de validation et d'inférence de type respectent les consignes mentionnées ci-dessous :
    1. Suivez la consigne n° 1 pour StablehloOps.td.
    2. Suivez la consigne n° 2 pour TypeInference.cpp et StablehloOps.cpp.
    3. Suivez la consigne n° 5 pour ops_stablehlo.mlir.
    4. Suivez la consigne n° 6 pour infer_stablehlo.mlir.