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

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),仅供参考

http://www.cnnetsun.cn/news/3402110.html

相关文章:

  • 如何为Windows系统添加无限虚拟显示器:终极免费解决方案指南
  • YOLO模型如何训练SAR船舶检测数据集 1160张 1类 SAR 影像船舶检测数据集 遥感影像,适用于海上船舶识别、海事监测场景
  • LED恒流驱动IC选型与电路设计实战指南
  • 5分钟解决Windows绘图难题:draw.io桌面版完整安装指南
  • 西门子的伺服的线也有高仿了?
  • 彻底解决UFO项目Follower模式提前终止问题:从根源到方案
  • 3大场景解锁APK-Installer:Windows平台智能安卓应用安装效率革命
  • Gemma-4-26B-A4B-it-mxfp4 API开发教程:构建视觉AI服务的完整流程
  • Swindler:终极macOS窗口管理库,用Swift夺回桌面控制权
  • 如何在Windows上直接运行安卓应用:APK安装器的完整使用指南
  • Boss-Key老板键:Windows隐私保护终极指南,一键隐藏所有敏感窗口
  • 如何用novel-downloader实现全网小说一键批量下载?终极免费指南
  • 气压制动系统设计
  • 个人微信API二次开发,发消息失败后状态总是对不上?难道没用过“本地消息表”保证最终一致吗?
  • 免疫炎症研究陷困局,云克隆11因子检测方案带来系统性突破
  • Steam游戏自动破解:3步解锁离线游戏的终极解决方案
  • VideoPose3D深度解析:基于时序卷积的高效3D人体姿态估计算法实战指南
  • 如何快速掌握Citra模拟器:终极3DS游戏仿真引擎完全指南
  • HowToCookOnMiniprogram买菜直达功能:一键跳转购物小程序终极指南 [特殊字符]
  • Cookiecutter-Golang:打造生产级Go项目的终极模板,5分钟快速启动开发
  • 5款高效macOS系统清理优化工具:让你的Mac重获新生
  • 小程序毕设项目:基于 Android 的诗词专项练习刷题系统 基于 SpringBoot的诗词学习记录统计系统的设计与实现 (源码+文档,讲解、调试运行,定制等)
  • UFO³开发者大赛:如何构建跨设备智能代理的终极竞赛指南
  • 为什么你的Kimi读不懂合并单元格?资深架构师拆解底层解析引擎的3层渲染机制(含xlsx结构逆向图谱)
  • Palworld存档工具终极指南:专业级Python库实战应用
  • C++实现一维数组的中值滤波
  • 开源项目 `fatih/color` 使用教程
  • 为什么92%的Blender用户还在手动调材质?AI自动风格匹配引擎上线首周即封禁内测(限时开放3个白名单通道)
  • 深度学习数据增强必读:Random Erasing论文核心观点与代码复现
  • 探索GiveawayBot核心功能:自动开奖、多 winner 设置与智能重抽详解