news 2026/7/18 11:43:51

CANN/asc-devkit归约计算API指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CANN/asc-devkit归约计算API指南

如何使用归约计算API

【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C++标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit

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

  • ReduceMax/ReduceMin/ReduceSum:对所有的输入数据做归约操作,得到最大值和最大值索引/最小值和最小值索引/数据总和。
  • ReduceRepeat:对每个repeat内的输入数据做归约操作,根据模板参数ReduceType指定求最大值/最小值/求和,得到每个repeat内的最大值和最大值索引/最小值和最小值索引/数据总和。返回索引时返回的是repeat内部索引。
  • ReduceDataBlock:对每个DataBlock内的输入数据做归约操作,根据模板参数ReduceType指定求最大值/最小值/求和,得到每个DataBlock内的最大值/最小值/数据总和。
  • ReducePairElem:对相邻两个(奇偶)元素进行归约操作,当前仅支持根据模板参数ReduceType::SUM求和,例如(a1, a2, a3, a4, a5, a6...),归约后结果为(a1+a2, a3+a4, a5+a6, ......)。

图1归约指令示意图
![](https://raw.gitcode.com/cann/asc-devkit/raw/ded540824a702f5cab69a36879315c31ce8ff9b7/docs/zh/guide/figures/Reduce_summary.png "归约指令示意图"?utm_source=gitcode_repo_files)

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

  • mask:用于控制每次迭代内参与计算的元素,mask参数的使用方法和基础API通用的使用方法一致。

  • repeatTime:迭代次数,开发者通过repeatTime来配置迭代次数,从而控制指令的多次迭代执行。

    • ReduceMax/ReduceMin/ReduceSum对于repeatTime超过255的情况,在API内部进行了处理,所以repeatTime支持更大的取值范围,保证不超过int32_t最大值的范围即可。
    • ReduceRepeat/ReduceDataBlock/ReducePairElem和其他基础API一样,repeatTime要求不超过255。
  • repeatStride:表示相邻迭代间的地址步长。

    • ReduceMax/ReduceMin/ReduceSum指令的目的操作数会归约成一个最大值/最小值/总和,所以其目的操作数不支持配置repeatStride。仅源操作数支持repeatStride,其含义、单位(datablock)和基础API通用说明一致。
    • ReduceRepeat/ReduceDataBlock/ReducePairElem源操作数和目的操作数都支持配置repeatStride,源操作数repeatStride的含义、单位(DataBlock)和基础API通用说明一致。目的操作数repeatStride的含义、单位和基础API通用说明有差异,因为归约后,目的操作数的长度会变短,比如ReduceRepeat归约后每个repeat会合并为一个值,所以迭代之间的间隔不能再使用一个DataBlock为单位,而以一个repeat归约后的长度为单位。
  • dataBlockStride:表示单次迭代内datablock的地址步长。

    • ReduceMax/ReduceMin/ReduceSum指令的目的操作数会归约成一个最大值/最小值/总和,所以其目的操作数不支持配置dataBlockStride。源操作数也不支持dataBlockStride。
    • ReduceRepeat/ReduceDataBlock/ReducePairElem源操作数支持配置dataBlockStride,源操作数dataBlockStride的含义、单位(DataBlock)和基础API通用说明一致。目的操作数不支持dataBlockStride,因为归约后,目的操作数的长度会变短,比如ReduceRepeat归约后每个repeat会合并为一个值,不再有迭代内DataBlock和地址间隔的概念。

【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C++标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/18 11:43:12

AM62L处理器DPHY与TRNG寄存器配置实战:从硬件接口到安全编程

1. 项目概述在嵌入式系统开发,尤其是涉及高速数据接口和硬件安全的应用中,直接与硬件寄存器打交道是绕不开的一环。很多开发者,特别是从纯应用层转过来的朋友,一看到手册里动辄几十页的寄存器描述就头疼,觉得这是驱动工…

作者头像 李华
网站建设 2026/7/18 11:40:12

DockDoor:macOS窗口预览神器,让你的多任务管理效率翻倍

DockDoor:macOS窗口预览神器,让你的多任务管理效率翻倍 【免费下载链接】DockDoor Window peeking, alt-tab and other enhancements for macOS 项目地址: https://gitcode.com/gh_mirrors/do/DockDoor 还在为macOS上繁琐的窗口切换而烦恼吗&…

作者头像 李华
网站建设 2026/7/18 11:39:59

nftables-blacklist监控与日志:如何查看被拦截的恶意IP流量

nftables-blacklist监控与日志:如何查看被拦截的恶意IP流量 【免费下载链接】nftables-blacklist A bash script to ban large numbers of IP addresses published in blacklists. 项目地址: https://gitcode.com/gh_mirrors/ip/nftables-blacklist nftables…

作者头像 李华