StableHLO 状态

从 MHLO 引导 StableHLO 时,我们继承了 MHLO 的许多功能实现,包括美观打印、验证和形状推理。因此,我们已经充分涵盖相应操作集,但仍有许多工作要检查现有实现的完整性,并提供不存在任何新实现的新实现。

此实时文档供开发者和用户跟踪操作集各个方面(规范、验证、类型推断、美观打印、解释器等)的进度。

使用方法

如相应行中提到的,SableHLO 操作在特定方面(如相应列中所述)的进度通过以下跟踪标签之一进行跟踪。

  • 通用标签
    • yes:实现了全面的实现。
    • no:不需要实施,但实施工作是路线图的一部分。 请注意,验证程序永远不能标记为“否”,因为 ODS 已实现一些验证。
  • 验证程序和类型推断的自定义标签
    • yes:存在实现,并且与 StableHLO 语义同步。
    • yes*:存在实现,并且与 XLA 语义同步。由于 XLA 语义经常缺乏文档文档,因此我们使用 hlo_verifier.cc 和 shape_inference.cc 作为参考。
    • 重新审视:存在某个实现,但它不在“是”或“是*”之下,要么是因为我们尚未对其进行审核,要么是因为我们发现并发现了问题。
    • infeasible:没有实现,因为这种做法不可行。 例如,由于无法根据操作数和属性推断出操作的结果类型。

状态

StableHLO 运算 规范 验证 类型推断 美观输出 口译
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 是 是 不可行 是 是
场景 是 重温 是 否 是
cbrt 是 是 是 是 是
ceil 是 是 是 是 是
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 是 是 是 是 是
FFT 是 重温 是 是 否
楼层 是 是 是 是 是
收集 是 是 是 否 是
get_dimension_size 是 是 是 是 是
get_tuple_element 是 是 是 是 是
if 是 重温 是 否 是
图片 是 是 是 是 是
信息流 是 是 不可行 否 是
Iota 是 是 不可行 是 是
is_finite 是 是 是 是 是
日志 是 是 是 是 是
log_plus_one 是 是 是 是 是
物流 是 是 是 是 是
map 是 重温 是 否 是
最大值 是 是 是 是 是
最小值 是 是 是 是 是
相乘 是 是 是 是 是
negate 是 是 是 是 是
非 是 是 是 是 是
optimization_barrier 是 是 是 是 是
或 是 是 是 是 是
主动馈送 是 是 是 否 是
垫子 是 是 是 是 是
partition_id 是 是 是 是 是
弹出 是 是 是 是 是
幂数 是 是 是 是 是
real 是 是 是 是 是
real_dynamic_slice 否 重温 否 是 否
接收 是 是 不可行 否 是
reduce 是 重温 是 重温 是
reduce_precision 是 是 是 是 是
reduce_scatter 是 重温 否 否 是
reduce_window 是 重温 是 否 是
余数 是 是 是 是 是
replica_id 是 是 是 是 是
调整形状 是 是 不可行 是 是
return 否 重温 不可行 是 是
reverse 是 是 是 是 是
rng 是 是 是 是 重温
rng_bit_generator 是 重温 不可行 是 重温
round_nearest_afz 是 是 是 是 是
round_nearest_even 是 是 是 是 是
rsqrt 是 是 是 是 是
scatter 是 重温 是 否 是
select 是 是 是 是 是
select_and_scatter 是 重温 是 否 是
send 是 是 是 否 是
set_dimension_size 否 是* 是* 是 否
shift_left 是 是 是 是 是
shift_right_arithmetic 是 是 是 是 是
shift_right_logical 是 是 是 是 是
签名 是 是 是 是 是
正弦 是 是 是 是 是
slice 是 是 是 否 是
sort 是 是 是 否 是
sqrt 是 是 是 是 是
subtract 是 是 是 是 是
双色 是 是 是 是 是
torch_index_select 否 重温 否 否 重温
转置 是 是 是 是 是
triangular_solve 是 重温 是 否 重温
tuple 是 是 是 是 是
unary_einsum 否 重温 否 是 重温
uniform_dequantize 是 是 是 是 否
uniform_quantize 是 重温 不可行 是 否
而 是 重温 是 重温 是
异或 是 是 是 是 是

量化运算的类型推断

上表中的 Type Inference 列旨在侧重于非量化运算。对于大多数量化运算,推断结果类型是不可行的,因为结果类型的量化参数可能与运算数的量化参数不同。除了运算数和结果类型必须完全相同的少数情况,或者运算具有可用于推断结果类型的约束条件之外,下文列出了此类运算:all_gather、all_to_all、case、collective_permute、compare、concatenate、constant、dynamic_slice、dynamic_update_slice、gather、get_tuple_element、if、infeed、is_finite、is_finite、is_finite、、、is_finite、is_finite、、、{1、}、is_finite、 /}。mapoptimization_barrieroutfeedpadrecvreducereduce_scatterreduce_windowreversescatterselect_and_scattersendslicesorttransposetupleuniform_dequantizedwhile