FilesLast commitLast update
12 days ago
12 days ago
12 days ago
12 days ago
12 days ago
10 months ago
12 days ago
README

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算子。