pypto.loop_unroll#
产品支持情况#
产品 |
是否支持 |
|---|---|
Atlas A3 训练系列产品/Atlas A3 推理系列产品 |
√ |
Atlas A2 训练系列产品/Atlas A2 推理系列产品 |
√ |
功能说明#
pypto.loop_unroll是一个支持循环展开的循环迭代器函数,功能与pypto.loop类似,增加了unroll_list参数支持多个展开方式。
函数原型#
loop_unroll(*args, **kwargs) -> Iterator[Tuple[SymInt, int]]
参数说明#
参数名 |
输入/输出 |
说明 |
|---|---|---|
*args |
输入 |
三个可选参数,分别为循环起始值(start),循环结束值(stop),循环步长(step),有以下三种写法: |
**kwargs |
输入 |
- name(str):循环标识名称,默认生成f”loop_{loop_idx}”。 |
返回值说明#
返回一个迭代器,每次迭代产生一个元组(idx, unroll_factor),idx表示当前循环的索引值,unroll_factor标识当前选择的展开方式。
约束说明#
展开因子列表会被排序并去重,且总是包含 1
展开因子按从大到小排序
每个展开因子会生成一个子循环
多层循环使用了loop_unroll并且配置unroll_list,会大大增加编译出的图数量,影响编译性能
调用示例#
for _ in pypto.loop_unroll(0, 10, 1, name="LOOP_L0_bIdx_mla_prolog", idx_name="b_idx", unroll_list=[1, 2, 4]):
...