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

CANN/asc-devkit SIMD API UnPack函数

UnPack

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

产品支持情况

产品

是否支持

Ascend 950PR/Ascend 950DT

Atlas A3 训练系列产品 / Atlas A3 推理系列产品

x

Atlas A2 训练系列产品 / Atlas A2 推理系列产品

x

Atlas 200I/500 A2 推理产品

x

Atlas 推理系列产品 AI Core

x

Atlas 推理系列产品 Vector Core

x

Atlas 训练系列产品

x

功能说明

根据所选的低位模式或高位模式,将输入MaskReg的低半部分或高半部分展开到输出MaskReg。展开方式为:将每bit展开为2bit,高位置零。

函数原型

template <HighLowPart part = HighLowPart::LOWEST> __simd_callee__ inline void UnPack(MaskReg& dst, MaskReg& src);

参数说明

表 1模板参数说明

参数名

描述

part

枚举类型,低位模式或高位模式。

  • LOWEST 低位模式;
  • HIGHEST 高位模式。

表 2参数说明

参数名

描述

dst

目的操作数。

src

源操作数。

返回值说明

约束说明

调用示例

template <typename T> __simd_vf__ inline void UnpackVF(__ubuf__ T* dstAddr, __ubuf__ T* srcAddr, uint32_t count, uint32_t oneRepeatSize, uint16_t repeatTimes) { AscendC::Reg::RegTensor<T> srcReg; AscendC::Reg::MaskReg maskFull = AscendC::Reg::CreateMask<T, AscendC::Reg::MaskPattern::ALL>(); AscendC::Reg::MaskReg mask0; AscendC::Reg::MaskReg mask1; AscendC::Reg::UnPack<AscendC::Reg::HighLowPart::LOWEST>(mask0, maskFull); for (uint16_t i = 0; i < repeatTimes; ++i) { mask1 = AscendC::Reg::UpdateMask<T>(count); AscendC::Reg::LoadAlign(srcReg, srcAddr + i * oneRepeatSize); AscendC::Reg::Adds(srcReg, srcReg, 0, mask0); AscendC::Reg::StoreAlign(dstAddr + i * oneRepeatSize, srcReg, mask1); } }

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

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

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

相关文章:

  • 终极Windows窗口管理神器workspacer:告别混乱桌面的10个高效技巧
  • Speakeasy深度解析:从零开始构建Windows内核模式仿真环境
  • AI写专著超强指南:选对AI专著写作工具,3天完成20万字专著!
  • 嵌入式Bootloader安全机制:从数字签名到安全启动的实战设计
  • 2026年5月最新乌鸫科技面经:低代码主子表、RBAC、统一支付接口设计都问到了
  • VSCode里Code Runner跑Python总报9009?别慌,检查一下你的setting.json文件
  • 天下工厂的数据准不准?数据从哪来
  • mat-chem-sim-pred开发者指南:如何贡献新的科学计算算子
  • 三步搞定Windows和Office永久激活:KMS_VL_ALL_AIO智能激活全攻略
  • 保姆级教程:用闲置服务器自建ZeroTier Planet根服务器,打通安卓/iOS/Mac/路由器/群晖全平台内网穿透
  • 别再手动改配置了!用FastAPI + python-dotenv实现多环境(开发/测试/生产)一键切换
  • Qt C++ 集成 SQLite 实现本地数据持久化:从原理到宠物投喂器实战
  • 5分钟快速上手:京东自动抢购神器终极指南
  • 告别手动打字!PowerToys文本提取器如何用3分钟改变你的工作流
  • FanControl风扇控制终极指南:5分钟实现Windows智能散热管理
  • 5步掌握MaxBot:从零开始的抢票机器人实战指南
  • 别再让回车变空格!手把手教你用JavaScript处理textarea换行符(含 转br实战)
  • 计算机视觉实战:用YOLO实现实时目标检测
  • 避坑指南:解决Creo安装Simscape Multibody Link后找不到protk.dat和配置失败问题
  • 【RK3588-AI-001】RK3588嵌入式AI学习开篇:板卡介绍与整体实战学习规划
  • URLFinder实战指南:高效解决Web信息收集难题的安全检测利器
  • 搞定STM32/GD32的I2C引脚冲突:一个支持时钟延展的软件模拟I2C驱动实战
  • Diablo Edit2完全指南:暗黑破坏神2存档修改器终极使用教程
  • 保姆级教程:在Ubuntu 22.04上搞定Intel Arc A770显卡驱动与OpenVINO AI推理环境
  • 深入Keil Debug:除了Memory Map,你更应该了解的软件仿真内存管理机制与避坑指南
  • 护照照片怎么手机自己拍?最新规格要求与制作方法完整指南(2026实测)
  • 不止于解题:聊聊猪圈密码、圣堂武士密码和标准银河字母背后的历史与趣闻
  • 3步搞定Android Studio中文界面:告别英文困扰,提升开发效率
  • OneKey虚拟卡深度体验:除了解锁ChatGPT,它还能怎么玩?(附真实使用场景与费用分析)
  • 3步搞定Windows虚拟显示器:ParsecVDD让你的远程桌面焕然一新