While
产品支持情况
| 产品 |
是否支持 |
| Ascend 950PR&950DT系列产品 |
√ |
| Atlas A3系列产品 |
√ |
| Atlas A2系列产品 |
√ |
| Atlas 200I/500 A2推理产品 |
√ |
| Atlas推理系列产品 |
√ |
| Atlas训练系列产品 |
√ |
功能说明
- 算子功能:循环执行
body子图,直到cond子图返回false。每轮迭代前先执行cond判断是否继续;继续时将body子图返回的张量作为下一轮迭代的循环变量;循环结束时输出当前循环变量。
参数说明
| 参数名 |
输入/输出/属性 |
描述 |
数据类型 |
数据格式 |
input |
输入(动态) |
循环变量输入张量,迭代间由body子图的输出传递。 |
所有类型 |
ND |
cond |
子图 |
循环条件子图,接收循环变量并返回布尔标量;为false时结束循环。 |
- |
- |
body |
子图 |
循环体子图,接收循环变量并返回一组张量作为下一轮迭代的循环变量。 |
- |
- |
parallel_iterations |
属性 |
并行迭代数,控制运行时迭代的执行方式,默认值为10。 |
Int |
- |
output |
输出(动态) |
循环结束后由body子图返回的循环变量输出张量。 |
所有类型 |
ND |
约束说明
- 输出形状与数据类型由运行时实际执行的循环迭代决定,编译期不做推导。
cond子图输出需为布尔标量;body子图输出的个数、形状与数据类型须与输入循环变量保持一致。
cond首次执行即为false时循环体不执行,输出与输入张量一致。
调用说明
While算子为控制流基础算子,由框架在循环控制场景下使用,不单独调用。可通过算子IR定义了解算子接口。