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

Ascend C NPU域上板调试指南

NPU域上板调试

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

NPU域上板调试手段主要包含上板数据打印、msSanitizer内存异常检测和msDebug单步调试等功能,数据打印包括printf、DumpTensor两种方式,其中,DumpTensor是SIMD编程独有功能,用于打印指定Tensor的数据。

通过printf打印数据

printf主要用于打印标量和字符串信息,SIMT编程及SIMD编程均支持。

printf示例如下,printf接口的使用说明和具体约束请参考printf。

printf("fmt string %d", 0x123);

[!NOTE]说明 printf接口打印功能会对算子实际运行的性能带来一定影响,通常在调测阶段使用。开发者可以按需关闭打印功能。具体方法请参考printf。

SIMD编程通过DumpTensor打印进行调试

DumpTensor是SIMD编程场景独有的打印功能,用于NPU域上板打印指定Tensor的数据。

具体的使用方法如下

在算子kernel侧实现代码中需要输出日志信息的地方调用DumpTensor接口打印相关内容。

如下所示,srcLocal表示待打印的Tensor;5表示用户的自定义附加信息,比如当前的代码行号;dataLen表示元素个数。DumpTensor接口的使用说明和具体约束请参考DumpTensor。

DumpTensor(srcLocal,5, dataLen);

Dump时,每个block核的dump信息前会增加对应信息头DumpHead(32字节大小),用于记录核号和资源使用信息;每次Dump的Tensor数据前也会添加信息头DumpTensorHead(32字节大小),用于记录Tensor的相关信息。打印结果的样例如下:

DumpTensor: desc=5, addr=0, data_type=float16, position=UB, dump_size=32 [19.000000, 4.000000, 38.000000, 50.000000, 39.000000, 67.000000, 84.000000, 98.000000, 21.000000, 36.000000, 18.000000, 46.000000, 10.000000, 92.000000, 26.000000, 38.000000, 39.000000, 9.000000, 82.000000, 37.000000, 35.000000, 65.000000, 97.000000, 59.000000, 89.000000, 63.000000, 70.000000, 57.000000, 35.000000, 3.000000, 16.000000, 42.000000] DumpTensor: desc=5, addr=100, data_type=float16, position=UB, dump_size=32 [6.000000, 34.000000, 52.000000, 38.000000, 73.000000, 38.000000, 35.000000, 14.000000, 67.000000, 62.000000, 30.000000, 49.000000, 86.000000, 37.000000, 84.000000, 18.000000, 38.000000, 18.000000, 44.000000, 21.000000, 86.000000, 99.000000, 13.000000, 79.000000, 84.000000, 9.000000, 48.000000, 74.000000, 52.000000, 99.000000, 80.000000, 53.000000] ... DumpTensor: desc=5, addr=0, data_type=float16, position=UB, dump_size=32 [35.000000, 41.000000, 41.000000, 22.000000, 84.000000, 49.000000, 60.000000, 0.000000, 90.000000, 14.000000, 67.000000, 80.000000, 16.000000, 46.000000, 16.000000, 83.000000, 6.000000, 70.000000, 97.000000, 28.000000, 97.000000, 62.000000, 80.000000, 22.000000, 53.000000, 37.000000, 23.000000, 58.000000, 65.000000, 28.000000, 4.000000, 29.000000]

[!NOTE]说明 DumpTensor接口打印功能会对算子实际运行的性能带来一定影响,通常在调测阶段使用。开发者可以按需关闭打印功能。具体方法请参考DumpTensor。

使用msSanitizer工具进行异常检测

msSanitizer工具是基于AI处理器的异常检测工具,包含了单算子开发场景下的内存检测、竞争检测、未初始化检测和同步检测四个子功能。

  • 内存检测:工具可以在用户开发算子的过程中,协助定位非法读写、多核踩踏、非对齐访问、内存泄漏以及非法释放等内存问题。同时工具也支持对CANN软件栈的内存检测,帮助用户定界软件栈内存异常发生的模块。
  • 竞争检测:工具可以协助用户定位由于竞争风险可能导致的数据竞争问题,包含核内竞争和核间竞争问题。其中,核内竞争包含流水间竞争和流水内竞争。
  • 未初始化检测:工具可以协助用户定位由于内存未初始化可能导致的脏数据读取问题。
  • 同步检测:工具可以协助用户定位由于前序算子中的未配对同步指令导致的后续算子同步失败的问题。

具体使用方法请参考《算子开发工具用户指南》。

该功能仅在如下场景支持

  • 通过基于样例工程完成Kernel直调方式调用算子。

  • 通过单算子API调用方式调用算子。

  • 间接调用单算子API(aclnnxxx)接口:Pytorch框架单算子直调的场景。

使用msDebug工具进行算子调试

msDebug是一款面向昇腾设备的算子调试工具,用于调试NPU侧运行的算子程序,为算子开发人员提供调试手段,当前只支持SIMD编程场景的程序调试,暂不支持SIMT编程场景的程序调试。msDebug工具支持调试所有的昇腾算子,包含Ascend C算子(Vector、Cube以及融合算子)程序。具体功能包括断点设置、打印变量和内存、单步调试、中断运行、核切换、检查程序状态、调试信息展示、解析Core dump文件,用户可根据实际情况进行选择。具体使用方法请参考《算子开发工具用户指南》。

  • 通过基于样例工程完成Kernel直调方式调用算子。

  • 通过单算子API调用方式调用算子。

  • 间接调用单算子API(aclnnxxx)接口:Pytorch框架单算子直调的场景。

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

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

http://www.jsqmd.com/news/803783/

相关文章:

  • Simulink解析arxml:从AP描述文件到可执行模型的自动化实践
  • 深入拆解USB鼠标数据包:从报告描述符的位(bit)到STM32代码的完整解析流程
  • 使用 Taotoken 后 MATLAB 调用大模型的延迟与成功率观测体验
  • 软件测试行业的结构性变化:外包测试正在消失,高端测试供不应求
  • 1688商家为何要做AI推广? - 速递信息
  • VS Code语音唤醒扩展Wake Word:本地化关键词检测提升开发效率
  • 2026聚焦“北京福顺胜”及多家优秀再生资源回收企业 - 速递信息
  • 微信小程序二维码生成终极指南:3步快速上手weapp-qrcode
  • 超越H.264?深入解读DVC:首个端到端深度学习视频压缩框架的架构设计与核心思想
  • 如何为恋活!游戏安装终极增强补丁:完整指南
  • 2026年智能客服产品推荐:全渠道自动化系统选型避坑指南 - 博客万
  • 2026最权威的AI论文方案实测分析
  • Mac用户的跨平台文件交换终极解决方案:免费NTFS读写工具Nigate完整指南
  • 2026年江苏二手PCB设备买卖市场深度指南:从成本困局到产能升级的完整解决方案 - 优质企业观察收录
  • 2026年广东二手PCB设备买卖市场完全指南:隆兴诚旺如何破局设备循环困局 - 优质企业观察收录
  • 从Cortex-M3手册到HAL库:深入理解STM32中断寄存器的封装与缺失(以IABR为例)
  • 收藏!小白程序员必看:AI大模型入门指南,抓住下一个风口!
  • taotoken计费透明性让ubuntu团队清楚每一分token花在哪里
  • SQL Server备份:使用SSMS维护计划向导配置数据库每日自动备份_2026-01-01
  • 统一脑区命名
  • dcm2niix完全教程:医学影像数据格式转换的终极解决方案
  • 2026年5月济南560环模颗粒机/平模颗粒机/粉碎机/搅拌机/450平模颗粒机厂家解析,济南盛鹏机械 - 2026年企业推荐榜
  • 在ubuntu上使用nodejs通过taotoken统一调用多模型api
  • 新形势下电力营销的数字化转型与数据驱动创新研究
  • ubuntu系统的安装与使用
  • 从零构建个人信息雷达:TrendRadar三层过滤模型与部署实战
  • 【PHP】编写php扩展
  • AzurLaneAutoScript:碧蓝航线自动化脚本终极解决方案
  • 企业内如何安全地通过Taotoken管理各部门的AI模型使用权限
  • AI信息摘要系统:从RSS抓取到LLM摘要的自动化实现