DumpTensor功能
功能介绍
使用工具进行算子调测时,支持DumpTensor功能,默认从Tensor的第0位元素开始打印指定长度的元素值。
固定为每个核分配的打印数据的最大可使用空间为1M,目前该大小不支持修改,若打印超过1M,打印内容不再显示,请开发者控制待打印的数据量。
使用方法(命令行)
- 在核函数代码中按需在目标位置调用DumpTensor接口,接口说明参见DumpTensor接口说明,样例如下:
DumpTensor(srcLocal, 5, dataNum);
- NPU调测场景执行如下命令,使能Dump开关。
ascendebug kernel --backend npu --dump-mode normal ... {其他NPU调测参数}
--dump-mode取normal,开启通用打印Tensor模式,其他参数说明请参考NPU调测参数,用户按需配置即可。
- 查看打印结果。
Dump的Tensor数据存放到${work_dir}/${op_type}/npu路径下,目录结构示例如下:
- ${work_dir}是调测工作空间,缺省时为当前路径下的debug_workspace文件夹(若无会自动新建)。
- ${op_type}是调测算子名,本章以AddCustom为例。
├ AddCustom(算子名) ├── npu │ ├── dump │ ├── dump_data │ ├──0(core number) │ ├──index_5 (index是dump接口的desc唯一标识值) │ ├──core_0_index_5_loop_0.bin │ ├──core_0_index_5_loop_0.txt │ ├──core_0_index_5_loop_1.bin │ ├──core_0_index_5_loop_1.txt │ ├──index_dtype.json(存放每个dump Tensor的数据类型)
其中core_${core_id}_index_${index}_loop_${loop}.txt是工具根据bin文件自动解析的Dump结果,其命名规则为:
- ${core_id}:计算核id。
- ${index}:是Dump接口的desc唯一标识值。
- ${loop}:若DumpTensor接口在for循环中被调用,其表示循环的索引值,否则默认为0。
使用方法(API)
- 在核函数代码中按需在目标位置调用DumpTensor接口,接口说明参见DumpTensor接口说明,样例如下:
DumpTensor(srcLocal, 5, dataNum);
- 设置dump_mode='normal',调用算子编译、运行API接口。这里以标准自定义场景下实现NPU上板打印Tensor数据为例:
compile_npu_options = ascendebug.CompileNpuOptions(dump_mode='normal') name, kernel_file, extern = op_executor.compile_custom_npu(customize_path, tiling_info.tiling_key, compile_npu_options) npu_compile_info = ascendebug.NpuCompileInfo(syncall=extern['cross_core_sync'], task_ration=extern['task_ration'], dump_mode='normal') run_npu_options = ascendebug.RunNpuOptions() op_executor.run_npu(kernel_file, run_npu_options, npu_compile_info=npu_compile_info, tiling_info=tiling_info)
- 查看打印结果。
Dump的Tensor数据存放到${work_dir}/${op_type}/npu路径下,目录结构示例如下:
- ${work_dir}是调测工作空间,缺省时为当前路径下的debug_workspace文件夹(若无会自动新建)。
- ${op_type}是调测算子名,本章以AddCustom为例。
├ AddCustom(算子名) ├── npu │ ├── dump │ ├── dump_data │ ├──0(core number) │ ├──index_5 (index是dump接口的desc唯一标识值) │ ├──core_0_index_5_loop_0.bin │ ├──core_0_index_5_loop_0.txt │ ├──core_0_index_5_loop_1.bin │ ├──core_0_index_5_loop_1.txt │ ├──index_dtype.json(存放每个dump Tensor的数据类型)
其中core_${core_id}_index_${index}_loop_${loop}.txt是工具根据bin文件自动解析的Dump结果,其命名规则为:
- ${core_id}:计算核id。
- ${index}:是Dump接口的desc唯一标识值。
- ${loop}:若DumpTensor接口在for循环中被调用,其表示循环的索引值,否则默认为0。
DumpTensor接口说明
函数原型 |
|
|
函数功能 |
从Tensor的第0位元素开始打印指定长度的元素值。 |
|
参数(IN) |
tensor |
用户需要Dump的Tensor。多个DumpTensor调用时,不可重复。 |
desc |
用户自定义附加信息(行号或其他自定义数字)。 |
|
dumpNum |
需要Dump的元素个数。 |
|
shapeInfo |
如果有Tensor的shape信息,工具可解析shapeInfo并进行打印。 |
|
参数(OUT) |
NA |
- |
返回值 |
NA |
- |
使用约束 |
|
|
调用示例 |
DumpTensor(srcLocal,5, dataNum); // Dump LM DumpTensor(this->gm_, 0, dataNum); // Dump GM |
父主题: Debug调试功能