下载
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助
昇腾小AI

else_scope

功能说明

创建TIK的条件判断语句,当前面的if_scope语句以及elif_scope语句条件都不满足时,则执行此else_scope语句中的代码块。

伪代码如下:

# 当满足cond1时,执行if_scope代码块。
if_scope(cond1)

# 当if_scope语句条件不满足时,且本语句cond2条件满足时,执行此elif_scope代码块
# 首个elif_scope必须在if_scope函数后
elif_scope(cond2)

# 当前面的if_scope以及elif_scope条件都不满足,且本语句cond3条件满足时,则执行此elif_scope代码块
elif_scope(cond3)

# else_scope必须在if_scope/elif_scope函数后,可以省略
else_scope()

函数原型

else_scope()

参数说明

无。

支持的型号

Atlas 200/300/500 推理产品

Atlas 训练系列产品

Atlas推理系列产品AI Core

Atlas推理系列产品Vector Core

Atlas A2训练系列产品/Atlas 800I A2推理产品

Atlas 200/500 A2推理产品

注意事项

  • 必须在if_scopeelif_scope函数后。
  • 一条if_scope后并列的elif_scope和else_scope语句,不能超过400条。

返回值

TikWithScope对象。

继承TVM的WithScope。

调用示例

tik_instance = tik.Tik()

cond = tik_instance.InputScalar(dtype="int16", name="cond")
src_gm = tik_instance.Tensor(dtype="int64", shape=(16, ),
                             scope=tik.scope_gm, name="src_gm")
dst_ub = tik_instance.Tensor(dtype="int64", shape=(4, ),
                             scope=tik.scope_ubuf, name="dst_ub")
dst_gm = tik_instance.Tensor(dtype="int64", shape=(4, ),
                             scope=tik.scope_gm, name="dst_gm")
# 将dst初始化为 src_gm[0:3]
tik_instance.data_move(dst_ub, src_gm[0:3,], 0, 1, 1, 0, 0)

# 根据cond的值,将src的不同切片搬运到dst中
# 当满足cond==1时,执行if_scope内代码块
with tik_instance.if_scope(cond == 1):
    tik_instance.data_move(dst_ub, src_gm[4:7,], 0, 1, 1, 0, 0)
# 当不满足cond==1,且满足cond==2时,执行elif_scope内代码块
with tik_instance.elif_scope(cond == 2):
    tik_instance.data_move(dst_ub, src_gm[8:11,], 0, 1, 1, 0, 0)
# 当cond==1和cond==2都不满足时,执行else_scope内代码块
with tik_instance.else_scope():
    tik_instance.data_move(dst_ub, src_gm[12:15,], 0, 1, 1, 0, 0)

# 将dst搬运到gm,用以输出
tik_instance.data_move(dst_gm, dst_ub, 0, 1, 1, 0, 0)

tik_instance.BuildCCE(kernel_name="if_scope", inputs=[src_gm, cond], outputs=[dst_gm])

结果示例

输入数据(src_gm):
[0, 1, 2,..., 15]

输入数据(cond):
3

输出数据(dst_gm):
[12, 13, 14, 15]
搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词