CANN/asc-tools CPU调试工具使用指南
cpu debug【免费下载链接】asc-toolsAscend C Tools仓是CANN基于Ascend C编程语言推出的配套调试工具仓。项目地址: https://gitcode.com/cann/asc-tools概述在算子部署到NPU上之前CPU Debug工具帮助用户在CPU上进行功能和精度的基本验证。开发者使用Ascend C编写算子Kernel侧源码通过bisheng编译器编译生成CPU域的可执行程序即可使用gdb等常规调试手段对算子进行调试。环境准备请参考快速入门完成环境准备。使用方法以cpudebug样例为例只需以下两步即可开始CPU调试。步骤1添加头文件引用在通过调用核函数的源文件中添加如下代码#ifdef ASCENDC_CPU_DEBUG #include cpu_debug_launch.h #endifbisheng编译器在CPU调试模式下会通过该头文件对形式的核函数调用进行转义从而在CPU上执行核函数该修改不会影响代码在NPU模式下的编译运行。步骤2编译并运行以dav-2201架构的NPU如Ascend910B1为例cmake -B build -DCMAKE_ASC_RUN_MODEcpu -DCMAKE_ASC_ARCHITECTURESdav-2201; cmake --build build; ./build/add编译选项说明选项说明CMAKE_ASC_RUN_MODE指定为cpu, 开启CPU域编译CMAKE_ASC_ARCHITECTURES指定NPU架构版本号CMake会根据该值配置对应的CPU调试依赖库。dav-2201对应 Atlas A2/A3 系列dav-3510对应 Ascend 950PR/Ascend 950DT调试方法编译生成的CPU域可执行程序支持通过gdb进行调试。gdb支持设置断点、查看寄存器和内存状态、单步执行、查看调用栈等常用调试操作。CPU Debug通过为每个核函数启动单独的子进程来模拟NPU的执行逻辑因此使用gdb调试时需要设置follow-fork-mode让gdb跟踪子进程才能在核函数内部断点调试。基本用法如下gdb ./build/add进入gdb后先设置跟踪子进程模式(gdb) set follow-fork-mode child然后按需进行调试常用操作# 在核函数入口处设置断点 (gdb) break Compute # 运行程序 (gdb) run # 单步执行 (gdb) next # 打印变量值 (gdb) print xLocal.GetValue(0) # 继续执行到下一个断点 (gdb) continue说明set follow-fork-mode child告诉gdb在fork创建子进程时切换到子进程进行调试。如果不设置该选项gdb默认跟踪父进程将无法进入核函数内部。切回NPU模式CPU调试完成后清除build目录并重新配置cmake即可切回NPU模式运行。步骤1中添加的#ifdef代码无需移除在NPU模式下不会产生任何影响。rm -r build; cmake -B build -DCMAKE_ASC_ARCHITECTURESdav-2201; cmake --build build; ./build/add【免费下载链接】asc-toolsAscend C Tools仓是CANN基于Ascend C编程语言推出的配套调试工具仓。项目地址: https://gitcode.com/cann/asc-tools创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考