SortOperation
产品支持情况
硬件型号  | 
是否支持  | 
特殊说明  | 
|---|---|---|
√  | 
-  | 
|
√  | 
-  | 
|
√  | 
不支持float数据类型。  | 
|
√  | 
不支持float、bf16数据类型。  | 
|
√  | 
不支持float数据类型。  | 
功能
后处理计算功能。实现输入tensor在最后一维上降序排列,并保留最大的num个元素,输出排序后的tensor及各元素对应的索引。
算子上下文
图1 SortOperation算子上下文


定义
1 2 3 4  | struct SortParam { SVector<int32_t> num; uint8_t rsv[8] = {0}; };  | 
参数列表
成员名称  | 
类型  | 
默认值  | 
描述  | 
|---|---|---|---|
num  | 
SVector<int32_t>  | 
-  | 
排序后保留的最大的元素的数量。 num是一个仅含有一个值的SVector,该值需大于0且小于等于输入x最后一维的大小。  | 
rsv[8]  | 
uint8_t  | 
{0}  | 
预留参数。  | 
输入
参数  | 
维度  | 
数据类型  | 
格式  | 
描述  | 
|---|---|---|---|---|
x  | 
[dim_0,dim_1,...,dim_n]  | 
float16/bf16/float  | 
ND  | 
最后一维应至少有num个元素。  | 
输出
参数  | 
维度  | 
数据类型  | 
格式  | 
描述  | 
|---|---|---|---|---|
output  | 
[dim_0,dim_1,...,num]  | 
float16/bf16/float  | 
ND  | 
最后一维排序后,最大的num个元素。  | 
indices  | 
[dim_0,dim_1,...,num]  | 
int32  | 
ND  | 
最大的num个元素对应的原索引。  | 
规格约束
- num是一个仅含有一个值的SVector,该值需大于0且小于等于输入x最后一维的大小。
 Atlas 推理系列产品 不支持num小于16、非尾轴的维度大于580000000的场景。
接口调用示例
输入:
num = [1]
x = [[3.0, 4.0],
       [5.0, 6.0]]
输出:
output = [[4.0],
                 [6.0]]
indices = [[1.0],
                 [1.0]]