Lors de l'amorçage de StableHLO à partir de MHLO, nous avons hérité de l'implémentation de MHLO pour de nombreux éléments, y compris l'impression élégante, la vérification et l'inférence de forme. Grâce à cela, nous disposons déjà d'une couverture significative de l'opération, mais il reste encore beaucoup à faire pour vérifier l'exhaustivité des implémentations existantes et fournir de nouvelles implémentations lorsqu'il n'en existe aucune.
Ce document en ligne permet aux développeurs et aux utilisateurs de suivre l'état d'avancement de divers aspects de l'opération : spécifications, vérification, inférence de type, impression élégante, interprète, etc.
Comment l'utiliser ?
La progression d'une opération StableHLO, comme indiqué dans la ligne correspondante, sur un aspect particulier, comme indiqué dans la colonne correspondante, est suivie à l'aide de l'un des libellés de suivi suivants.
- Étiquettes génériques
- yes: la mise en œuvre est complète.
- no: il n'y a pas d'implémentation, mais l'élaboration de ce plan fait partie de la feuille de route. Notez que l'option "Verifier" ne peut jamais être associée à la valeur "no", car l'ODS implémente déjà certaines vérifications.
- Libellés personnalisés pour le vérificateur et l'inférence de type
- yes: il existe une implémentation qui est synchronisée avec la sémantique StableHLO.
- yes*: il existe une implémentation qui est synchronisée avec la sémantique XLA. Étant donné que la sémantique XLA est souvent sous-documentée, nous utilisons hlo_verifier.cc et shape_inference.cc comme référence.
- revisit: il existe une implémentation, mais elle n'est associée à aucune option "oui" ou "oui*", soit parce que nous n'avons pas encore procédé à l'audit, soit parce que nous avons détecté et détecté des problèmes.
- infaisable (infaisable) : il n'y a pas d'implémentation, car c'est impossible. Par exemple, parce que le type de résultat d'une opération ne peut pas être déduit de ses opérandes et de ses attributs.
État
Opération StableHLO | Spécification | Validation | Inférence de type | Impression élégante | Interpréteur |
---|---|---|---|---|---|
abs | oui | oui | oui | oui | oui |
add | oui | oui | oui | oui | oui |
after_all | oui | oui | oui | oui | oui |
all_gather | oui | revoir | non | Non | oui |
all_reduce | oui | revoir | oui | non | oui |
all_to_all | oui | revoir | oui | non | oui |
et | oui | oui | oui | oui | oui |
atan2 | oui | oui | oui | oui | oui |
batch_norm_grad | oui | revoir | oui | non | revoir |
batch_norm_inference | oui | revoir | oui | non | revoir |
batch_norm_training | oui | revoir | oui | non | revoir |
bitcast_convert | oui | oui | infaisable | oui | oui |
annonce | non | oui* | oui* | oui | revoir |
broadcast_in_dim | oui | oui | infaisable | oui | oui |
demande | oui | revoir | oui | non | oui |
RTL | oui | oui | oui | oui | oui |
ceil | oui | oui | oui | oui | oui |
Cholesky | oui | oui | oui | oui | revoir |
limiter | oui | revoir | oui | oui | oui |
collective_permute | oui | revoir | oui | non | oui |
compare | oui | oui | oui | oui | oui |
complexe | oui | oui | oui | oui | oui |
compute_reshape_shape | non | revoir | non | oui | non |
concatenate | oui | oui | oui | oui | oui |
constante | oui | oui | oui | oui | oui |
d'effectuer une conversion | oui | oui | infaisable | oui | oui |
convolution | oui | oui | infaisable | revoir | non |
cosinus | oui | oui | oui | oui | oui |
count_leading_zeros | oui | oui | oui | oui | oui |
create_token | non | oui* | oui* | oui | revoir |
somme-multi-instances répliquées | non | revoir | oui* | non | revoir |
cstr_reshapable | non | revoir | non | oui | non |
custom_call | oui | oui | infaisable | oui | oui |
diviser | oui | oui | oui | oui | oui |
point | non | revoir | infaisable | oui | revoir |
dot_general | oui | revoir | infaisable | non | oui |
dynamic_broadcast_in_dim | non | revoir | infaisable | non | non |
dynamic_conv | non | revoir | non | non | non |
dynamic_gather | non | revoir | revoir | non | non |
dynamic_iota | non | revoir | infaisable | oui | non |
dynamic_pad | non | revoir | non | oui | non |
dynamic_reshape | non | revoir | infaisable | oui | non |
dynamic_slice | oui | oui | oui | oui | oui |
dynamic_update_slice | oui | oui | oui | oui | oui |
einsum | non | revoir | non | oui | revoir |
exponentiel | oui | oui | oui | oui | oui |
exponential_minus_one | oui | oui | oui | oui | oui |
FFT | oui | revoir | oui | oui | non |
floor | oui | oui | oui | oui | oui |
rassembler | oui | oui | oui | non | oui |
get_dimension_size | oui | oui | oui | oui | oui |
get_tuple_element | oui | oui | oui | oui | oui |
if | oui | revoir | oui | non | oui |
Imageg | oui | oui | oui | oui | oui |
flux d'entrée | oui | oui | infaisable | non | oui |
Ito | oui | oui | infaisable | oui | oui |
is_finite | oui | oui | oui | oui | oui |
log | oui | oui | oui | oui | oui |
log_plus_one | oui | oui | oui | oui | oui |
logistique | oui | oui | oui | oui | oui |
carte | oui | revoir | oui | non | oui |
maximum | oui | oui | oui | oui | oui |
minimum | oui | oui | oui | oui | oui |
multiplier | oui | oui | oui | oui | oui |
negate | oui | oui | oui | oui | oui |
(ne vivant pas | oui | oui | oui | oui | oui |
optimization_barrier | oui | oui | oui | oui | oui |
ou | oui | oui | oui | oui | oui |
flux de sortie | oui | oui | oui | non | oui |
pad | oui | oui | oui | oui | oui |
partition_id | oui | oui | oui | oui | oui |
Popcnt | oui | oui | oui | oui | oui |
puissance | oui | oui | oui | oui | oui |
real | oui | oui | oui | oui | oui |
real_dynamic_slice | non | revoir | non | oui | non |
recv | oui | oui | infaisable | non | oui |
reduce | oui | revoir | oui | revoir | oui |
reduce_precision | oui | oui | oui | oui | oui |
reduce_scatter | oui | revoir | non | Non | oui |
reduce_window | oui | revoir | oui | non | oui |
reste | oui | oui | oui | oui | oui |
replica_id | oui | oui | oui | oui | oui |
remodeler | oui | oui | infaisable | oui | oui |
return | non | revoir | infaisable | oui | oui |
reverse | oui | oui | oui | oui | oui |
rng | oui | oui | oui | oui | revoir |
rng_bit_generator | oui | revoir | infaisable | oui | revoir |
round_nearest_afz | oui | oui | oui | oui | oui |
round_nearest_even | oui | oui | oui | oui | oui |
rigueur | oui | oui | oui | oui | oui |
scatter | oui | revoir | oui | non | oui |
select | oui | oui | oui | oui | oui |
select_and_scatter | oui | revoir | oui | non | oui |
envoyer | oui | oui | oui | non | oui |
set_dimension_size | non | oui* | oui* | oui | non |
shift_left | oui | oui | oui | oui | oui |
shift_right_arithmetic | oui | oui | oui | oui | oui |
shift_right_logical | oui | oui | oui | oui | oui |
signe "=". | oui | oui | oui | oui | oui |
sinus | oui | oui | oui | oui | oui |
tranche | oui | oui | oui | non | oui |
sort | oui | oui | oui | non | oui |
sqrt | oui | oui | oui | oui | oui |
subtract | oui | oui | oui | oui | oui |
Tanh | oui | oui | oui | oui | oui |
torch_index_select | non | revoir | non | non | revoir |
trace | non | revoir | non | oui | revoir |
transposer | oui | oui | oui | oui | oui |
triangular_solve | oui | revoir | oui | non | revoir |
tuple | oui | oui | oui | oui | oui |
unary_einsum | non | revoir | non | oui | revoir |
uniform_dequantize | oui | oui | oui | oui | non |
uniform_quantize | oui | revoir | infaisable | oui | non |
alors que | oui | revoir | oui | revoir | oui |
Xor | oui | oui | oui | oui | oui |