tik_break
功能说明
tik_break语句用来终止for_range循环语句,即tik_break语句将停止执行当前的循环。
函数原型
tik_break()
参数说明
无
支持的型号
Atlas 200/300/500 推理产品
Atlas 训练系列产品
Atlas推理系列产品AI Core
Atlas推理系列产品Vector Core
Atlas A2训练系列产品/Atlas 800I A2推理产品
Atlas 200/500 A2推理产品
注意事项
- tik_break()仅允许在for_range语句的作用域内使用。
- 当for_range语句的block_num > 1时,当前循环内不允许使用tik_break(), 但子循环可以使用。
- 当for_range语句的subblock_num > 1时,当前循环内不允许使用tik_break(), 但子循环可以使用。
- 同一作用域内, tik_break后的代码不执行。
- 当for_range(0, 1)时, for_range将会被展开, 其展开后, tik_break后的语句将不会执行。
- 在当前for_range作用域内, 如果使用了tik_break, thread_num的值将会被设置为1。
返回值
无
调用示例
tik_instance = tik.Tik() kernel_name = "test_tik_break" data_type = 'float16' data_shape = (128,) src_gm = tik_instance.Tensor(data_type, data_shape, name="src_gm", scope=tik.scope_gm) dst_gm = tik_instance.Tensor(data_type, data_shape, name="dst_gm", scope=tik.scope_gm) src_ub = tik_instance.Tensor(data_type, data_shape, name="src_ub", scope=tik.scope_ubuf) dst_ub = tik_instance.Tensor(data_type, data_shape, name="dst_ub", scope=tik.scope_ubuf) tik_instance.data_move(src_ub, src_gm, 0, 1, 8, 0, 0) with tik_instance.for_range(0, 8) as i: with tik_instance.if_scope(i == 5): tik_instance.tik_break() tik_instance.data_move(dst_ub[i*16], src_ub[i*16], 0, 1, 1, 0, 0) tik_instance.data_move(dst_gm, dst_ub, 0, 1, 8, 0, 0) tik_instance.BuildCCE(kernel_name, inputs=[src_gm], outputs=[dst_gm])
父主题: 程序控制