下载
中文
注册

tik_continue

功能说明

在tik的for_range循环中使用,用来跳出本次循环,进入下一次循环。

函数原型

tik_continue()

参数说明

支持的型号

Atlas 200/300/500 推理产品

Atlas 训练系列产品

Atlas推理系列产品AI Core

Atlas推理系列产品Vector Core

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

Atlas 200/500 A2推理产品

注意事项

  1. tik_continue()仅允许在for_range语句的作用域内使用。
  2. 当for_range语句的block_num > 1时,当前循环内不允许使用tik_continue(), 但子循环可以使用。
  3. 当for_range语句的subblock_num > 1时,当前循环内不允许使用tik_continue(), 但子循环可以使用。
  4. 同一作用域内, tik_continue后的代码不执行。
  5. 当for_range(0, 1)时, for_range将会被展开, 其展开后, tik_continue后的语句将不会执行。
  6. 在当前for_range作用域内, 如果使用了tik_continue, thread_num的值将会被设置为1。

返回值

调用示例

tik_instance = tik.Tik()
data_C_gm = tik_instance.Tensor("float16", (128,), name="data_C", scope=tik.scope_gm)
data_C_ub = tik_instance.Tensor("float16", (128,), name="data_C_ub", scope=tik.scope_ubuf)
data_B_gm = tik_instance.Tensor("float16", (128,), name="data_B", scope=tik.scope_gm)
data_B_ub = tik_instance.Tensor("float16", (128,), name="data_B_ub", scope=tik.scope_ubuf)

tik_instance.data_move(data_B_ub, data_B_gm, 0, 1, 8, 0, 0)
with tik_instance.for_range(0, 8) as i:
    with tik_instance.if_scope(i==1):
        tik_instance.tik_continue()
    tik_instance.data_move(data_C_ub[i*16], data_B_ub[i*16], 0, 1, 1, 0, 0)

tik_instance.data_move(data_C_gm, data_C_ub, 0, 1, 8, 0, 0)
tik_instance.BuildCCE(kernel_name, inputs = [data_B_gm], outputs = [data_C_gm])