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

昇腾CANN asc-devkit:开发者工具包的核心能力和工程化实践

asc-devkit 是 CANN 开发者工具包的入口——它是一个命令行工具也是一套 IDE 插件还打包了所有开发所需的脚本和模板。定位类似于 NVIDIA 的 nsys性能分析 nvcc编译器封装 项目脚手架工具合在一起的统一入口。三个核心子工具asc-devkit/ ├── asc-cli # 命令行工具项目创建/编译/运行/调试 ├── asc-vscode # VSCode 插件语法高亮/调试面板/性能分析 └── asc-templates # 项目模板kernel/ACL推理/算子测试/性能分析asc-cli一条命令创建项目不用手动创建 CMakeLists.txt、配置环境变量、设置编译参数。asc-cli 一条命令搞定。# 创建算子开发项目asc create--typekernel--namemy_first_kernelcdmy_first_kernel tree# my_first_kernel/# ├── kernel/# │ └── my_kernel.cpp # 算子代码模板# ├── host/# │ └── main.cpp # host 端入口# ├── test/# │ └── test_my_kernel.cpp # 单元测试模板# ├── CMakeLists.txt # CMake 配置自动填充# └── ascend.json # 项目元数据# 编译asc build--targetmy_first_kernel# 背后等价于# cmake . -DCMAKE_TOOLCHAIN_FILE/path/to/ascend.cmake# make -j# 运行asc run my_first_kernel1024# 背后等价于# ./build/my_first_kernel 1024三种项目模板覆盖主流场景模板类型生成内容适用场景kernelkernel.cpp host/main.cpp CMakeLists.txt开发新算子inference模型加载 ACL 推理 前后处理模型推理部署test算子单元测试框架 覆盖率配置算子测试VSCode 插件的调试面板asc-vscode 最核心的功能是 NPU 远程调试面板——在 VSCode 里设置断点可以停在 NPU 上的 kernel 代码里。// .vscode/launch.jsonasc create 自动生成{version:0.2.0,configurations:[{name:Ascend Kernel Debug,type:ascend,request:launch,program:${workspaceFolder}/build/my_first_kernel,args:[1024],device:0,kernel:my_kernel,breakpoints:{host:[main.cpp:42],kernel:[my_kernel.cpp:15,my_kernel.cpp:28]},env:{ASCEND_DEVICE_ID:0,ASCEND_LOG_LEVEL:DEBUG}}]}调试面板提供三个视图┌─────────────────────────────────────────────┐ │ NPU Debugger Panel │ ├─────────────────────────────────────────────┤ │ Kernel State │ │ Name: my_kernel │ │ Status: RUNNING │ │ AI Core: 0 │ │ │ │ L1 Cache实时 │ │ local_a: [0x7f00_0000] size4096B │ │ local_b: [0x7f00_1000] size4096B │ │ │ │ Vector Pipeline │ │ Stage 1 [] 100%│ │ Stage 2 [ ] 65% │ │ │ │ Variables断点处快照 │ │ local_a[0..3] [1.0, 2.0, 3.0, 5.0] │ │ local_b[0..3] [0.5, 1.0, 1.5, 2.5] │ └─────────────────────────────────────────────┘调试面板能把 L1 缓存里的数据直接读出来展示——这是传统 CPU 调试器做不到的。踩坑一asc build 的 CMake 缓存污染asc build 会在项目目录创建build/目录并缓存 CMake 变量。如果用 asc build 构建了一次 Release 版本然后又手动cmake -DCMAKE_BUILD_TYPEDebug切换模式——CMake 缓存里的旧变量会覆盖新参数实际编译的还是 Release。错误操作序列asc build# 第一次默认 ReleaseCMake 缓存写了 CMAKE_BUILD_TYPERelease# 想切 Debug手动改 CMake 参数cmake-DCMAKE_BUILD_TYPEDebug build/make-j# 问题CMakeCache.txt 里 CMAKE_BUILD_TYPE 已经是 Release# cmake 不会覆盖已存在的 cache 变量# 实际编译出来仍然是 Release断言全被编译器删掉正确做法用asc build --rebuild清缓存后重新构建。asc build--rebuild--build-typeDebug# asc build --rebuild 会先删掉 build/ 目录再重建 CMake 配置踩坑二远程调试的 kernel 断点有效条件NPU 上的断点不是在所有 kernel 上都有效。断点依赖编译时插入的调试符号——而 Release 模式下编译器删掉了符号信息。断点有效条件条件有效无效编译模式-DCMAKE_BUILD_TYPEDebugRelease/RelWithDebInfokernel 代码在 L1 里有变量名字段编译器优化掉变量名多核并行单核 kernel多核断点触发顺序不可控Pipeline 阶段计算阶段COMPUTESDMA 搬运阶段异步 DMA最常见的问题是Release 模式编译的 kernel 设置断点后 VSCode 显示no debug info——需要--rebuild --build-typeDebug重新构建。踩坑三asc-templates 的模板路径硬编码asc create从asc-templates目录读取模板。如果把 asc-devkit 整体移动了位置asc create 找不到模板路径。错误现象asc create--typekernel--namemy_kernel# Error: Cannot find template kernel in /opt/asc-devkit/asc-templates/# 但 asc-devkit 安装在 /usr/local/asc-devkit/模板路径硬编码在编译时的INSTALL_PREFIX里。安装到/usr/local/后asc create 仍然去/opt/asc-devkit/找模板。修复方法设置环境变量。exportASC_TEMPLATE_PATH/usr/local/asc-devkit/asc-templates asc create--typekernel--namemy_kernel# 现在从 /usr/local/ 读取模板或者改~/.asc-config.json{template_path:/usr/local/asc-devkit/asc-templates,cache_dir:~/.cache/asc-devkit,default_build_type:Release,default_device:0}asc-devkit 把一个 NPU 开发者从零到第一个编译运行通过的 kernel 的时间从 1-2 天压缩到了不到 30 分钟。但它的价值不是为了省时间——是消除了「环境变量设对了没有」「CMake 版本兼容了没有」「头文件路径引对了没有」这类跟算子开发无关的心智负担。

相关文章:

昇腾CANN asc-devkit:开发者工具包的核心能力和工程化实践

asc-devkit 是 CANN 开发者工具包的入口——它是一个命令行工具,也是一套 IDE 插件,还打包了所有开发所需的脚本和模板。定位类似于 NVIDIA 的 nsys(性能分析) nvcc(编译器封装) 项目脚手架工具&#xff0c…...

如何为 publiccode.asia 项目贡献代码:开发者入门指南

如何为 publiccode.asia 项目贡献代码:开发者入门指南 【免费下载链接】publiccode.asia-legacy Website of https://publiccode.asia 项目地址: https://gitcode.com/gh_mirrors/pu/publiccode.asia-legacy publiccode.asia 项目致力于推动公共资金资助的软…...

昇腾CANN cann-samples:从示例代码到生产力工具的全路径

CANN 55 个仓库里,cann-samples 是最容易被低估的一个。它不定义新算子、不优化性能、不做架构设计——只提供可运行的代码示例。但正是因为「只提供示例」,cann-samples 是新手最快上手、老手最常查阅的仓库。每个示例都是独立可编译的项目:…...

Webdash API详解:如何通过RESTful接口扩展和集成外部系统

Webdash API详解:如何通过RESTful接口扩展和集成外部系统 【免费下载链接】webdash 🔥 Orchestrate your web project with Webdash the customizable web dashboard 项目地址: https://gitcode.com/gh_mirrors/we/webdash Webdash作为一款可定制…...

React状态管理权威评测:ReactStateMuseum中的10大热门方案

React状态管理权威评测:ReactStateMuseum中的10大热门方案 【免费下载链接】ReactStateMuseum A whirlwind tour of React state management systems by example 项目地址: https://gitcode.com/gh_mirrors/re/ReactStateMuseum ReactStateMuseum是一个全面的…...

MakeMeAHanzi完整指南:如何免费获取9000+汉字笔画动画数据

MakeMeAHanzi完整指南:如何免费获取9000汉字笔画动画数据 【免费下载链接】makemeahanzi Free, open-source Chinese character data 项目地址: https://gitcode.com/gh_mirrors/ma/makemeahanzi MakeMeAHanzi是一个免费开源的汉字数据项目,为开发…...

如何用开源自动化工具告别抢票焦虑:大麦自动抢票系统完全指南

如何用开源自动化工具告别抢票焦虑:大麦自动抢票系统完全指南 【免费下载链接】ticket-purchase 大麦自动抢票,支持人员、城市、日期场次、价格选择 项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase 还在为心仪演唱会门票秒空…...

大规模集群中的ksync:性能测试与资源占用优化策略

大规模集群中的ksync:性能测试与资源占用优化策略 【免费下载链接】ksync Sync files between your local system and a kubernetes cluster. 项目地址: https://gitcode.com/gh_mirrors/ks/ksync 在当今云原生开发环境中,Kubernetes文件同步工具…...

EmotiVoice终极指南:5分钟上手2000种音色的免费语音合成神器

EmotiVoice终极指南:5分钟上手2000种音色的免费语音合成神器 【免费下载链接】EmotiVoice EmotiVoice 😊: a Multi-Voice and Prompt-Controlled TTS Engine 项目地址: https://gitcode.com/gh_mirrors/em/EmotiVoice 想要让AI帮你说话吗&#xf…...

LEO卫星自愈网络:动态抗干扰与信号合并算法实践

1. 项目概述:LEO卫星自愈网络的设计挑战与创新方案在近地轨道(LEO)卫星通信领域,我们正面临着一个关键的技术矛盾:一方面,LEO卫星凭借其低延迟特性成为下一代全球通信网络的核心组成部分;另一方…...

常见网站呀

​ 1、deepseek 2、Kimi 3、智谱清言 4、文小言 ​5、globaldossier 6、豆包 7、密塔 8、必应 9、百度 10、himmpat 11、web of science...

Vue3拖拽缩放组件:如何用5分钟为你的应用添加专业级交互体验

Vue3拖拽缩放组件:如何用5分钟为你的应用添加专业级交互体验 【免费下载链接】vue3-draggable-resizable [Vue3 组件] 用于拖拽调整位置和大小的的组件,同时支持元素吸附对齐,实时参考线。 项目地址: https://gitcode.com/gh_mirrors/vu/vu…...

Keil C251中HEX文件生成异常的解决方案

1. 问题现象与背景解析最近在调试基于Intel USB Hub参考设计的嵌入式系统时,遇到一个颇为蹊跷的问题。当我从Intel官网下载了完整的USB Hub设备示例代码(约40多页的C251汇编混合代码),通过Keil Vision环境编译后,生成的…...

FanControl终极指南:3个核心模块助你打造完美风扇控制方案

FanControl终极指南:3个核心模块助你打造完美风扇控制方案 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trendin…...

服务器末级缓存优化:指令-数据关联性管理技术

1. 服务器工作负载中的末级缓存挑战在现代多核处理器架构中,共享末级缓存(Shared Last-Level Cache, LLC)的性能优化一直是计算机体系结构研究的核心课题。随着云计算和分布式计算的普及,服务器工作负载呈现出两个显著特征:指令足迹(instruct…...

CaldroidListener使用教程:轻松实现Android日期点击事件处理

CaldroidListener使用教程:轻松实现Android日期点击事件处理 【免费下载链接】Caldroid A better calendar for Android 项目地址: https://gitcode.com/gh_mirrors/ca/Caldroid Caldroid是一款功能强大的Android日历组件,而CaldroidListener则是…...

Claude Desktop for Linux桌面集成:.desktop文件与MIME类型配置

Claude Desktop for Linux桌面集成:.desktop文件与MIME类型配置 【免费下载链接】claude-desktop-debian Claude Desktop for Linux 项目地址: https://gitcode.com/GitHub_Trending/cl/claude-desktop-debian Claude Desktop for Linux是一款强大的桌面应用…...

MQTTClient技术深度解析:嵌入式物联网通信的高性能解决方案

MQTTClient技术深度解析:嵌入式物联网通信的高性能解决方案 【免费下载链接】mqttclient A high-performance, high-stability, cross-platform MQTT client, developed based on the socket API, can be used on embedded devices (FreeRTOS / LiteOS / RT-Thread …...

3步彻底告别重复GUI操作:零代码AI助手如何让你每天节省2小时

3步彻底告别重复GUI操作:零代码AI助手如何让你每天节省2小时 【免费下载链接】UI-TARS-desktop The Open-Source Multimodal AI Agent Stack: Connecting Cutting-Edge AI Models and Agent Infra 项目地址: https://gitcode.com/GitHub_Trending/ui/UI-TARS-desk…...

Conductor工作流引擎:5个步骤构建企业级分布式任务编排系统

Conductor工作流引擎:5个步骤构建企业级分布式任务编排系统 【免费下载链接】conductor Distributed workflow server 项目地址: https://gitcode.com/gh_mirrors/cond/conductor 在当今复杂的微服务架构中,分布式任务编排已经成为企业数字化转型…...

终极指南:如何在macOS上实现Windows风格的Alt-Tab窗口切换

终极指南:如何在macOS上实现Windows风格的Alt-Tab窗口切换 【免费下载链接】alt-tab-macos Windows alt-tab on macOS 项目地址: https://gitcode.com/gh_mirrors/al/alt-tab-macos 你是否曾在macOS上怀念Windows的Alt-Tab快速窗口切换体验?alt-…...

Pills CSS Grid高级技巧:嵌套布局、偏移量与自定义宽度全解析

Pills CSS Grid高级技巧:嵌套布局、偏移量与自定义宽度全解析 【免费下载链接】pills A simple responsive CSS Grid for humans. View Demo - 项目地址: https://gitcode.com/gh_mirrors/pi/pills Pills CSS Grid是一个简单、响应式、轻量级的CSS网格系统&…...

美国签证预约监控工具:自动发现更早日期并邮件通知

美国签证预约监控工具:自动发现更早日期并邮件通知 【免费下载链接】US-visa-appointment-notifier This is just a script I put together to check and notify me via email (MailGun) when theres an earlier date before my initial appointment date. It doesn…...

Ventoy主题定制完全指南:让你的启动界面焕然一新!

Ventoy主题定制完全指南:让你的启动界面焕然一新! 【免费下载链接】Ventoy A new bootable USB solution. 项目地址: https://gitcode.com/GitHub_Trending/ve/Ventoy 还在使用单调乏味的启动界面吗?Ventoy作为一款革命性的可启动U盘解…...

RefineDet检测结果可视化:使用refinedet_demo.py轻松实现目标标注

RefineDet检测结果可视化:使用refinedet_demo.py轻松实现目标标注 【免费下载链接】RefineDet Single-Shot Refinement Neural Network for Object Detection, CVPR, 2018 项目地址: https://gitcode.com/gh_mirrors/re/RefineDet RefineDet是一种高效的单阶…...

3步解锁安全镜像烧录:Balena Etcher让系统部署零风险

3步解锁安全镜像烧录:Balena Etcher让系统部署零风险 【免费下载链接】etcher Flash OS images to SD cards & USB drives, safely and easily. 项目地址: https://gitcode.com/GitHub_Trending/et/etcher 还在为制作系统启动盘而烦恼吗?你是…...

nvm-desktop技术深度解析:跨平台Node.js版本管理架构设计

nvm-desktop技术深度解析:跨平台Node.js版本管理架构设计 【免费下载链接】nvm-desktop Node Version Manager Desktop - A desktop application to manage multiple active node.js versions. 项目地址: https://gitcode.com/gh_mirrors/nv/nvm-desktop nvm…...

别再为查重和 AIGC 检测头秃!okbiye 降重 + 降 AIGC 双功能,论文安全过审的最后一道防线

okbiye-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AI PPT降重复率 - Okbiye智能写作https://www.okbiye.com/reduceAIGC 一、前言:论文提交前,你最怕的两个 “隐形杀手” 论文写到定稿,才发现重复率超标、AIGC 检测不过&am…...

tinychain实战教程:10步掌握区块链交易验证与挖矿机制

tinychain实战教程:10步掌握区块链交易验证与挖矿机制 【免费下载链接】tinychain A pocket-sized implementation of Bitcoin 项目地址: https://gitcode.com/gh_mirrors/ti/tinychain tinychain是一个轻量级的比特币实现,让你能够快速理解区块链…...

okbiye 降重 | 降 AIGC 功能实测:双标检测时代,论文合规通关的新解法

okbiye-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AI PPT降重复率 - Okbiye智能写作https://www.okbiye.com/reduceAIGC 引言:从 “单查重” 到 “双标审”,毕业论文合规压力的全面升级 当你熬夜写完一篇万字毕业论文,用查…...