FeedsRepeat

产品支持情况

产品 是否支持
Ascend 950PR&950DT系列产品 √
Atlas A3系列产品 √
Atlas A2系列产品 √
Atlas 200I/500 A2推理产品 ×
Atlas推理系列产品 ×
Atlas训练系列产品 ×
Kirin X90处理器系列产品 √
Kirin 9030处理器系列产品 √

功能说明

  • 算子功能:

    对于输入feeds,根据输入feeds_repeat_times,将对应的feeds的第0维上的数据复制对应的次数,并将输出y的第0维padding到output_feeds_size的大小;未填充部分(超过实际复制行数的部分)置0。

参数说明

参数名 输入/输出/属性 描述 数据类型 数据格式
feeds 输入 等待处理的对象。 BFLOAT16、FLOAT16、FLOAT32 ND
feeds_repeat_times 输入 描述对feeds每行的repeat次数。 INT32、INT64 ND
y 输出 repeat完成后的张量,dtype与feeds保持一致。 BFLOAT16、FLOAT16、FLOAT32 ND
output_feeds_size 属性 输出的第0维的数值等于该数值。 INT -
  • Kirin X90处理器系列产品、Kirin 9030处理器系列产品:不支持BFLOAT16。

约束说明

  • feeds的秩(维度数)范围为1~8,第0维N必须与feeds_repeat_times的元素个数相同,且N≥1(不支持空Tensor,即N=0);feeds第1维起各维的乘积(每行元素个数)必须≥1。
  • feeds与feeds_repeat_times的数据类型分别为FLOAT/BFLOAT16/FLOAT16与INT32/INT64,其他类型不支持。
  • feeds_repeat_times的元素总数必须等于feeds的第0维N(其秩不限,通常为一维)。构图期其维度允许为动态维(-1)或未知标记(此时元素总数无法校验,校验顺延至执行阶段);执行阶段其具体维度值必须为非负整数。
  • feeds_repeat_times中的负值按0处理。
  • 当feeds_repeat_times各元素之和大于output_feeds_size时,超出output_feeds_size的重复行会被丢弃(输出按output_feeds_size截断)。
  • 属性output_feeds_size必须为非负整数;负值会在算子执行准备阶段(tiling)被拒绝。
  • 支持动态shape:GEIR图模式下构图时输入维度可使用-1(动态维),执行时以运行时下发的具体shape为准;feeds为[-2](未知Rank)时,输出y传播为未知Rank[-2]。执行阶段要求feeds与feeds_repeat_times的具体维度值非负。
  • 说明:-1/-2标记仅在构图与shape推导阶段生效——InferShape对含标记的输入跳过数值校验(或按未知Rank传播),而执行阶段由tiling以运行时下发的具体shape完成校验,具体维度值非负才会放行执行。
  • 算子实现过程中,feeds_repeat_times需搬入UB并做精度转换和累加,其字节数受片上UB容量限制:tiling按2倍字节占用加约8 KB预留与UB容量比较,超出即拒绝。当前实现下,feeds_repeat_times占用的字节数在Atlas A2/A3系列产品不能超过约92 KB,在Ascend 950PR&950DT系列产品不能超过约120 KB。
  • 行偏移量(各行的复制起点与清零位置)由feeds_repeat_times经float32累加得到;当单个或前缀累计的重复次数超过2^24时,行偏移可能出现偏差,请避免使用超过该量级的重复次数。

调用说明

调用方式 样例代码 说明
GE图模式 test_geir_feeds_repeat 通过feeds_repeat_proto接口方式调用feeds_repeat算子。