当前位置: 首页 > news >正文

CANN/pypto topk操作

# pypto.topk

【免费下载链接】pyptoPyPTO(发音: pai p-t-o):Parallel Tensor/Tile Operation编程范式。项目地址: https://gitcode.com/cann/pypto

产品支持情况

产品是否支持
Ascend 950PR/Ascend 950DT
Atlas A3 训练系列产品/Atlas A3 推理系列产品
Atlas A2 训练系列产品/Atlas A2 推理系列产品

功能说明

获取最后一个维度的前k个最大值或最小值及其对应的索引。

如果输入是向量,则在向量中找到前k个最大值或最小值及其对应的索引;如果输入是矩阵,则沿最后一个维度计算每行中前k个最大值或最小值及其对应的索引。如下图所示,对Shape为(4, 32)的二维矩阵进行排序,k设置为1,输出结果为[[32] [32] [32] [32]]。

函数原型

topk(input: Tensor, k: int, dim: Optional[int] = None, largest: bool = True, algo: TopKAlgo = TopKAlgo.MERGE_SORT) -> Tuple[Tensor, Tensor]

参数说明

参数名输入/输出说明
input输入源操作数。
支持的类型为:Tensor。
Tensor支持的数据类型为:
- MERGE_SORT: DT_FP32。
- RADIX_SELECT: DT_BF16,DT_FP16,DT_FP32。
不支持空Tensor;Shape仅支持1-4维;Shape Size不大于2147483647(即INT32_MAX)。
k输入返回元素的数量。
k的大小应该满足:1 <= k <= input.shape[dim]。
dim输入指定排序的维度。
目前仅支持按最后一个维度排序,即dim= -1或dim= input.shape.size() - 1。
largest输入如果为True,返回最大元素。如果为False,返回最小元素。
algo输入算法枚举类型,用以控制TopK计算的流程,具体定义为:TopKAlgo 。
默认为 MERGE_SORT(归并排序算法)。

返回值说明

返回一个命名元组(values, indices),其中包含input在指定维度dim下每行中最大或最小的k个元素的值和索引。

约束说明

  1. 只支持对尾轴进行topk操作;
  2. TileShape尾轴32bytes对齐(TileShape[-1]*4 % 32 == 0);
  3. 选用MERGE_SORT算法时,TileShape尾轴需要小于22KB(TileShape[-1]*4 < 22KB);
  4. 选用RADIX_SELECT算法时,记TileShape尾轴为tile,则需要临时空间2*tile*sizeof(srcType)+6*tile+1024+max(1024, 8*tile),临时空间加上输入输出的tile块不能超过UB大小;
  5. k <= TileShape[-1] && k <= input.shape[-1];
  6. RADIX_SELECT算法仅支持Ascend 950PR/Ascend 950DT;

调用示例

TileShape设置示例

说明:调用该operation接口前,应通过set_vec_tile_shapes设置TileShape。

TileShape维度应和输入input一致。

示例1:输入input shape为[m, n, p],dim为2,largest为True,输出为[m, n, k], TileShape设置为[m1, n1, p1], 则m1, n1, p1分别用于切分m, n, p轴。p1必须大于等于k,k轴不支持切分,必须保证全载。

pypto.set_vec_tile_shapes(4, 16, 32)

接口调用示例

x = pypto.tensor([2, 3], pypto.DT_FP32) y = pypto.topk(x, 2, -1, True, pypto.TopKAlgo.MERGE_SORT)

结果示例如下:

输入数据x: [[1.0 2.0 3.0], [1.0 2.0 3.0]] 输出数据y[0]: [[3.0 2.0], [3.0 2.0]] 输出数据y[1]: [[2, 1], [2, 1]]

【免费下载链接】pyptoPyPTO(发音: pai p-t-o):Parallel Tensor/Tile Operation编程范式。项目地址: https://gitcode.com/cann/pypto

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.jsqmd.com/news/862214/

相关文章:

  • 2026 私域运营很重要!群 SOP+AI 实测领先,私域大师7 大工具横评
  • RTSPtoWebRTC API详解:WebRTC连接建立与媒体传输全流程
  • ThinkPHP-BJYAdmin多模块架构解析:Admin、Api、Home模块分离设计指南
  • Gramophone音乐播放器:基于media3的现代化Android音乐应用完全指南
  • 5分钟快速上手Liquid Time-Constant Networks:从零开始构建第一个LTC模型 [特殊字符]
  • ConfigMap与Secret管理完全指南
  • Static-Program-Analysis-Book中间表示解析:构建高效静态分析器的核心技术
  • Windows驱动开发新时代:windows-drivers-rs项目架构深度解析
  • xfce-winxp-tc部署与打包指南:支持APK、DEB、RPM等多种格式
  • Bpmn Process Designer扩展开发实战:如何自定义流程元素与规则
  • OpenISP 模块拆解 · 第12讲:双边滤波降噪 (BNF)
  • Octopress草稿管理终极指南:如何高效使用publish和unpublish命令
  • 如何快速上手Supersonic:10个新手必学的音乐管理技巧
  • 社群运营必备工具推荐私域大师
  • 如何快速上手 wechatferry:5分钟搭建你的第一个微信机器人
  • Stylis插件开发完全指南:如何扩展CSS预处理功能
  • AI Scientist-v2容器化部署终极指南:使用Docker简化安装与配置的完整教程
  • 终极Node.js日志解决方案:Pino框架在企业环境中的最佳实践
  • Kirikiri游戏开发终极指南:开源工具集完整解决方案
  • Netlify CLI 开发环境配置:如何搭建高效的本地开发工作流
  • 0x.Tools安全最佳实践:如何在非root权限下运行高性能监控
  • node-ar-drone:终极Node.js无人机控制指南 - 从零开始掌握Parrot AR Drone编程
  • Kalliope核心架构深度解析:信号、神经元与突触的完美结合
  • 快速搭建CPS返利小程序教程
  • Legba性能优化技巧:10个实用方法提升暴力破解效率 [特殊字符]
  • 10个Minimal主题实用技巧:从基础配置到高级定制
  • 终极awesome-made-by-brazilians使用手册:从入门到精通
  • CANN/pypto共享内存视图
  • 终极GTA5安全防护菜单:YimMenu新手完整使用指南
  • Elasticsearch动态模板配置:自动化字段映射的智能解决方案