Neste documento, resumimos as diretrizes para analisar as mudanças na especificação. No momento, essas mudanças normalmente envolvem a verificação de vários itens em várias fontes. Portanto, este documento resume todos eles para simplificar as análises:
- Confira se a coluna "Specification" em status.md mostra a mensagem "yes".
- Verifique se o título da seção corresponde ao mnemônico da operação no ODS.
- Verifique se a seção "Semântica" corresponde à Semântica de operação do XLA.
- Verifique se as seções "Entradas" e "Saídas":
- Liste os mesmos itens da ODS.
- Liste os mesmos itens como HloInstruction::CreateFromProto.
- São ordenados exatamente como ODS.
- Se houver inconsistências, verifique se há tíquetes correspondentes.
- Verifique se a seção "Restrições":
- Corresponde a shape_inference.cc do XLA.
- Corresponde a hlo_verifier.cc do XLA.
- Corresponde ao ODS.
- Corresponde a StablehloOps.cpp.
- Se houver inconsistências, verifique se há tíquetes correspondentes. Vincule todos os ingressos na especificação em locais que sejam o mais específicos possível. Por exemplo, se um ingresso for sobre uma restrição que não foi implementada, vincule o ingresso diretamente nessa restrição.
- Se as partes correspondentes do ODS e do StablehloOps.cpp corresponderem à especificação, confira se as colunas "Verificação" e "Inferência de tipo" em status.md mostram "sim".
- Verifique se a seção "Exemplos":
- Tem apenas um exemplo. No futuro, vamos incluir links para mais exemplos do pacote de testes de intérprete do StableHLO.
- Usa uma sintaxe MLIR válida executando
stablehlo-opt
nos exemplos de código. - Usa uma sintaxe MLIR genérica, que pode ser conseguida executando
stablehlo-opt -mlir-print-op-generic
. Mantemos a sintaxe genérica na especificação para evitar ter que mudar a especificação em mudanças no Beautyprinter.
- Verifique se o
description
no ODS da operação:- Inclui a primeira frase da especificação.
- Em seguida, leva à seção correspondente da especificação.
- Em seguida, usa o mesmo exemplo da especificação, mas usando uma sintaxe bonita que pode
ser recebida executando
stablehlo-opt
.
- Confira se os arquivos relacionados à implementação da verificação e das restrições de inferência
de tipo seguem as diretrizes mencionadas abaixo:
- Siga a diretriz 1 para StablehloOps.td.
- Siga a diretriz 2 para TypeInference.cpp e StablehloOps.cpp.
- Siga a diretriz no 5 para ops_stablehlo.mlir.
- Siga a diretriz no 6 para infer_stablehlo.mlir.