Przy wczytywaniu StableHLO z MHLO odziedziczyliśmy wdrożenie w MHLO wielu elementów, w tym preprinting, weryfikację i wnioskowanie o kształtach. Dzięki temu mamy już sporo informacji na temat omawianego problemu, ale mamy jeszcze wiele do zrobienia, aby sprawdzić kompletność istniejących implementacji i wdrożyć nowe, których nie ma.
Ten opublikowany dokument jest przeznaczony dla programistów i użytkowników do śledzenia postępów w różnych aspektach działań, takich jak specyfikacja, weryfikacja, wnioskowanie o typie, formatowanie, tłumaczenie itp.
Jak używać tej funkcji
Postęp operacji w StableHLO, o którym wspomniano w odpowiednim wierszu, w określonym aspekcie, jak wspomniano w odpowiedniej kolumnie, jest śledzony przy użyciu jednej z poniższych etykiet śledzenia.
- Etykiety ogólne
- yes: istnieje kompleksowa implementacja.
- nie: nie ma implementacji, ale praca nad tym jest częścią planu. Pamiętaj, że weryfikatora nie można oznaczyć jako „nie”, ponieważ ODS wdrożył już metodę weryfikacji.
- Niestandardowe etykiety na potrzeby weryfikatora i wnioskowania typu
- yes: istnieje implementacja, która jest zsynchronizowana z semanką StableHLO.
- yes*: istnieje implementacja, która jest zsynchronizowana z semantyką XLA. Ponieważ semantyka XLA jest często niedostatecznie udokumentowana, jako odwołania używamy plików hlo_verifier.cc i shape_inference.cc.
- powtórka: istnieje implementacja, ale nie można na nią odpowiedzieć „tak” ani „tak*” – nie dlatego, że jeszcze jej nie sprawdziliśmy, albo dlatego, że znaleźliśmy problemy.
- niemożliwe: nie ma implementacji, ponieważ jest niemożliwe. Dotyczy to na przykład tego, że typ wyniku operacji nie może być wywnioskowany z jego operandów i atrybutów.
Stan
Operacja StableHLO | Specyfikacja | Weryfikacja | Wnioskowanie typu | Upiększenie | Interpreter |
---|---|---|---|---|---|
abs | tak | tak | tak | tak | tak |
dodaj | tak | tak | tak | tak | tak |
after_all | tak | tak | tak | tak | tak |
all_gather | tak | sprawdź ponownie | nie | nie | tak |
all_reduce | tak | sprawdź ponownie | tak | nie | tak |
all_to_all | tak | sprawdź ponownie | tak | nie | tak |
i | tak | tak | tak | tak | tak |
atan2 | tak | tak | tak | tak | tak |
batch_norm_grad | tak | sprawdź ponownie | tak | nie | sprawdź ponownie |
batch_norm_inference | tak | sprawdź ponownie | tak | nie | sprawdź ponownie |
batch_norm_training | tak | sprawdź ponownie | tak | nie | sprawdź ponownie |
bitcast_convert | tak | tak | niewykonalne | tak | tak |
komunikat | nie | tak* | tak* | tak | sprawdź ponownie |
broadcast_in_dim | tak | tak | niewykonalne | tak | tak |
zgłoszenie | tak | sprawdź ponownie | tak | nie | tak |
CBRT | tak | tak | tak | tak | tak |
Ceil | tak | tak | tak | tak | tak |
Cholesky | tak | tak | tak | tak | sprawdź ponownie |
ograniczać (zakres) | tak | sprawdź ponownie | tak | tak | tak |
collective_permute | tak | sprawdź ponownie | tak | nie | tak |
porównaj | tak | tak | tak | tak | tak |
złożone | tak | tak | tak | tak | tak |
compute_reshape_shape | nie | sprawdź ponownie | nie | tak | nie |
concatenate | tak | tak | tak | tak | tak |
stała | tak | tak | tak | tak | tak |
dokonają konwersji | tak | tak | niewykonalne | tak | tak |
splot | tak | tak | niewykonalne | sprawdź ponownie | nie |
cosinus | tak | tak | tak | tak | tak |
count_leading_zeros | tak | tak | tak | tak | tak |
create_token | nie | tak* | tak* | tak | sprawdź ponownie |
suma-replikacji | nie | sprawdź ponownie | tak* | nie | sprawdź ponownie |
cstr_reshapable | nie | sprawdź ponownie | nie | tak | nie |
custom_call | tak | tak | niewykonalne | tak | tak |
dzielenie | tak | tak | tak | tak | tak |
kropka | nie | sprawdź ponownie | niewykonalne | tak | sprawdź ponownie |
dot_general | tak | sprawdź ponownie | niewykonalne | nie | tak |
dynamic_broadcast_in_dim | nie | sprawdź ponownie | niewykonalne | nie | nie |
dynamic_conv | nie | sprawdź ponownie | nie | nie | nie |
dynamic_gather | nie | sprawdź ponownie | sprawdź ponownie | nie | nie |
dynamic_iota | nie | sprawdź ponownie | niewykonalne | tak | nie |
dynamic_pad | nie | sprawdź ponownie | nie | tak | nie |
dynamic_reshape | nie | sprawdź ponownie | niewykonalne | tak | nie |
dynamic_slice | tak | tak | tak | tak | tak |
dynamic_update_slice | tak | tak | tak | tak | tak |
einsum | nie | sprawdź ponownie | nie | tak | sprawdź ponownie |
wykładniczo | tak | tak | tak | tak | tak |
exponential_minus_one | tak | tak | tak | tak | tak |
FFT | tak | sprawdź ponownie | tak | tak | nie |
piętro | tak | tak | tak | tak | tak |
zbierać | tak | tak | tak | nie | tak |
get_dimension_size | tak | tak | tak | tak | tak |
get_tuple_element | tak | tak | tak | tak | tak |
if | tak | sprawdź ponownie | tak | nie | tak |
Obraz | tak | tak | tak | tak | tak |
In-Feed | tak | tak | niewykonalne | nie | tak |
Iota | tak | tak | niewykonalne | tak | tak |
is_finite | tak | tak | tak | tak | tak |
log | tak | tak | tak | tak | tak |
log_plus_one | tak | tak | tak | tak | tak |
logistyka | tak | tak | tak | tak | tak |
mapa | tak | sprawdź ponownie | tak | nie | tak |
maksimum | tak | tak | tak | tak | tak |
minimum | tak | tak | tak | tak | tak |
mnożenie | tak | tak | tak | tak | tak |
usuń | tak | tak | tak | tak | tak |
nie | tak | tak | tak | tak | tak |
optimization_barrier | tak | tak | tak | tak | tak |
lub | tak | tak | tak | tak | tak |
Outfeed | tak | tak | tak | nie | tak |
pole do popisu | tak | tak | tak | tak | tak |
partition_id | tak | tak | tak | tak | tak |
Popcnt | tak | tak | tak | tak | tak |
moc | tak | tak | tak | tak | tak |
prawdziwy | tak | tak | tak | tak | tak |
real_dynamic_slice | nie | sprawdź ponownie | nie | tak | nie |
recv | tak | tak | niewykonalne | nie | tak |
zmniejsz | tak | sprawdź ponownie | tak | sprawdź ponownie | tak |
reduce_precision | tak | tak | tak | tak | tak |
reduce_scatter | tak | sprawdź ponownie | nie | nie | tak |
reduce_window | tak | sprawdź ponownie | tak | nie | tak |
reszta | tak | tak | tak | tak | tak |
replica_id | tak | tak | tak | tak | tak |
zmieniać kształt | tak | tak | niewykonalne | tak | tak |
return | nie | sprawdź ponownie | niewykonalne | tak | tak |
odwróć | tak | tak | tak | tak | tak |
Rng | tak | tak | tak | tak | sprawdź ponownie |
rng_bit_generator | tak | sprawdź ponownie | niewykonalne | tak | sprawdź ponownie |
round_nearest_afz | tak | tak | tak | tak | tak |
round_nearest_even | tak | tak | tak | tak | tak |
rsqrt | tak | tak | tak | tak | tak |
scatter | tak | sprawdź ponownie | tak | nie | tak |
wybierz | tak | tak | tak | tak | tak |
select_and_scatter | tak | sprawdź ponownie | tak | nie | tak |
wyślij | tak | tak | tak | nie | tak |
set_dimension_size | nie | tak* | tak* | tak | nie |
shift_left | tak | tak | tak | tak | tak |
shift_right_arithmetic | tak | tak | tak | tak | tak |
shift_right_logical | tak | tak | tak | tak | tak |
podpisywanie | tak | tak | tak | tak | tak |
sinus | tak | tak | tak | tak | tak |
wycinek | tak | tak | tak | nie | tak |
sortuj | tak | tak | tak | nie | tak |
sqrt | tak | tak | tak | tak | tak |
odejmowanie | tak | tak | tak | tak | tak |
Tanh | tak | tak | tak | tak | tak |
torch_index_select | nie | sprawdź ponownie | nie | nie | sprawdź ponownie |
trace | nie | sprawdź ponownie | nie | tak | sprawdź ponownie |
transponować | tak | tak | tak | tak | tak |
triangular_solve | tak | sprawdź ponownie | tak | nie | sprawdź ponownie |
tuple | tak | tak | tak | tak | tak |
unary_einsum | nie | sprawdź ponownie | nie | tak | sprawdź ponownie |
uniform_dequantize | tak | tak | tak | tak | nie |
uniform_quantize | tak | sprawdź ponownie | niewykonalne | tak | nie |
podczas | tak | sprawdź ponownie | tak | sprawdź ponownie | tak |
XOR | tak | tak | tak | tak | tak |