代表tik的for循环语句,可在for循环中开启n buffer和多核运行功能。
for_range(begint, endt, name="i", thread_num=1, thread_type="whole", block_num=1,dtype="int32", for_type="serial")
参数名称 |
输入/输出 |
含义 |
---|---|---|
begint |
输入 |
for_range循环变量起始值。 begint和endt为立即数(int, uint)、Scalar(int, uint)、Expr,Expr化简后的值也需要为整数,需要满足 0<=begint<=endt<=2147483647。 循环变量的取值大于等于begint且小于endt。 |
endt |
输入 |
for_range循环变量结束值。 begint和endt为立即数(int, uint)、Scalar(int, uint)、Expr,Expr化简后的值也需要为整数,需要满足 0<=begint<=endt<=2147483647。 循环变量的取值大于等于begint且小于endt。
说明:
begint和endt使用Scalar,性能会有所下降。 |
name |
输入 |
for_range循环中的循环变量名字。
说明:
|
thread_num |
输入 |
for_range循环中是否开启n buffer。类型为立即数,取值:
说明:
3和4只有在算子类型为纯搬运类算子,且追求极致性能的场景下才会用到,一般算子进行性能优化,仅开启2 buffer即可。 |
thread_type |
输入 |
代表for_range循环展开的代码排列方式,当前为保留参数,对运行无影响。取值:whole |
block_num |
输入 |
for_range循环中使用的核数。类型为立即数,取值范围为[1, 65535]。
|
dtype |
输入 |
for_range循环变量的类型,当前为保留参数,对运行无影响。取值:int32 |
for_type |
输入 |
代表此for_range循环本身的类型,取值:serial |
昇腾310 AI处理器
昇腾910 AI处理器
昇腾310P AI处理器AI Core
昇腾310P AI处理器Vector Core
# 使用循环变量 with self.tik_instance.for_range(0,10) as i: with self.tik_instance.if_scope(i==0): # 注意不能使用if i==0: do_something with self.tik_instance.else_scope(): # 注意不能使用else: do_something
TikWithScope对象
with self.tik_instance.for_range(0,1,thread_num=1): do_something # 开启double buffer,注意,tensor的定义要在for range内部定义才能会分配2份内存 with self.tik_instance.for_range(0,2,thread_num=2): tensor定义 do_something # 开启多核运行 with self.tik_instance.for_range(0,2,block_num=2): do_something