Sort

产品支持情况

产品

是否支持

Atlas A3 训练系列产品/Atlas A3 推理系列产品

Atlas A2 训练系列产品/Atlas 800I A2 推理产品/A200I A2 Box 异构组件

Atlas 200I/500 A2 推理产品

x

Atlas 推理系列产品AI Core

Atlas 推理系列产品Vector Core

x

Atlas 训练系列产品

x

Atlas 200/300/500 推理产品

x

功能说明

排序函数,按照数值大小进行降序排序。排序后的数据按照如下排布方式进行保存:

Atlas A3 训练系列产品/Atlas A3 推理系列产品采用方式一

Atlas A2 训练系列产品/Atlas 800I A2 推理产品/A200I A2 Box 异构组件采用方式一

Atlas 推理系列产品AI Core采用方式二

函数原型

1
2
template <typename T, bool isFullSort>
__aicore__ inline void Sort(const LocalTensor<T> &dstLocal, const LocalTensor<T> &concatLocal, const LocalTensor<uint32_t> &indexLocal, LocalTensor<T> &tmpLocal, const int32_t repeatTimes)

参数说明

表1 模板参数说明

参数名

含义

T

操作数的数据类型。

Atlas A3 训练系列产品/Atlas A3 推理系列产品,支持的数据类型为:half/float

Atlas A2 训练系列产品/Atlas 800I A2 推理产品/A200I A2 Box 异构组件,支持的数据类型为:half/float

Atlas 推理系列产品AI Core,支持的数据类型为:half/float

isFullSort

是否开启全排序模式。全排序模式指将全部输入降序排序,非全排序模式下,排序方式请参考表2中的repeatTimes说明。

表2 参数说明

参数名称

输入/输出

含义

dstLocal

输出

目的操作数。

类型为LocalTensor,支持的TPosition为VECIN/VECCALC/VECOUT。

LocalTensor的起始地址需要32字节对齐。

concatLocal

输入

源操作数。

类型为LocalTensor,支持的TPosition为VECIN/VECCALC/VECOUT。

LocalTensor的起始地址需要32字节对齐。

此源操作数的数据类型需要与目的操作数保持一致。

indexLocal

输入

源操作数。

类型为LocalTensor,支持的TPosition为VECIN/VECCALC/VECOUT。

LocalTensor的起始地址需要32字节对齐。

此源操作数固定为uint32_t数据类型。

tmpLocal

输入

临时空间。接口内部复杂计算时用于存储中间变量,由开发者提供,临时空间大小BufferSize的获取方式请参考GetSortTmpSize。数据类型与源操作数保持一致。

类型为LocalTensor,支持的TPosition为VECIN/VECCALC/VECOUT。

LocalTensor的起始地址需要32字节对齐。

repeatTimes

输入

重复迭代次数,int32_t类型。

  • Atlas A3 训练系列产品/Atlas A3 推理系列产品:每次迭代完成32个元素的排序,下次迭代concatLocal和indexLocal各跳过32个elements,dstLocal跳过32*8 Byte空间。取值范围:repeatTimes∈[0,255]。
  • Atlas A2 训练系列产品/Atlas 800I A2 推理产品/A200I A2 Box 异构组件:每次迭代完成32个元素的排序,下次迭代concatLocal和indexLocal各跳过32个elements,dstLocal跳过32*8 Byte空间。取值范围:repeatTimes∈[0,255]。
  • Atlas 推理系列产品AI Core:每次迭代完成16个region proposal的排序,下次迭代concatLocal和dstLocal各跳过16个region proposal。取值范围:repeatTimes∈[0,255]。

返回值说明

约束说明

调用示例

算子样例工程请通过sort链接获取。