文档
注册

工具概述

用户使用其他拉起算子的方式或msOpST工具在真实的硬件环境中对算子的功能进行测试后,可根据实际测试情况选择是否使用msDebug工具进行功能调试。

msDebug是用于调试在NPU侧运行的算子程序的一个工具,该工具向算子开发人员提供了在昇腾设备上调试算子的手段。调试手段包括了读取昇腾设备内存与寄存器、暂停与恢复程序运行状态等。

  • 若要使能msdebug工具,安装驱动时需要指定--debug参数,驱动安装请参考CANN软件安装指南中的“安装NPU驱动固件”章节。
  • 调试通道权限较大,存在安全风险,请谨慎使用,生产环境不推荐使用,使用本调试工具即代表认可并接受该风险。

功能特性

msDebug工具支持调试Ascend C算子(包括Vector、Cube以及mix融合算子)程序,用户可根据实际情况进行选择,具体请参见表1

表1 msDebug工具功能介绍

功能

链接

断点设置

断点设置

打印变量和内存

内存与变量打印

单步调试

单步调试

中断运行

中断运行

核切换

核切换

检查程序状态

读取寄存器

调试信息展示

调试信息展示

命令汇总

表2 命令参考说明

命令

命令缩写

描述

示例

breakpoint set -f filename -l linenum

b

增加断点,filename为算子实现代码文件*.cpp,linenum为代码文件对应的具体行号。

b add_custom.cpp:85

run

r

运行程序。

r

continue

c

继续运行。

c

print variable

p

打印变量。

p zLocal

frame variable

var

显示当前作用域内的所有局部变量。

var

memory read

x

读内存。

x -m GM -f float16[] 0x00001240c0037000 -c 2 -s 128
  • -m:指定内存位置,支持GM/UB/L0A/L0B/L0C
  • -s:指定每行打印字节数
  • -c:指定打印的行数
  • -f:指定打印的数据类型
  • 0x00001240c0037000:需要读取的内存地址,请根据实际环境进行替换

ascend info devices

-

查询device信息。

ascend info devices

ascend info cores

-

查询算子所运行的aicore相关信息。

ascend info cores

ascend info tasks

-

查询算子所运行的task相关信息。

ascend info tasks

ascend info stream

-

查询算子所运行的stream相关信息.

ascend info stream

ascend info blocks

-

查询算子所运行的block相关信息。

显示所运行的blocks相关信息:
ascend info blocks 
显示所运行的blocks在当前中断处的代码:
ascend info blocks -d

ascend aic id

-

切换调试器所聚焦的cube核。

ascend aic 1

ascend aiv id

-

切换调试器所聚焦的vector核。

ascend aiv 5

“CTRL+C”

-

手动中断算子运行程序并回显中断位置信息。

通过键盘输入。

register read

re r

读取寄存器值;-a 读取所有寄存器值;$REG_NAME 读取指定名称的寄存器值;

register read -a
re r $PC

thread step-over

next或n

在同一个调用栈中,移动到下一个可执行的代码行。

n

thread step-in

step或s

使用step in命令可进入到函数内部进行调试

s

thread step-out

finish

使用finish(step out)命令会执行完函数内剩余部分,并返回主程序继续执行。

finish

target modules add <kernel.o>

image add [kernel.o]

用于PyTorch框架调用算子时,导入算子调试信息 。

说明:

当程序执行run命令后,需先执行image add命令导入调试信息。然后,再执行image load命令使导入的调试信息生效。

image add xx.o       

target modules load --file <kernel.o> --slide <address>

image load -f <kernel.o> -s <address>

用于PyTorch框架调用算子时,加载算子调试信息,使导入的调试信息生效。

image load -f xx.o -s 0

help msdebug_command

-

输出对应工具命令的帮助信息。

说明:

打印信息将会展示该命令的功能描述、使用语法以及参数选项。

核切换命令的帮助信息如下所示:
(msdebug) help ascend aic
change the id of the focused ascend aicore.
Syntax: ascend aic <id>

ascend info blocks命令的帮助信息如下所示:

(msdebug) help ascend info blocks
show blocks overall info.
Syntax: ascend info blocks
Command Options Usage:
  ascend info blocks [-d]
       -d ( --details )
            Show stopped states for all blocks.
help run

通过键入help命令可查看msDebug工具支持的所有命令。表2之外的命令属于开源调试器lldb实现,使用需注意相关风险,详细使用方法可参考lldb官方文档https://lldb.llvm.org/

调用场景

支持如下调用算子的场景:
  • Kernel直调:核函数运行验证的场景。

    核函数运行验证的场景,详细信息可参考核函数运行验证简介

  • 通过AscendCL单算子调用:单算子API执行的场景。

    单算子API执行的场景,详细信息可参考单算子API调用

  • 第三方框架算子调用:Pytorch框架的场景。

    通过PyTorch框架进行单算子调用的场景,详细信息可参考PyTorch框架

补充说明

msDebug工具还提供了以下拓展程序,具体请参考表3

表3 拓展程序说明

程序名称

程序描述

说明

msdebug-mi

仅供可视化插件(MindStudio Debug VSCode Plugin)调试使用。

机机接口,用户无需关注。

搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词