Stabiler HLO-Status

Beim Bootstrapping von StableHLO von MHLO haben wir die Implementierung von MHLO von vielen Aspekten übernommen, einschließlich der Quelltextformatierung, der Verifizierung und der Forminferenz. Daher wird das Opset bereits umfassend abgedeckt. Es gibt jedoch noch viel zu tun, um die vorhandenen Implementierungen auf Vollständigkeit zu überprüfen und neue Implementierungen bereitzustellen, falls keine vorhanden sind.

Dieses Live-Dokument ist für Entwickler und Nutzer gedacht, um den Fortschritt in verschiedenen Aspekten des Vorgangs zu verfolgen: Spezifikation, Überprüfung, Typinferenz, Pretty Print, Interpreter usw.

Verwendung

Der Fortschritt eines StableHLO-Vorgangs, wie in der entsprechenden Zeile erwähnt, bei einem bestimmten Aspekt, wie in der entsprechenden Spalte erwähnt, wird mit einem der folgenden Tracking-Labels verfolgt.

  • Generische Labels
    • Ja: Es gibt eine umfassende Implementierung.
    • no: Es gibt keine Implementierung, aber die Arbeit daran ist Teil der Roadmap. Beachten Sie, dass „Verifier“ nie mit „Nein“ gekennzeichnet werden kann, da die ODS bereits einige Verifizierungen implementiert.
  • Benutzerdefinierte Labels für Verifizierer und Typinferenz
    • yes: Es gibt eine Implementierung, die mit der StableHLO-Semantik synchronisiert ist.
    • yes*: Es gibt eine Implementierung, die mit der XLA-Semantik synchron ist. Da die XLA-Semantik oft unzureichend dokumentiert ist, verwenden wir hlo_verifier.cc und shape_inference.cc als Referenz.
    • revisit: Es gibt eine Implementierung, die jedoch weder unter „ja“ noch „ja*“ fällt – entweder weil wir sie noch nicht geprüft haben oder weil wir Probleme gefunden haben.
    • unfeasible (nicht möglich): Eine Implementierung ist nicht möglich. Beispielsweise kann der Ergebnistyp eines Vorgangs nicht aus seinen Operanden und Attributen abgeleitet werden.

Status

Stabile HLO-Operation Spezifikation Überprüfung Typinferenz Quelltextformatierung Interpreter
abs Ja Ja Ja Ja Ja
Hinzufügen Ja Ja Ja Ja Ja
after_all Ja Ja Ja Ja Ja
all_gather Ja erneut aufrufen Nein Nein Ja
all_reduce Ja erneut aufrufen Ja Nein Ja
all_to_all Ja erneut aufrufen Ja Nein Ja
sowie Ja Ja Ja Ja Ja
atan2 Ja Ja Ja Ja Ja
batch_norm_grad Ja erneut aufrufen Ja Nein erneut aufrufen
batch_norm_inference Ja erneut aufrufen Ja Nein erneut aufrufen
batch_norm_training Ja erneut aufrufen Ja Nein erneut aufrufen
bitcast_convert Ja Ja nicht umsetzbar Ja Ja
Nachricht an alle Nein ja* ja* Ja erneut aufrufen
broadcast_in_dim Ja Ja nicht umsetzbar Ja Ja
Supportanfrage Ja erneut aufrufen Ja Nein Ja
CBRT Ja Ja Ja Ja Ja
Ceil Ja Ja Ja Ja Ja
Cholesky Ja Ja Ja Ja erneut aufrufen
einschränken Ja erneut aufrufen Ja Ja Ja
collective_permute Ja erneut aufrufen Ja Nein Ja
Nutzer*innen Ja Ja Ja Ja Ja
komplex Ja Ja Ja Ja Ja
compute_reshape_shape Nein erneut aufrufen Nein Ja Nein
concatenate Ja Ja Ja Ja Ja
Konstante Ja Ja Ja Ja Ja
eine Conversion ausführen Ja Ja nicht umsetzbar Ja Ja
Faltung Ja Ja nicht umsetzbar erneut aufrufen Nein
Kosinus Ja Ja Ja Ja Ja
count_leading_zeros Ja Ja Ja Ja Ja
create_token Nein ja* ja* Ja erneut aufrufen
Replikat-Summe Nein erneut aufrufen ja* Nein erneut aufrufen
cstr_reshapable Nein erneut aufrufen Nein Ja Nein
custom_call Ja Ja nicht umsetzbar Ja Ja
Dividieren Ja Ja Ja Ja Ja
Punkt Nein erneut aufrufen nicht umsetzbar Ja erneut aufrufen
dot_general Ja erneut aufrufen nicht umsetzbar Nein Ja
dynamic_broadcast_in_dim Nein erneut aufrufen nicht umsetzbar Nein Nein
dynamic_conv Nein erneut aufrufen Nein Nein Nein
dynamic_gather Nein erneut aufrufen erneut aufrufen Nein Nein
dynamic_iota Nein erneut aufrufen nicht umsetzbar Ja Nein
dynamic_pad Nein erneut aufrufen Nein Ja Nein
dynamic_reshape Nein erneut aufrufen nicht umsetzbar Ja Nein
dynamic_slice Ja Ja Ja Ja Ja
dynamic_update_slice Ja Ja Ja Ja Ja
einsum Nein erneut aufrufen Nein Ja erneut aufrufen
Exponentialfunktionen Ja Ja Ja Ja Ja
exponential_minus_one Ja Ja Ja Ja Ja
fft Ja erneut aufrufen Ja Ja Nein
Etage Ja Ja Ja Ja Ja
sammeln Ja Ja Ja Nein Ja
get_dimension_size Ja Ja Ja Ja Ja
get_tuple_element Ja Ja Ja Ja Ja
if Ja erneut aufrufen Ja Nein Ja
Bild Ja Ja Ja Ja Ja
Einspeisung Ja Ja nicht umsetzbar Nein Ja
Iota Ja Ja nicht umsetzbar Ja Ja
is_finite Ja Ja Ja Ja Ja
log Ja Ja Ja Ja Ja
log_plus_one Ja Ja Ja Ja Ja
Logistik Ja Ja Ja Ja Ja
Karte Ja erneut aufrufen Ja Nein Ja
Maximum Ja Ja Ja Ja Ja
Minimum Ja Ja Ja Ja Ja
Multiplizieren Ja Ja Ja Ja Ja
negate Ja Ja Ja Ja Ja
nicht Ja Ja Ja Ja Ja
optimization_barrier Ja Ja Ja Ja Ja
oder Ja Ja Ja Ja Ja
Outfeed Ja Ja Ja Nein Ja
Feld Ja Ja Ja Ja Ja
partition_id Ja Ja Ja Ja Ja
Popcnt Ja Ja Ja Ja Ja
Leistung Ja Ja Ja Ja Ja
real Ja Ja Ja Ja Ja
real_dynamic_slice Nein erneut aufrufen Nein Ja Nein
Recv Ja Ja nicht umsetzbar Nein Ja
reduce Ja erneut aufrufen Ja erneut aufrufen Ja
reduce_precision Ja Ja Ja Ja Ja
reduce_scatter Ja erneut aufrufen Nein Nein Ja
reduce_window Ja erneut aufrufen Ja Nein Ja
Rest Ja Ja Ja Ja Ja
replica_id Ja Ja Ja Ja Ja
Form ändern Ja Ja nicht umsetzbar Ja Ja
return Nein erneut aufrufen nicht umsetzbar Ja Ja
reverse Ja Ja Ja Ja Ja
RNG Ja Ja Ja Ja erneut aufrufen
rng_bit_generator Ja erneut aufrufen nicht umsetzbar Ja erneut aufrufen
round_nearest_afz Ja Ja Ja Ja Ja
round_nearest_even Ja Ja Ja Ja Ja
RSS Ja Ja Ja Ja Ja
scatter Ja erneut aufrufen Ja Nein Ja
auswählen Ja Ja Ja Ja Ja
select_and_scatter Ja erneut aufrufen Ja Nein Ja
Senden Ja Ja Ja Nein Ja
set_dimension_size Nein ja* ja* Ja Nein
shift_left Ja Ja Ja Ja Ja
shift_right_arithmetic Ja Ja Ja Ja Ja
shift_right_logical Ja Ja Ja Ja Ja
Signieren Ja Ja Ja Ja Ja
Sinus Ja Ja Ja Ja Ja
Slice Ja Ja Ja Nein Ja
sort Ja Ja Ja Nein Ja
sqrt Ja Ja Ja Ja Ja
subtract Ja Ja Ja Ja Ja
Tanh Ja Ja Ja Ja Ja
torch_index_select Nein erneut aufrufen Nein Nein erneut aufrufen
trace Nein erneut aufrufen Nein Ja erneut aufrufen
Transponieren Ja Ja Ja Ja Ja
triangular_solve Ja erneut aufrufen Ja Nein erneut aufrufen
tuple Ja Ja Ja Ja Ja
unary_einsum Nein erneut aufrufen Nein Ja erneut aufrufen
uniform_dequantize Ja Ja Ja Ja Nein
uniform_quantize Ja erneut aufrufen nicht umsetzbar Ja Nein
während Ja erneut aufrufen Ja erneut aufrufen Ja
Xor Ja Ja Ja Ja Ja