Stan stabilnej HLO

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