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 |