État StableHLO

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