Ao inicializar o StableHLO do MHLO, herdamos a implementação da MHLO de muitos elementos, incluindo estilização, verificação e inferência de formas. Por isso, já temos uma cobertura significativa da opset, mas ainda há muito o que fazer para analisar a integridade das implementações atuais e fornecer novas implementações quando não houver nenhuma.
Esse documento ativo é para que os desenvolvedores e os usuários acompanhem o progresso em vários aspectos da opset: especificação, verificação, inferência de tipo, impressão avançada, intérprete etc.
Como usar
O progresso de uma operação StableHLO, como mencionado na linha correspondente, em um aspecto específico, como mencionado na coluna correspondente, é rastreado com um dos rótulos de acompanhamento a seguir.
- Rótulos genéricos
- yes: há uma implementação abrangente.
- no: não há implementação, mas trabalhar nisso faz parte do roteiro. O verificador nunca pode ser rotulado como "não" porque o ODS já implementa alguma verificação.
- Rótulos personalizados para verificador e inferência de tipo
- yes: há uma implementação e ela está sincronizada com a semântica do StableHLO.
- yes*: há uma implementação e está sincronizada com a semântica do XLA. Como a semântica do XLA costuma ser subdocumentada, estamos usando hlo_verifier.cc e shape_inference.cc como referência.
- revisit: há uma implementação, mas não se enquadra em "sim" ou "sim*", seja porque ainda não a auditamos ou porque encontramos e encontramos problemas.
- inviável: não há implementação, porque é inviável. Por exemplo, porque o tipo de resultado de uma op não pode ser inferido de acordo com os operandos e atributos dela.
Status
Operação do StableHLO | Especificação | Verificação | Inferência de tipo | Impressão elegante | Intérprete |
---|---|---|---|---|---|
abs | sim | sim | sim | sim | sim |
adicionar | sim | sim | sim | sim | sim |
after_all | sim | sim | sim | sim | sim |
all_gather | sim | revisitar | não | não | sim |
all_reduce | sim | revisitar | sim | não | sim |
all_to_all | sim | revisitar | sim | não | sim |
e | sim | sim | sim | sim | sim |
atan2 | sim | sim | sim | sim | sim |
batch_norm_grad | sim | revisitar | sim | não | revisitar |
batch_norm_inference | sim | revisitar | sim | não | revisitar |
batch_norm_training | sim | revisitar | sim | não | revisitar |
bitcast_convert | sim | sim | inviável | sim | sim |
transmissão | não | sim* | sim* | sim | revisitar |
broadcast_in_dim | sim | sim | inviável | sim | sim |
caso | sim | revisitar | sim | não | sim |
CBRT | sim | sim | sim | sim | sim |
ceil | sim | sim | sim | sim | sim |
Cholesky | sim | sim | sim | sim | revisitar |
limitar | sim | revisitar | sim | sim | sim |
collective_permute | sim | revisitar | sim | não | sim |
compare | sim | sim | sim | sim | sim |
complexo | sim | sim | sim | sim | sim |
compute_reshape_shape | não | revisitar | não | sim | não |
concatenate | sim | sim | sim | sim | sim |
constante | sim | sim | sim | sim | sim |
fazer uma conversão | sim | sim | inviável | sim | sim |
convolução | sim | sim | inviável | revisitar | não |
cosseno | sim | sim | sim | sim | sim |
count_leading_zeros | sim | sim | sim | sim | sim |
create_token | não | sim* | sim* | sim | revisitar |
soma entre réplicas | não | revisitar | sim* | não | revisitar |
cstr_reshapable | não | revisitar | não | sim | não |
custom_call | sim | sim | inviável | sim | sim |
dividir | sim | sim | sim | sim | sim |
ponto | não | revisitar | inviável | sim | revisitar |
dot_general | sim | revisitar | inviável | não | sim |
dynamic_broadcast_in_dim | não | revisitar | inviável | não | não |
dynamic_conv | não | revisitar | não | não | não |
dynamic_gather | não | revisitar | revisitar | não | não |
dynamic_iota | não | revisitar | inviável | sim | não |
dynamic_pad | não | revisitar | não | sim | não |
dynamic_reshape | não | revisitar | inviável | sim | não |
dynamic_slice | sim | sim | sim | sim | sim |
dynamic_update_slice | sim | sim | sim | sim | sim |
einsum | não | revisitar | não | sim | revisitar |
exponencial | sim | sim | sim | sim | sim |
exponential_minus_one | sim | sim | sim | sim | sim |
fft | sim | revisitar | sim | sim | não |
floor | sim | sim | sim | sim | sim |
reunir | sim | sim | sim | não | sim |
get_dimension_size | sim | sim | sim | sim | sim |
get_tuple_element | sim | sim | sim | sim | sim |
if | sim | revisitar | sim | não | sim |
Imagem | sim | sim | sim | sim | sim |
entrada | sim | sim | inviável | não | sim |
Iota | sim | sim | inviável | sim | sim |
is_finite | sim | sim | sim | sim | sim |
log | sim | sim | sim | sim | sim |
log_plus_one | sim | sim | sim | sim | sim |
logística | sim | sim | sim | sim | sim |
mapa | sim | revisitar | sim | não | sim |
máximo | sim | sim | sim | sim | sim |
mínimo | sim | sim | sim | sim | sim |
multiplicar | sim | sim | sim | sim | sim |
negate | sim | sim | sim | sim | sim |
não | sim | sim | sim | sim | sim |
optimization_barrier | sim | sim | sim | sim | sim |
ou | sim | sim | sim | sim | sim |
saída | sim | sim | sim | não | sim |
bloco | sim | sim | sim | sim | sim |
partition_id | sim | sim | sim | sim | sim |
Popcnt | sim | sim | sim | sim | sim |
potência | sim | sim | sim | sim | sim |
real | sim | sim | sim | sim | sim |
real_dynamic_slice | não | revisitar | não | sim | não |
recv | sim | sim | inviável | não | sim |
reduce | sim | revisitar | sim | revisitar | sim |
reduce_precision | sim | sim | sim | sim | sim |
reduce_scatter | sim | revisitar | não | não | sim |
reduce_window | sim | revisitar | sim | não | sim |
restante | sim | sim | sim | sim | sim |
replica_id | sim | sim | sim | sim | sim |
remodelar | sim | sim | inviável | sim | sim |
return | não | revisitar | inviável | sim | sim |
anular | sim | sim | sim | sim | sim |
rm | sim | sim | sim | sim | revisitar |
rng_bit_generator | sim | revisitar | inviável | sim | revisitar |
round_nearest_afz | sim | sim | sim | sim | sim |
round_nearest_even | sim | sim | sim | sim | sim |
rsqrt | sim | sim | sim | sim | sim |
scatter | sim | revisitar | sim | não | sim |
select | sim | sim | sim | sim | sim |
select_and_scatter | sim | revisitar | sim | não | sim |
send | sim | sim | sim | não | sim |
set_dimension_size | não | sim* | sim* | sim | não |
shift_left | sim | sim | sim | sim | sim |
shift_right_arithmetic | sim | sim | sim | sim | sim |
shift_right_logical | sim | sim | sim | sim | sim |
de igual. | sim | sim | sim | sim | sim |
seno | sim | sim | sim | sim | sim |
slice | sim | sim | sim | não | sim |
sort | sim | sim | sim | não | sim |
sqrt | sim | sim | sim | sim | sim |
subtract | sim | sim | sim | sim | sim |
Tanh | sim | sim | sim | sim | sim |
torch_index_select | não | revisitar | não | não | revisitar |
trace | não | revisitar | não | sim | revisitar |
transpor | sim | sim | sim | sim | sim |
triangular_solve | sim | revisitar | sim | não | revisitar |
tuple | sim | sim | sim | sim | sim |
unary_einsum | não | revisitar | não | sim | revisitar |
uniform_dequantize | sim | sim | sim | sim | não |
uniform_quantize | sim | revisitar | inviável | sim | não |
enquanto | sim | revisitar | sim | revisitar | sim |
Xor | sim | sim | sim | sim | sim |