news 2026/7/15 14:46:08

CANN/asc-devkit频率直方图API

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CANN/asc-devkit频率直方图API

asc_frequency_histogram

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

产品支持情况

产品是否支持
Ascend 950PR/Ascend 950DT

功能说明

头文件路径:"c_api/reg_compute/reg_vector.h"

对输入数据进行频率统计,生成直方图。统计结果在dst原有数据基础上累加。

工作原理:

  • 统计src中每个数值的出现频率
  • dst的第n个元素存储数值n在src中出现的次数
  • 结果累加到dst原有数据中,支持多次统计的累加计算

分区间统计:由于src数据类型为uint8_t(取值范围0~255),而dst每个元素为uint16_t,且一个Vector Length可存储128个数据,因此将统计范围分为两个区间:

  • 低位模式(BIN0):统计src中数值在[0, 127]范围内的出现频率
  • 高位模式(BIN1):统计src中数值在[128, 255]范围内的出现频率,统计时将数值减去128,映射到dst的索引位置

统计方式如下图所示:

  • dst0:低位模式统计结果,dst0[0]表示数值0的出现次数,dst0[127]表示数值127的出现次数
  • dst1:高位模式统计结果,dst1[0]表示数值128的出现次数,dst1[127]表示数值255的出现次数

函数原型

// 低位模式 __simd_callee__ inline void asc_frequency_histogram_bin0(vector_uint16_t& dst, vector_uint8_t src, vector_bool mask) // 高位模式 __simd_callee__ inline void asc_frequency_histogram_bin1(vector_uint16_t& dst, vector_uint8_t src, vector_bool mask)

参数说明

参数名输入/输出描述
dst输出目的操作数(矢量数据寄存器)。
src输入源操作数(矢量数据寄存器)。
mask输入源操作数掩码(掩码寄存器),用于指示在计算过程中哪些元素参与计算。对应位置为1时参与计算,为0时不参与计算。mask未筛选的元素在输出中置零。

矢量数据寄存器和掩码寄存器的详细说明请参见data_type_definition.md。

返回值说明

流水类型

PIPE_V

约束说明

  • 当mask位数为0时,源操作数src对应位置的数数值将被忽略,dst对应位置数值为忽略该位置src后计算得到的值。
  • dst的数据类型为uint16_t,最大值为65535,使用时需注意累加溢出问题。

调用示例

// 示例1:完整的频率统计流程 vector_uint16_t dst0, dst1; // dst0用于低位统计,dst1用于高位统计 vector_uint8_t src; vector_bool mask = asc_create_mask_b8(PAT_ALL); // 初始化dst为0 asc_duplicate_scalar(dst0, (uint16_t)0, mask); asc_duplicate_scalar(dst1, (uint16_t)0, mask); // 加载待统计的数据 asc_loadalign(src, src_addr); // src_addr是外部输入的UB内存空间地址 // 分别统计低位和高位区间 asc_frequency_histogram_bin0(dst0, src, mask); // 统计[0,127] asc_frequency_histogram_bin1(dst1, src, mask); // 统计[128,255] // dst0[0]表示数值0的出现次数,dst0[127]表示数值127的出现次数 // dst1[0]表示数值128的出现次数,dst1[127]表示数值255的出现次数 // 示例2:多次累加统计 // 支持对多批数据进行累加统计 asc_loadalign(src, src_addr2); // 加载第二批数据, src_addr2是外部输入的UB内存空间地址 asc_frequency_histogram_bin0(dst0, src, mask); // 累加到dst0 asc_frequency_histogram_bin1(dst1, src, mask); // 累加到dst1 // 此时dst0和dst1包含两批数据的累积统计结果

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

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

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

如何为Windows系统添加无限虚拟显示器:终极免费解决方案指南

如何为Windows系统添加无限虚拟显示器:终极免费解决方案指南 【免费下载链接】Virtual-Display-Driver Add virtual monitors to your windows 10/11 device! Works with VR, OBS, Sunshine, and/or any desktop sharing software. 项目地址: https://gitcode.com…

作者头像 李华
网站建设 2026/7/15 14:45:09

LED恒流驱动IC选型与电路设计实战指南

1. 恒流IC选型的底层逻辑从业十年,我经手过上百款LED驱动方案,发现90%的设计问题都源于IC选型不当。恒流IC不是参数越高越好,关键要看应用场景的匹配度。1.1 照明类应用的核心考量在商业照明领域,我首推TI的LM3404和ONSemi的CAT41…

作者头像 李华
网站建设 2026/7/15 14:45:00

5分钟解决Windows绘图难题:draw.io桌面版完整安装指南

5分钟解决Windows绘图难题:draw.io桌面版完整安装指南 【免费下载链接】drawio-desktop Official electron build of draw.io 项目地址: https://gitcode.com/GitHub_Trending/dr/drawio-desktop 还在为Windows系统寻找一款真正安全、高效的离线绘图工具而烦…

作者头像 李华
网站建设 2026/7/15 14:43:34

西门子的伺服的线也有高仿了?

项目背景:在其他的项目上面,遇到了一个情况。就是在采购备件的过程中,发现查西门子电缆的型号和现场照片对不上。具体的情况就是型号是一样的。但是长度对不上。需要解决的问题:到底是真的还是仿的。解决过程:现场照片这个线西门子只有20m的规…

作者头像 李华
网站建设 2026/7/15 14:43:09

彻底解决UFO项目Follower模式提前终止问题:从根源到方案

彻底解决UFO项目Follower模式提前终止问题:从根源到方案 你是否在使用UFO项目Follower模式时遇到过任务执行到一半突然终止的情况?辛辛苦苦配置的自动化流程戛然而止,既没有错误提示也没有日志输出,这种"无声崩溃"不仅…

作者头像 李华