Status StableHLO

Saat mem-bootstrap StableHLO dari MHLO, kami telah mewarisi implementasi MHLO dari banyak hal, termasuk prettyprinting, verifikasi, dan inferensi bentuk. Berkat itu, kami telah memiliki cakupan opset yang signifikan, tetapi masih banyak yang harus dilakukan untuk meninjau kelengkapan implementasi yang ada dan memberikan implementasi baru jika belum ada.

Dokumen live ini ditujukan bagi developer dan pengguna untuk melacak progres pada berbagai aspek opset - spesifikasi, verifikasi, inferensi jenis, pretty pencetakan, penafsir, dll.

Cara menggunakannya

Progres operasi StableHLO, seperti yang disebutkan di baris terkait, pada aspek tertentu, seperti yang disebutkan dalam kolom terkait, dilacak menggunakan salah satu label pelacakan berikut.

  • Label umum
    • yes: ada implementasi yang komprehensif.
    • tidak: tidak ada implementasinya, tetapi mengerjakannya adalah bagian dari roadmap. Perhatikan bahwa Pemverifikasi tidak akan pernah dapat diberi label "tidak" karena ODS sudah menerapkan beberapa verifikasi.
  • Label yang disesuaikan untuk Pemverifikasi dan Inferensi Jenis
    • yes: ada implementasi, dan disinkronkan dengan semantik SttableHLO.
    • yes*: terdapat implementasi, dan disinkronkan dengan semantik XLA. Karena semantik XLA sering kali kurang didokumentasikan, kami menggunakan hlo_verifier.cc dan shape_inference.cc sebagai referensi.
    • revisit: ada implementasi, tetapi tidak termasuk "yes" atau "yes*" - baik karena kita belum mengauditnya, atau karena kita telah menemukan masalah.
    • ineligibility: tidak ada implementasi karena tidak memungkinkan. Misalnya, karena jenis hasil suatu operasi tidak dapat disimpulkan dari operand dan atributnya.

Status

Operasi StabilHLO Spesifikasi Verifikasi Inferensi Jenis Percetakan Keren Interpreter
abs ya ya ya ya ya
add ya ya ya ya ya
after_all ya ya ya ya ya
all_gather ya lihat kembali tidak tidak ada ya
all_reduce ya lihat kembali ya tidak ya
all_to_all ya lihat kembali ya tidak ya
dan ya ya ya ya ya
atan2 ya ya ya ya ya
batch_norm_grad ya lihat kembali ya tidak lihat kembali
batch_norm_inference ya lihat kembali ya tidak lihat kembali
batch_norm_training ya lihat kembali ya tidak lihat kembali
bitcast_convert ya ya tidak layak ya ya
siaran tidak ya* ya* ya lihat kembali
broadcast_in_dim ya ya tidak layak ya ya
casing ya lihat kembali ya tidak ya
Cbrt ya ya ya ya ya
ceil ya ya ya ya ya
Cholesky ya ya ya ya lihat kembali
klem ya lihat kembali ya ya ya
collective_permute ya lihat kembali ya tidak ya
compare ya ya ya ya ya
kompleks ya ya ya ya ya
compute_reshape_shape tidak lihat kembali tidak ya tidak
concatenate ya ya ya ya ya
konstanta ya ya ya ya ya
melakukan konversi ya ya tidak layak ya ya
konvolusi ya ya tidak layak lihat kembali tidak
cosinus ya ya ya ya ya
count_leading_zeros ya ya ya ya ya
create_token tidak ya* ya* ya lihat kembali
penjumlahan replikasi silang tidak lihat kembali ya* tidak lihat kembali
cstr_reshapable tidak lihat kembali tidak ya tidak
custom_call ya ya tidak layak ya ya
bagi ya ya ya ya ya
titik tidak lihat kembali tidak layak ya lihat kembali
dot_general ya lihat kembali tidak layak tidak ya
dynamic_broadcast_in_dim tidak lihat kembali tidak layak tidak tidak
dynamic_conv tidak lihat kembali tidak tidak tidak
dynamic_gather tidak lihat kembali lihat kembali tidak tidak
dynamic_iota tidak lihat kembali tidak layak ya tidak
dynamic_pad tidak lihat kembali tidak ya tidak
dynamic_reshape tidak lihat kembali tidak layak ya tidak
dynamic_slice ya ya ya ya ya
dynamic_update_slice ya ya ya ya ya
einsum tidak lihat kembali tidak ya lihat kembali
berpangkat ya ya ya ya ya
exponential_minus_one ya ya ya ya ya
fft [ift] ya lihat kembali ya ya tidak
floor ya ya ya ya ya
mengumpulkan ya ya ya tidak ya
get_dimension_size ya ya ya ya ya
get_tuple_element ya ya ya ya ya
if ya lihat kembali ya tidak ya
gambar ya ya ya ya ya
dalam feed ya ya tidak layak tidak ya
Iota ya ya tidak layak ya ya
is_finite ya ya ya ya ya
log ya ya ya ya ya
log_plus_one ya ya ya ya ya
logistik ya ya ya ya ya
map ya lihat kembali ya tidak ya
maksimum ya ya ya ya ya
minimum ya ya ya ya ya
kalikan ya ya ya ya ya
negasi ya ya ya ya ya
bukan ya ya ya ya ya
optimization_barrier ya ya ya ya ya
atau ya ya ya ya ya
outfeed ya ya ya tidak ya
bantalan ya ya ya ya ya
partition_id ya ya ya ya ya
popcnt ya ya ya ya ya
daya ya ya ya ya ya
real ya ya ya ya ya
real_dynamic_slice tidak lihat kembali tidak ya tidak
diambil ya ya tidak layak tidak ya
reduce ya lihat kembali ya lihat kembali ya
reduce_precision ya ya ya ya ya
reduce_scatter ya lihat kembali tidak tidak ada ya
reduce_window ya lihat kembali ya tidak ya
sisa ya ya ya ya ya
replica_id ya ya ya ya ya
bentuk ulang ya ya tidak layak ya ya
return tidak lihat kembali tidak layak ya ya
reverse ya ya ya ya ya
RNG ya ya ya ya lihat kembali
rng_bit_generator ya lihat kembali tidak layak ya lihat kembali
round_nearest_afz ya ya ya ya ya
round_nearest_even ya ya ya ya ya
{i>rsqrt<i} ya ya ya ya ya
scatter ya lihat kembali ya tidak ya
pilih ya ya ya ya ya
select_and_scatter ya lihat kembali ya tidak ya
kirim ya ya ya tidak ya
set_dimension_size tidak ya* ya* ya tidak
shift_left ya ya ya ya ya
shift_right_arithmetic ya ya ya ya ya
shift_right_logical ya ya ya ya ya
tanda ya ya ya ya ya
sinus ya ya ya ya ya
slice ya ya ya tidak ya
sort ya ya ya tidak ya
sqrt ya ya ya ya ya
kurangi ya ya ya ya ya
Tanh ya ya ya ya ya
torch_index_select tidak lihat kembali tidak tidak lihat kembali
trace tidak lihat kembali tidak ya lihat kembali
{i>transpose<i} ya ya ya ya ya
triangular_solve ya lihat kembali ya tidak lihat kembali
tuple ya ya ya ya ya
unary_einsum tidak lihat kembali tidak ya lihat kembali
uniform_dequantize ya ya ya ya tidak
uniform_quantize ya lihat kembali tidak layak ya tidak
saat ya lihat kembali ya lihat kembali ya
Xor ya ya ya ya ya