CANN/asc-devkit:AddrReg地址寄存器API 📅 发布时间:2026/7/16 23:27:50 👁️ 浏览次数: AddrReg【免费下载链接】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_addrreg_intf.h。AddrReg是用于Reg矢量计算接口管理地址偏移量的专用寄存器。在循环外定义后在循环内调用模板函数CreateAddrReg 接口赋值并绑定每层循环轴索引index与步长stride能够在多维循环中逐层累加地址偏移。CreateAddrReg接口支持绑定1-4层for循环返回的地址偏移由index*stride的决定在循环中index每次递增1AddrReg的偏移量就自动增加对应的stride具体的偏移量满足如下伪代码所示// 1层循环: AscendC::Reg::AddrReg aReg; for (uint16_t index0 0; index0 loopNum0; index0){ aReg AscendC::Reg::CreateAddrRegT(index0, stride0); // Offset index0 * stride0 } // 2层循环 AscendC::Reg::AddrReg aReg; for (uint16_t index0 0; index0 loopNum0; index0){ for (uint16_t index1 0; index1 loopNum1; index1){ aReg AscendC::Reg::CreateAddrRegT(index0, stride0, index1, stride1); // Offset index0 * stride0 index1 * stride1 } } // 3层循环 AscendC::Reg::AddrReg aReg; for (uint16_t index0 0; index0 loopNum0; index0){ for (uint16_t index1 0; index1 loopNum1; index1){ for (uint16_t index2 0; index2 loopNum2; index2){ aReg AscendC::Reg::CreateAddrRegT(index0, stride0, index1, stride1, index2, stride2); // Offset index0 * stride0 index1 * stride1 index2 * stride2 } } } // 4层循环 AscendC::Reg::AddrReg aReg; for (uint16_t index0 0; index0 loopNum0; index0){ for (uint16_t index1 0; index1 loopNum1; index1){ for (uint16_t index2 0; index2 loopNum2; index2){ for (uint16_t index3 0; index3 loopNum3; index3){ aReg AscendC::Reg::CreateAddrRegT(index0, stride0, index1, stride1, index2, stride2, index3, stride3); // Offset index0 * stride0 index1 * stride1 index2 * stride2 index3 * stride3 } } } }AddrReg应该通过CreateAddrReg API初始化然后在循环中使用AddrReg存储地址偏移量。AddrReg在每层循环中根据所设置的stride进行自增。函数原型// offset index0 * stride0 template typename T __simd_callee__ inline AddrReg CreateAddrReg(uint16_t index0, uint32_t stride0) // offset index0 * stride0 index1 * stride1 template typename T __simd_callee__ inline AddrReg CreateAddrReg(uint16_t index0, uint32_t stride0, uint16_t index1, uint32_t stride1) // offset index0 * stride0 index1 * stride1 index2 * stride2 template typename T __simd_callee__ inline AddrReg CreateAddrReg(uint16_t index0, uint32_t stride0, uint16_t index1, uint32_t stride1, uint16_t index2, uint32_t stride2) // offset index0 * stride0 index1 * stride1 index2 * stride2 index3 * stride3 template typename T __simd_callee__ inline AddrReg CreateAddrReg(uint16_t index0, uint32_t stride0, uint16_t index1, uint32_t stride1, uint16_t index2, uint32_t stride2, uint16_t index3, uint32_t stride3)参数说明参数含义T模板参数支持的数据类型为b8、b16、b32、b64。index0计算偏移量时作为最外层循环轴。index1计算偏移量时作为第二层循环轴。index2计算偏移量时作为第三层循环轴。index3计算偏移量时作为第四层循环轴。stride0每次循环最外层循环轴对应的地址偏移量单位为element。stride1每次循环第二层循环轴对应的地址偏移量单位为element。stride2每次循环第三层循环轴对应的地址偏移量单位为element。stride3每次循环第四层循环轴对应的地址偏移量单位为element。支持的型号Ascend 950PR/Ascend 950DT约束说明AddrReg 为地址偏移量寄存器仅支持部分搬运指令使用请根据Reg数据搬运接口函数原型选择除了通过AddrReg设置地址偏移支持用户自行累加地址或通过PostUpdate模式进行地址自增完整特性见连续对齐搬入关键特性。通过AddrReg地址偏移进行搬运时需要满足对应搬运指令的地址对齐约束。AddrReg 数量上限为8。由于硬件循环(HardwareLoop)限制AddrReg最多支持4层循环轴。调用示例__simd_vf__ inline void CreateAddrRegVF(__ubuf__ T* dstAddr, __ubuf__ T* srcAddr, uint16_t oneRepeatSize, uint16_t repeatTimes) { AscendC::Reg::MaskReg mask AscendC::Reg::CreateMaskT(); AscendC::Reg::AddrReg aReg; for (uint16_t i 0; i repeatTimes; i) { aReg AscendC::Reg::CreateAddrRegT(i, oneRepeatSize); AscendC::Reg::LoadAlign(mask, srcAddr, aReg); AscendC::Reg::StoreAlign(dstAddr, mask, aReg); } }【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
FPGA锁相环(PLL)原理与PG2L50H开发板实战配置 1. 锁相环在FPGA设计中的核心价值在RK3568PG2L50H这类异构计算平台上,FPGA的时钟管理能力直接决定了系统性能上限。Pango Design Suite提供的锁相环(PLL)资源,本质上是一个精密的数字频率合成器,它能将板载晶振的基准时… 2026/7/16 23:27:50
API开发必须关注的核心安全问题 不知道你有没有这种感觉:每次看到安全漏洞通报,心里都会咯噔一下,想着“这个漏洞我的API有没有?”然后赶紧去翻代码,结果发现好像没有,又好像有——那种模棱两可的感觉最折磨人。 API安全这东西,… 2026/7/16 23:21:48
内网渗透实战:FRP隧道构建与多层网络穿透 1. FRP隧道技术基础解析FRP(Fast Reverse Proxy)是一款专注于内网穿透的高性能反向代理工具,它的核心功能是通过公网服务器中转,将外部请求转发到内网服务。我第一次接触FRP是在2017年做远程办公方案时,当时就被它简洁… 2026/7/16 23:19:48
OpenHarmony 权限统一封装 PermissionUtil(动态权限申请全套方案 API23+) 摘要鸿蒙将权限分为安装时静态权限与运行时动态敏感权限,相机、相册、文件、通知、位置等都必须动态申请,原生权限 API 重复代码多、缺少永久拒绝跳转设置页逻辑、无统一弹窗提示、未做权限状态判断封装。本文基于ohos.accessToken封装全局权限工具类&am… 2026/7/17 0:46:27
AI模型评估与基准测试:从GLUE到MMLU的演进 AI模型评估与基准测试:从GLUE到MMLU的演进模型评估是AI发展的基石。从早期的单一任务准确率到现代的综合能力基准,评估体系经历了根本性变革。本文将系统梳理NLP和通用AI评估基准的演进,分析各类评测的设计原理和局限性,帮助读者建… 2026/7/17 0:38:23
如何快速在OpenEuler上安装Qt6:5分钟搭建跨平台GUI开发环境 如何快速在OpenEuler上安装Qt6:5分钟搭建跨平台GUI开发环境 【免费下载链接】qt6 Qt6 meta package 项目地址: https://gitcode.com/openeuler/qt6 前往项目官网免费下载:https://ar.openeuler.org/ar/ 想要在OpenEuler上快速搭建跨平台GUI开发环… 2026/7/17 0:36:22
如何为ukui-themes贡献主题:社区参与与主题提交完整流程 如何为ukui-themes贡献主题:社区参与与主题提交完整流程 【免费下载链接】ukui-themes The theme collections of UKUI. 项目地址: https://gitcode.com/openeuler/ukui-themes 前往项目官网免费下载:https://ar.openeuler.org/ar/ ukui-themes是… 2026/7/17 0:36:22
HarmonyOS 应用开发《掌上英语》第17篇:声明式 UI 构建范式——ArkTS 的 @Builder 装饰器深入 声明式 UI 构建范式——ArkTS 的 Builder 装饰器深入引言 在 HarmonyOS 的 ArkTS 声明式 UI 框架中,Builder 装饰器是一个极其重要的构建工具。它允许开发者将 UI 片段封装为可复用的构建函数,从而避免在 build() 方法中编写臃肿的嵌套代码。本文将通过我… 2026/7/17 0:34:20
HarmonyOS 应用开发《掌上英语》第16篇:枚举与常量管理:RouterMap 的设计模式 枚举与常量管理:RouterMap 的设计模式一、引言 在大型应用中,路由路径的管理是一件容易被忽视但影响深远的事情。如果每个页面跳转都直接使用字符串字面量,一旦路径需要修改,将面临全局搜索替换的噩梦——改漏一个就会导致页面跳转… 2026/7/17 0:34:20
【WPS AI表格避坑白皮书】:实测发现87%用户正在误用AI函数——这5个致命错误导致结果偏差超42% 更多请点击: https://intelliparadigm.com 第一章:WPS AI表格的核心能力与适用边界 WPS AI表格将大语言模型能力深度集成于电子表格环境中,实现从自然语言指令到结构化数据操作的端到端转化。其核心并非替代传统公式或宏编程,而是… 2026/7/17 0:00:08
Cursor终端插件生态避坑指南:23个实测低效插件黑名单,附3个自研轻量替代方案 更多请点击: https://intelliparadigm.com 第一章:Cursor终端插件生态避坑指南概览 Cursor 作为基于 VS Code 内核构建的 AI 原生编辑器,其终端插件生态虽活跃,但存在兼容性断层、权限策略突变与调试链路断裂等典型风险。开发者常… 2026/7/17 0:00:08
ChatGPT写作提示词效率革命:单条提示词响应质量提升3.8倍的关键变量(附可复用提示词矩阵表) 更多请点击: https://codechina.net 第一章:ChatGPT写作提示词效率革命:单条提示词响应质量提升3.8倍的关键变量(附可复用提示词矩阵表) 提示词工程已从经验试错迈入变量驱动的科学阶段。实证研究表明,影响… 2026/7/17 0:00:08
Git reset 与 revert 深度对比:5个关键差异与 3 种典型应用场景 Git Reset 与 Revert 深度对比:5个关键差异与3种典型应用场景在团队协作开发中,代码版本管理如同行走钢丝——一步失误可能导致整个项目陷入混乱。作为Git进阶用户,你是否曾在深夜面对错误的提交束手无策?是否在强制推送后收到同事… 2026/7/17 0:28:39
GitHub 学生包申请避坑:5个常见失败原因与开发者工具调试方案 GitHub 学生包申请技术排障指南:5个高频失败场景与开发者工具实战方案第一次尝试申请GitHub学生包时,我盯着屏幕上那个不断转圈的加载动画整整15分钟,最终只等来了一行冰冷的错误提示。这可能是许多开发者共同的经历——明明按照教程操作&… 2026/7/16 3:47:53
冒烟测试用例设计规范:5%-10%覆盖率下的3类核心场景与执行标准 冒烟测试用例设计的黄金法则:5%-10%覆盖率下的精准筛选策略在快节奏的敏捷开发环境中,冒烟测试作为质量保障的第一道防线,其重要性不言而喻。当测试资源有限而时间紧迫时,如何从海量测试用例中精准筛选出那关键的5%-10%࿰… 2026/7/16 12:08:13