文档
注册

归约指令

归约指令将数据集合简化为单一值或者更小的集合。按照归约操作的数据范围的不同,归约指令分为以下几种,可参考归约指令示意图

  • ReduceMax/ReduceMin/ReduceSum:对所有的输入数据做归约操作,得到最大值和最大值索引/最小值和最小值索引/数据总和。
  • WholeReduceMax/WholeReduceMin/WholeReduceSum:对每个repeat内的输入数据做归约操作,得到每个repeat内的最大值和最大值索引/最小值和最小值索引/数据总和。返回索引时返回的是repeat内部索引。
  • BlockReduceMax/BlockReduceMin/BlockReduceSum:对每个datablock内的输入数据做归约操作,得到每个datablock内的最大值/最小值/数据总和。
  • PairReduce:相邻两个(奇偶)元素求和,例如(a1, a2, a3, a4, a5, a6...),归约后结果为(a1+a2, a3+a4, a5+a6, ......)。
图1 归约指令示意图

针对归约指令,和其他的基础API一样也提供了tensor高维切分计算接口,可充分发挥硬件优势支持开发者控制指令的迭代执行和操作数的地址间隔,功能更加灵活。但具体参数的单位和约束与基础API略有不同,下文将对这些差异点进行介绍。

  • Repeat times:迭代次数,开发者通过Repeat times来配置迭代次数,从而控制指令的多次迭代执行。
    • ReduceMax/ReduceMin/ReduceSum实际上是对WholeReduceMax/WholeReduceMin/WholeReduceSum的封装,对于Repeat times超过255的情况,在API内部也进行了处理。所以Repeat times支持更大的取值范围,保证不超过int32_t最大值的范围即可。
    • WholeReduceMax/WholeReduceMin/WholeReduceSum/BlockReduceMax/BlockReduceMin/BlockReduceSum/PairReduce和其他基础API一样,Repeat times要求不超过255。
  • mask:用于控制每次迭代内参与计算的元素,mask参数的使用方法和基础API通用的使用方法一致。
  • RepeatStride:表示相邻迭代间的地址步长。
    • ReduceMax/ReduceMin/ReduceSum指令的目的操作数会归约成一个最大值/最小值/总和,所以其目的操作数不支持配置RepeatStride。仅源操作数支持RepeatStride,其含义、单位(datablock)和基础API通用说明一致。
    • WholeReduceMax/WholeReduceMin/WholeReduceSum/BlockReduceMax/BlockReduceMin/BlockReduceSum/PairReduce源操作数和目的操作数都支持配置RepeatStride,源操作数RepeatStride的含义、单位(datablock)和基础API通用说明一致。目的操作数RepeatStride的含义、单位和基础API通用说明有差异,因为归约后,目的操作数的长度会变短,比如WholeReduceSum归约后每个repeat会合并为一个值,所以迭代之间的间隔不能在使用一个datablock为单位,而以一个repeat归约后的长度为单位。
  • BlockStride:表示单次迭代内datablock的地址步长。
    • ReduceMax/ReduceMin/ReduceSum指令的目的操作数会归约成一个最大值/最小值/总和,所以其目的操作数不支持配置BlockStride。源操作数也不支持BlockStride。
    • WholeReduceMax/WholeReduceMin/WholeReduceSum/BlockReduceMax/BlockReduceMin/BlockReduceSum/PairReduce源操作数支持配置BlockStride,源操作数BlockStride的含义、单位(datablock)和基础API通用说明一致。目的操作数不支持BlockStride,因为归约后,目的操作数的长度会变短,比如WholeReduceSum归约后每个repeat会合并为一个值,不再有迭代内datablock和地址间隔的概念。
搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词