news 2026/7/16 11:22:35

cann/asc-devkit Compare函数文档

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
cann/asc-devkit Compare函数文档

# Compare

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

产品支持情况

  • Ascend 950PR/Ascend 950DT:支持
  • Atlas A3 训练系列产品/Atlas A3 推理系列产品:不支持
  • Atlas A2 训练系列产品/Atlas A2 推理系列产品:不支持
  • Atlas 200I/500 A2 推理产品:不支持
  • Atlas 推理系列产品 AI Core:不支持
  • Atlas 推理系列产品 Vector Core:不支持
  • Atlas 训练系列产品:不支持

功能说明

头文件路径为:"basic_api/reg_compute/kernel_reg_compute_vec_cmpsel_intf.h"

逐元素比较两个RegTensor大小,根据模板参数指定的比较模式,将比较结果写入目的操作数MaskReg中对应比特位,如果比较后的结果为真,则输出结果的对应比特位为1,否则为0。

其中cmp由模板参数mode指定比较模式,取值为EQ/GT/LT/GE/NE/LE。

函数原型

template <typename T = DefaultType, CMPMODE mode = CMPMODE::EQ, typename U> __simd_callee__ inline void Compare(MaskReg& dst, U& srcReg0, U& srcReg1, MaskReg& mask)

参数说明

表1模板参数说明

参数名描述
T操作数数据类型。
mode比较模式。支持如下取值:
• LT:小于
• GT:大于
• GE:大于或等于
• EQ:等于
• NE:不等于
• LE:小于或等于
U源操作数的RegTensor类型,例如RegTensor<half>,由编译器自动推导,用户不需要填写。

表2参数说明

参数名输入/输出描述
dst输出MaskReg类型,目的操作数。
srcReg0、srcReg1输入源操作数。
类型为RegTensor。
两个源操作数的数据类型需要与目的操作数保持一致。
mask输入源操作数元素操作的有效指示,详细说明请参考MaskReg。

返回值说明

数据类型

表3数据类型组合

srcReg0和srcReg1数据类型dst数据类型
int8_tMaskReg
uint8_tMaskReg
int16_tMaskReg
uint16_tMaskReg
halfMaskReg
bfloat16_tMaskReg
int32_tMaskReg
uint32_tMaskReg
floatMaskReg
int64_tMaskReg
uint64_tMaskReg

约束说明

  • 通过mask参数控制的未选中元素在目的操作数中被置零。
  • 操作数重叠约束:srcReg0和srcReg1可以是同一个RegTensor

调用示例

// 示例:逐元素比较src0Addr和src1Addr的数据(EQ模式),再按比较结果掩码选取元素写入dstAddr // 输入:src0Addr指向源操作数0(如half类型[1.0, 4.0, 3.0, 2.0, 5.0, 6.0, 7.0, 8.0, 1.0, 2.0, 9.0, 3.0, 4.0, 6.0, 5.0, 7.0, ...]) // src1Addr指向源操作数1(如half类型[1.0, 3.0, 3.0, 5.0, 2.0, 6.0, 9.0, 4.0, 2.0, 5.0, 9.0, 1.0, 8.0, 3.0, 5.0, 6.0, ...]) // 对应位置关系:pos0等于(1.0==1.0)、pos1大于(4.0>3.0)、pos2等于(3.0==3.0)、pos3小于(2.0<5.0)... // 输出:dstMask为比较结果掩码(EQ模式下[1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, ...],等于位置为1,其余为0) // dstAddr存储按掩码Select选取的结果 template<typename T> __simd_vf__ inline void CompareVF(__ubuf__ T* dstAddr, __ubuf__ T* src0Addr, __ubuf__ T* src1Addr, uint32_t count, uint32_t oneRepeatSize, uint16_t repeatTimes) { AscendC::Reg::RegTensor<T> srcReg0; // 源操作数0 AscendC::Reg::RegTensor<T> srcReg1; // 源操作数1 AscendC::Reg::RegTensor<T> dstReg; // 目的操作数,存储Select选取的结果 AscendC::Reg::MaskReg mask; AscendC::Reg::MaskReg dstMask; // 比较结果掩码,相等位置为1 for (uint16_t i = 0; i < repeatTimes; i++) { mask = AscendC::Reg::UpdateMask<T>(count); // 根据实际元素个数更新mask AscendC::Reg::LoadAlign(srcReg0, src0Addr + i * oneRepeatSize); // 加载源操作数0 AscendC::Reg::LoadAlign(srcReg1, src1Addr + i * oneRepeatSize); // 加载源操作数1 AscendC::Reg::Compare<T, AscendC::CMPMODE::EQ>(dstMask, srcReg0, srcReg1, mask); // 逐元素比较是否相等,结果写入dstMask AscendC::Reg::Select(dstReg, srcReg0, srcReg1, dstMask); // 按比较结果掩码选取元素 AscendC::Reg::StoreAlign(dstAddr + i * oneRepeatSize, dstReg, mask); // 将选取结果存回dstAddr } }

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

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

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

Unity与Android交互开发实战指南

1. 项目概述&#xff1a;Unity程序员如何快速掌握Android开发核心技能作为Unity开发者&#xff0c;当我们需要将游戏发布到Android平台时&#xff0c;经常会遇到各种平台相关的技术问题。上周参加鹅厂技术分享会后&#xff0c;我系统梳理了Unity与Android交互的核心知识点&…

作者头像 李华
网站建设 2026/7/16 11:21:44

Claude Code+OpenSpec+ECC:AI编程工程化协同开发体系

1. Claude Code OpenSpec Everything Claude Code 协同开发体系概述在当今AI辅助编程领域&#xff0c;开发者面临的最大挑战已经从"模型能力不足"转变为"工程化落地困难"。根据2024年Google DORA报告显示&#xff0c;虽然AI编码助手的采用率每提升25%&am…

作者头像 李华
网站建设 2026/7/16 11:21:28

差分放大器在ADC信号调理中的关键应用

1. 差分输出差动放大器在ADC前级的关键作用在精密信号采集系统中&#xff0c;差分输出差动放大器&#xff08;Differential Output Differential Amplifier&#xff09;常作为模数转换器&#xff08;ADC&#xff09;的前置调理电路。这种配置的核心价值在于它能同时解决三个关键…

作者头像 李华
网站建设 2026/7/16 11:19:55

LlamaCoder:基于Llama 3.1的AI编程助手实战指南

1. LlamaCoder项目概述LlamaCoder是Together AI基于Meta最新开源的Llama 3.1 405B大语言模型开发的AI编程助手工具。这个完全开源的项目允许开发者通过自然语言描述直接生成可运行的应用程序代码&#xff0c;目前已在GitHub上获得超过3000星标&#xff0c;生成超过20万个应用实…

作者头像 李华