news 2026/7/16 15:30:24

CANN/asc-devkit SIMD Or操作

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CANN/asc-devkit SIMD Or操作

# Or

【免费下载链接】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_binary_intf.h"(对RegTensor操作)、"basic_api/reg_compute/kernel_reg_compute_maskreg_intf.h"(对MaskReg操作)。

本节介绍两种接口,分别用于对RegTensor和MaskReg进行操作:

  • RegTensor操作:

    根据mask对输入数据srcReg0、srcReg1按位求或(|)操作,将结果写入dstReg。

  • MaskReg操作:

    根据mask对两个输入MaskReg数据src0、src1按位求或(|)操作,将结果写入dst。

函数原型

  • RegTensor操作

    template <typename T = DefaultType, MaskMergeMode mode = MaskMergeMode::ZEROING, typename U> __simd_callee__ inline void Or(U& dstReg, U& srcReg0, U& srcReg1, MaskReg& mask)
  • MaskReg操作

    __simd_callee__ inline void Or(MaskReg& dst, MaskReg& src0, MaskReg& src1, MaskReg& mask)

参数说明

  • RegTensor操作

    表1模板参数说明

    参数名描述
    T操作数数据类型。
    modeMaskMergeMode枚举类型。选择MERGING模式或ZEROING模式。
    • ZEROING模式下,mask未筛选的元素在dstReg中置零。
    • MERGING模式当前不支持。
    U目的操作数和源操作数的RegTensor类型,例如RegTensor<uint32_t>,由编译器自动推导,用户不需要填写。

    表2参数说明

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

    表3参数说明

    参数名描述
    dst目的操作数。
    src0源操作数。
    src1源操作数。
    mask指示在计算过程中哪些bits有效。

返回值说明

数据类型

支持的数据类型为:bool、int8_t、uint8_t、int16_t、uint16_t、int32_t、uint32_t、int64_t、uint64_t。

约束说明

调用示例

  • RegTensor操作

    template <typename T> __simd_vf__ inline void OrVF(__ubuf__ T* dstAddr, __ubuf__ T* src0Addr, __ubuf__ T* src1Addr, uint32_t count, uint32_t oneRepeatSize, uint16_t repeatTimes) { AscendC::Reg::RegTensor<T> srcReg0; AscendC::Reg::RegTensor<T> srcReg1; AscendC::Reg::RegTensor<T> dstReg; AscendC::Reg::MaskReg mask; for (uint16_t i = 0; i < repeatTimes; i++) { AscendC::Reg::LoadAlign(srcReg0, src0Addr + i * oneRepeatSize); AscendC::Reg::LoadAlign(srcReg1, src1Addr + i * oneRepeatSize); mask = AscendC::Reg::UpdateMask<T>(count); AscendC::Reg::Or(dstReg, srcReg0, srcReg1, mask); AscendC::Reg::StoreAlign(dstAddr + i * oneRepeatSize, dstReg, mask); } }
  • MaskReg操作

    template <typename T> __simd_vf__ inline void OrVF(__ubuf__ T* dstAddr, __ubuf__ T* srcAddr, uint32_t count, uint32_t oneRepeatSize, uint16_t repeatTimes) { AscendC::Reg::RegTensor<T> srcReg; AscendC::Reg::MaskReg src0 = AscendC::Reg::CreateMask<T, AscendC::Reg::MaskPattern::ALLF>(); AscendC::Reg::MaskReg src1 = AscendC::Reg::CreateMask<T, AscendC::Reg::MaskPattern::ALL>(); AscendC::Reg::MaskReg dst; AscendC::Reg::MaskReg mask; for (uint16_t i = 0; i < repeatTimes; ++i) { mask = AscendC::Reg::UpdateMask<T>(count); AscendC::Reg::LoadAlign(srcReg, srcAddr + i * oneRepeatSize); AscendC::Reg::Or(dst, src0, src1, mask); AscendC::Reg::Adds(srcReg, srcReg, 0, dst); AscendC::Reg::StoreAlign(dstAddr + i * oneRepeatSize, srcReg, mask); } }

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

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

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

专业系统稳定性测试实战:stress-ng深度解析与高效应用

专业系统稳定性测试实战&#xff1a;stress-ng深度解析与高效应用 【免费下载链接】stress-ng This is the stress-ng upstream project git repository. stress-ng will stress test a computer system in various selectable ways. It was designed to exercise various phys…

作者头像 李华
网站建设 2026/7/16 15:29:22

从零构建AI原生智能体:Hello-Agents实战指南

1. 项目概述&#xff1a;Hello-Agents的诞生与使命2025年被称为"智能体元年"&#xff0c;技术焦点从基础模型训练转向智能体应用开发。但市场上系统性的实战教程寥寥无几——这正是Datawhale社区推出《Hello-Agents》项目的初衷。作为一本从零开始构建智能体的开源教…

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

视频直播点播/云点播/云直播EasyDSS一体化云平台助力数字赛事直播全新升级

随着数字赛事产业高速发展&#xff0c;赛事直播早已突破单纯的视频画面传输范畴&#xff0c;演变为集安全管控、高清视听、智能运营于一体的系统化、数字化工程。EasyDSS作为一体化视频会议与直播平台&#xff0c;依托数据自主可控的核心优势、全流程的视频服务能力及AI智能化技…

作者头像 李华
网站建设 2026/7/16 15:29:08

计算机小程序毕设实战-公司食堂订餐管理系统的设计与实现 基于 Django + 微信小程序的企业线上订餐服务平台【完整源码+LW+部署说明+演示视频,全bao一条龙等】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

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

5分钟掌握BDSup2Sub:解决蓝光字幕转换难题的终极方案

5分钟掌握BDSup2Sub&#xff1a;解决蓝光字幕转换难题的终极方案 【免费下载链接】BDSup2Sub Blu-Ray/DVD subtitle editor 项目地址: https://gitcode.com/gh_mirrors/bd/BDSup2Sub 还在为不同视频格式的字幕不兼容而烦恼吗&#xff1f;BDSup2Sub作为一款专业的位图字幕…

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

C++条件变量wait_for:低延迟高响应系统的核心同步机制

1. 项目概述&#xff1a;为什么我们需要更聪明地“等待”&#xff1f; 在C高性能编程的世界里&#xff0c;尤其是在游戏服务器、高频交易、实时音视频处理这些对延迟极度敏感的领域&#xff0c;“等待”这个词听起来就像是一个性能黑洞。传统的忙等待&#xff08;Busy-waiting&…

作者头像 李华