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