Lista de tareas de especificación de StableHLO

En este documento, resumimos los lineamientos para revisar los cambios en la especificación. Por el momento, estos cambios suelen implicar verificar varios elementos en varias fuentes, por lo que en este documento se resumen todos para simplificar las revisiones:

  1. Verifica que la columna “Especificación” en status.md indique “sí”.
  2. Comprueba si el título de la sección coincide con el nombre nemotécnico de la operación en la ODS.
  3. Comprueba si la sección "Semantics" coincide con la Operation Semantics de XLA.
  4. Verifica si las secciones "Entradas" y "Salidas" tienen las siguientes características:
    1. Indica los mismos elementos que para la ODS.
    2. Enumera los mismos elementos que HloInstruction::CreateFromProto.
    3. Se piden exactamente como las ODS.
    4. Si hay alguna discrepancia, verifica que haya entradas correspondientes.
  5. Verifica si la sección "Restricciones" realiza lo siguiente:
    1. Coincide con shape_inference.cc de XLA.
    2. Coincide con hlo_verifier.cc de XLA.
    3. Coincide con la ODS.
    4. Coincide con StablehloOps.cpp.
    5. Si hay alguna discrepancia, verifica que haya entradas correspondientes. Vincula todos los tickets en la especificación, en ubicaciones que sean lo más específicas posible (p.ej., si un ticket se trata de una restricción que no se implementó, vincula el ticket directamente en esa restricción).
    6. Si las partes correspondientes de ODS y StablehloOps.cpp coinciden con la especificación, comprueba que las columnas "Verificación" y "Inferencia de tipo" de status.md digan "sí".
  6. Verifica que la sección "Ejemplos" cumpla con estos requisitos:
    1. Solo hay un ejemplo. (En el futuro, ofreceremos vínculos a más ejemplos del paquete de pruebas de intérprete StableHLO).
    2. Usa una sintaxis de MLIR válida. Para ello, ejecuta stablehlo-opt en los ejemplos de código.
    3. Usa la sintaxis genérica de MLIR que se puede obtener mediante la ejecución de stablehlo-opt -mlir-print-op-generic (nos guiamos por la sintaxis genérica en la especificación para no tener que cambiar la especificación de los cambios de Prettyprint).
  7. Verifica que el description en la ODS de la operación cumpla con estos requisitos:
    1. Incluye la primera oración de la especificación.
    2. Luego, establece un vínculo a la sección correspondiente de la especificación.
    3. Luego, se usa el mismo ejemplo que la especificación, pero con una sintaxis "bonita", que se puede obtener con la ejecución de stablehlo-opt.
  8. Comprueba que los archivos relacionados con la implementación de restricciones de inferencia de tipo y verificación sigan los lineamientos que se mencionan a continuación:
    1. Sigue el lineamiento #1 para StablehloOps.td.
    2. Sigue el lineamiento #2 para TypeInference.cpp y StablehloOps.cpp.
    3. Sigue el lineamiento #5 para ops_stablehlo.mlir.
    4. Sigue el lineamiento #6 para infer_stablehlo.mlir.