show_kernel_debug_data工具
在Ascend C算子程序代码中,用户可以使用AscendC::DumpTensor、AscendC::printf、AscendC::PrintTimeStamp、ascendc_assert接口打印相关调试信息,并通过“aclInit”或直接配置acl.json文件,启用Dump配置,导出Ascend C算子Kernel的调测信息。本工具提供了对调测信息的离线解析能力,帮助用户获取并解析调试信息,即将导出的bin文件解析成可读格式。本工具的使用示例可参考show_kernel_debug_data样例。
show_kernel_debug_data支持多用户并发调用,但用户需要指定不同的落盘路径,否则可能出现落盘内容被覆盖等问题。
产品支持情况
|
产品 |
是否支持 |
|---|---|
|
Atlas 350 加速卡 |
√ |
|
|
√ |
|
|
√ |
|
|
√ |
|
|
√ |
|
|
x |
工具安装
- 安装工具。
工具跟随CANN软件包发布(参考环境准备完成CANN安装),其路径默认为“${INSTALL_DIR}/tools/show_kernel_debug_data”,其中${INSTALL_DIR}请替换为CANN软件安装后文件存储路径。以root用户安装为例,安装后文件默认存储路径为:/usr/local/Ascend/cann。
- 设置环境变量。
- root用户安装Ascend-cann-toolkit包时
source /usr/local/Ascend/cann/set_env.sh
- 非root用户安装Ascend-cann-toolkit包时
source ${HOME}/Ascend/cann/set_env.sh
- root用户安装Ascend-cann-toolkit包时
- 检查工具是否安装成功。执行如下命令,若能正常显示--help或-h信息,则表示工具环境正常,功能可正常使用。
show_kernel_debug_data -h
使用方法
- 命令行方式
show_kernel_debug_data <bin_file_path> [<output_path>]
参数
可选/必选
说明
<bin_file_path>
必选
kernel侧调试信息落盘的bin文件或包含bin文件的目录路径,例如“/input/dump_workspace.bin”。
<output_path>
可选
解析结果的保存路径,例如“/output_dir”。默认是当前命令行执行目录下。
- API方式
获取kernel侧调试信息并解析成可读文件。函数原型如下。
def show_kernel_debug_data(bin_file_path: str, output_path: str = './') -> None
其中,输入参数说明如下。函数无输出参数和返回值。
- bin_file_path:kernel侧调试信息落盘的bin文件或包含bin文件的目录路径,字符串类型。
- output_path:解析结果的保存路径,字符串类型,默认是当前接口调用脚本所在目录下。
调用示例参考如下代码。
1 2
from show_kernel_debug_data import show_kernel_debug_data show_kernel_debug_data(./input/dump_workspace.bin)
产物说明
工具解析结果文件目录结构如下。其中,dump_data目录是对DumpTensor、PrintTimeStamp接口解析的结果,index0对应DumpTensor接口中第二个参数desc=0时的打印,loop0表示切分后首个分块的数据打印。
├ ${output_path}
├── PARSER_${timestamp} // ${timestamp}表示时间戳
├── dump_data
│ ├── 0 // core0解析结果
│ ├── core_0_index_0_loop_0.bin // core0 desc0 progress0落盘信息
│ ├── core_0_index_0_loop_0.txt // core0 desc0 progress0解析结果
...
│ ├── core_0_index_2_loop_15.bin // core0 desc2 progress15落盘信息
│ ├── core_0_index_2_loop_15.txt // core0 desc2 progress15解析结果
│ └── time_stamp_core_0.csv // 时间戳信息
│ ├── 1 // core1解析结果
│ ├── 2 // core2解析结果
...
│ └── index_dtype.json // index与数据类型的映射关系
└── parser.log // 解析日志,包括printf、ascendc_assert接口的打印信息