透過 MHLO 啟動 StableHLO 時,我們繼承了 MHLO 的許多實作項目,包括美化排版、驗證和形狀推論。有鑑於此,我們已提供大量的運算技術,但還有很多機會來檢查現有的實作內容是否完整,並在不存在的地方提供新的實作內容。
這份即時文件可讓開發人員和使用者追蹤各種操作集的進度,例如規格、驗證、類型推論、美化排版、解譯等。
使用方式
如對應欄中所說,在對應資料列中提到的 StableHLO 運算進度,會使用下列其中一種追蹤標籤進行追蹤。
- 一般標籤
- 是:有完善的導入方法。
- no:應用程式未提供實作,但我們正努力進行,這屬於發展藍圖的一部分。請注意,驗證器永遠不得加上「no」標籤,因為 ODS 已導入部分驗證程序。
- 驗證者和類型推論的自訂標籤
- yes:有一個實作項目,而且會與 StableHLO 語意保持同步。
- yes*:已有實作,且會與 XLA 語意保持同步。XLA 語意通常是未記載的,因此我們使用 hlo_verifier.cc 和 shape_inference.cc 做為參考。
- revisit:有實作程序,但並未歸類到「是」或「是*」,原因可能在於我們尚未稽核,或是系統偵測到問題。
- 不可行:沒有實作,因為不可能。舉例來說,因為系統無法根據運算元和屬性推論運算的結果類型。
狀態
結構定義 | 規格 | 驗證 | 型別推斷 | 美化印刷 | 翻譯模式 |
---|---|---|---|---|---|
abs | 是 | 是 | 是 | 是 | 是 |
add | 是 | 是 | 是 | 是 | 是 |
after_all | 是 | 是 | 是 | 是 | 是 |
all_gather | 是 | 再次瀏覽 | 否 | 否 | 是 |
all_reduce | 是 | 再次瀏覽 | 是 | 否 | 是 |
all_to_all | 是 | 再次瀏覽 | 是 | 否 | 是 |
和 | 是 | 是 | 是 | 是 | 是 |
atan2 | 是 | 是 | 是 | 是 | 是 |
batch_norm_grad | 是 | 再次瀏覽 | 是 | 否 | 再次瀏覽 |
batch_norm_inference | 是 | 再次瀏覽 | 是 | 否 | 再次瀏覽 |
batch_norm_training | 是 | 再次瀏覽 | 是 | 否 | 再次瀏覽 |
bitcast_convert | 是 | 是 | 不可行 | 是 | 是 |
廣播訊息 | 否 | 是* | 是* | 是 | 再次瀏覽 |
broadcast_in_dim | 是 | 是 | 不可行 | 是 | 是 |
客服案件 | 是 | 再次瀏覽 | 是 | 否 | 是 |
哭泣 | 是 | 是 | 是 | 是 | 是 |
Cil | 是 | 是 | 是 | 是 | 是 |
Cholesky | 是 | 是 | 是 | 是 | 再次瀏覽 |
限制取值範圍 | 是 | 再次瀏覽 | 是 | 是 | 是 |
collective_broadcast | 是 | 再次瀏覽 | 是 | 否 | 是 |
collective_permute | 是 | 再次瀏覽 | 是 | 否 | 是 |
compare | 是 | 是 | 是 | 是 | 是 |
複雜 | 是 | 是 | 是 | 是 | 是 |
複合 | 是 | 是 | 不可行 | 是 | 是 |
concatenate | 是 | 是 | 是 | 是 | 是 |
常數 | 是 | 是 | 是 | 是 | 是 |
完成轉換 | 是 | 是 | 不可行 | 是 | 是 |
卷積 | 是 | 是 | 不可行 | 再次瀏覽 | 是 |
餘弦 | 是 | 是 | 是 | 是 | 是 |
count_leading_zeros | 是 | 是 | 是 | 是 | 是 |
create_token | 否 | 是* | 是* | 是 | 再次瀏覽 |
跨備用資源-總和 | 否 | 再次瀏覽 | 是* | 否 | 再次瀏覽 |
custom_call | 是 | 是 | 不可行 | 是 | 是 |
除 | 是 | 是 | 是 | 是 | 是 |
點號 | 否 | 再次瀏覽 | 不可行 | 是 | 再次瀏覽 |
dot_general | 是 | 再次瀏覽 | 不可行 | 否 | 是 |
dynamic_broadcast_in_dim | 是 | 是 | 不可行 | 是 | 再次瀏覽 |
dynamic_conv | 是 | 是 | 不可行 | 再次瀏覽 | 再次瀏覽 |
dynamic_gather | 是 | 是 | 不可行 | 否 | 再次瀏覽 |
dynamic_iota | 是 | 是 | 不可行 | 是 | 再次瀏覽 |
dynamic_pad | 是 | 是 | 不可行 | 是 | 再次瀏覽 |
dynamic_reshape | 是 | 是 | 不可行 | 是 | 再次瀏覽 |
dynamic_slice | 是 | 是 | 是 | 是 | 是 |
dynamic_update_slice | 是 | 是 | 是 | 是 | 是 |
einsum | 否 | 再次瀏覽 | 否 | 是 | 再次瀏覽 |
指數 | 是 | 是 | 是 | 是 | 是 |
exponential_minus_one | 是 | 是 | 是 | 是 | 是 |
夫特 | 是 | 再次瀏覽 | 是 | 是 | 否 |
floor | 是 | 是 | 是 | 是 | 是 |
收集 | 是 | 是 | 是 | 否 | 是 |
get_dimension_size | 是 | 是 | 是 | 是 | 是 |
get_tuple_element | 是 | 是 | 是 | 是 | 是 |
if | 是 | 再次瀏覽 | 是 | 否 | 是 |
圖片 | 是 | 是 | 是 | 是 | 是 |
動態內廣告 | 是 | 是 | 不可行 | 否 | 是 |
Iota | 是 | 是 | 不可行 | 是 | 是 |
is_finite | 是 | 是 | 是 | 是 | 是 |
紀錄/記錄檔 | 是 | 是 | 是 | 是 | 是 |
log_plus_one | 是 | 是 | 是 | 是 | 是 |
物流 | 是 | 是 | 是 | 是 | 是 |
地圖 | 是 | 再次瀏覽 | 是 | 否 | 是 |
最高 | 是 | 是 | 是 | 是 | 是 |
最低 | 是 | 是 | 是 | 是 | 是 |
相乘 | 是 | 是 | 是 | 是 | 是 |
negate | 是 | 是 | 是 | 是 | 是 |
不是 | 是 | 是 | 是 | 是 | 是 |
optimization_barrier | 是 | 是 | 是 | 是 | 是 |
或 | 是 | 是 | 是 | 是 | 是 |
Outfeed | 是 | 是 | 是 | 否 | 是 |
墊片 | 是 | 是 | 是 | 是 | 是 |
partition_id | 是 | 是 | 是 | 是 | 是 |
Popcnt | 是 | 是 | 是 | 是 | 是 |
功率 | 是 | 是 | 是 | 是 | 是 |
real | 是 | 是 | 是 | 是 | 是 |
real_dynamic_slice | 否 | 再次瀏覽 | 否 | 是 | 否 |
最佳化建議 | 是 | 是 | 不可行 | 否 | 是 |
減少 | 是 | 再次瀏覽 | 是 | 再次瀏覽 | 是 |
reduce_precision | 是 | 是 | 是 | 是 | 是 |
reduce_scatter | 是 | 再次瀏覽 | 否 | 否 | 是 |
reduce_window | 是 | 再次瀏覽 | 是 | 否 | 是 |
餘數 | 是 | 是 | 是 | 是 | 是 |
replica_id | 是 | 是 | 是 | 是 | 是 |
Reshape | 是 | 是 | 不可行 | 是 | 是 |
return | 否 | 再次瀏覽 | 不可行 | 是 | 是 |
反向排序 | 是 | 是 | 是 | 是 | 是 |
原始 | 是 | 是 | 是 | 是 | 再次瀏覽 |
rng_bit_generator | 是 | 再次瀏覽 | 不可行 | 是 | 再次瀏覽 |
round_nearest_afz | 是 | 是 | 是 | 是 | 是 |
round_nearest_even | 是 | 是 | 是 | 是 | 是 |
rsqrt | 是 | 是 | 是 | 是 | 是 |
scatter | 是 | 再次瀏覽 | 是 | 否 | 是 |
選取 | 是 | 是 | 是 | 是 | 是 |
select_and_scatter | 是 | 再次瀏覽 | 是 | 否 | 是 |
傳送 | 是 | 是 | 是 | 否 | 是 |
set_dimension_size | 否 | 是* | 是* | 是 | 否 |
shift_left | 是 | 是 | 是 | 是 | 是 |
shift_right_arithmetic | 是 | 是 | 是 | 是 | 是 |
shift_right_logical | 是 | 是 | 是 | 是 | 是 |
簽署 | 是 | 是 | 是 | 是 | 是 |
正弦 | 是 | 是 | 是 | 是 | 是 |
配量 | 是 | 是 | 是 | 否 | 是 |
排序 | 是 | 是 | 是 | 否 | 是 |
sqrt | 是 | 是 | 是 | 是 | 是 |
subtract | 是 | 是 | 是 | 是 | 是 |
棕褐色 | 是 | 是 | 是 | 是 | 是 |
torch_index_select | 否 | 再次瀏覽 | 否 | 否 | 再次瀏覽 |
轉置 | 是 | 是 | 是 | 是 | 是 |
triangular_solve | 是 | 再次瀏覽 | 是 | 否 | 再次瀏覽 |
tuple | 是 | 是 | 是 | 是 | 是 |
unary_einsum | 否 | 再次瀏覽 | 否 | 是 | 再次瀏覽 |
uniform_dequantize | 是 | 是 | 是 | 是 | 否 |
uniform_quantize | 是 | 再次瀏覽 | 不可行 | 是 | 否 |
期間 | 是 | 再次瀏覽 | 是 | 再次瀏覽 | 是 |
Xor | 是 | 是 | 是 | 是 | 是 |
量化運算的型別推論
上表的 Type Inference
欄主要用於非量化作業。在大部分的量化運算中,結果類型的量化參數可能與運算元不同,因此無法推論結果類型。除了「few」與 {1, 2, 3}/ 2, 3}/ 2, 3}/ 2, 3}/ 2, 3}/ 2, 3}/ 2, 2, 3}/7}/7}/7}/7all_gather
all_to_all
case
collective_permute
compare
concatenate
constant
dynamic_slice
dynamic_update_slice
gather
get_tuple_element
if
infeed
is_finite
map
optimization_barrier
outfeed
pad
recv
reduce
reduce_scatter
reduce_window
reverse
scatter
select_and_scatter
send
slice
sort
transpose
tuple
uniform_dequantized
while