vsel
功能说明
根据condition的数据类型,将condition中的元素与True或1比较,如果表达式成立返回x对应的值,否则返回y对应的值。
- condition的数据类型为bool时,将condition元素的值和True比较,如果表达式成立返回x对应的值,否则返回y对应的值;
- condition的数据类型为uint8时,将condition元素按bit位和1比较,如果表达式成立返回x对应的值,否则返回y对应的值。
以下通过表达式的方式来解释如何比较,其中,i是表示condition中的元素,x'表示x的元素或者x,y'表示y的元素或者y,z表示结果tensor的元素,n(取值0~7)表示condition元素的bit位index,表达式如下:
函数原型
vsel(condition, lhs, rhs)
参数说明
- condition:条件tensor,tvm.tensor类型,数据类型为bool、uint8。
- lhs:可能的返回值,数据类型支持tvm.tensor、scalar。
- rhs:可能的返回值,数据类型支持tvm.tensor、scalar。
其中,lhs与rhs的数据类型需要一致。
Atlas 200/300/500 推理产品:支持的数据类型有float16
Atlas 训练系列产品:支持的数据类型有float16、float32
Atlas 推理系列产品:支持的数据类型有float16、float32
Atlas 200/500 A2推理产品:支持的数据类型有float16、float32
Atlas A2训练系列产品/Atlas 800I A2推理产品:支持的数据类型有float16、float32
返回值
res_tensor: 结果tensor,tvm.tensor类型
约束说明
- 当condition的数据类型为uint8时,lhs、rhs的shape最后一维要能被8整除。
- 当condition的数据类型为bool时,调用tbe.dsl.build接口进行编译时,传入的config参数中需要设置bool_storage_as_1bit为False。否则会出现某些shape的输出结果不符合预期。
因为bool_storage_as_1bit的默认值为True,表示按照1 bit进行存储。
编译配置config如下所示:
with tvm.target.cce(): schedule = tbe.dsl.auto_schedule(res) config = {"name": kernel_name, "tensor_list": [data_x, data_y, res], "bool_storage_as_1bit": False} tbe.dsl.build(schedule, config)
支持的型号
Atlas 200/300/500 推理产品
Atlas 训练系列产品
Atlas 推理系列产品
Atlas 200/500 A2推理产品
Atlas A2训练系列产品/Atlas 800I A2推理产品
父主题: Math计算接口