DumpTensor功能
功能介绍
使用工具进行算子调测时,支持DumpTensor功能,默认从Tensor的第0位元素开始打印指定长度的元素值。
固定为每个核分配的打印数据的最大可使用空间为1M,目前该大小不支持修改,若打印超过1M,打印内容不再显示,请开发者控制待打印的数据量。
使用方法(命令行)
使用方法(API)
- 在核函数代码中按需在目标位置调用DumpTensor接口,接口说明参见表1,样例如下:
DumpTensor(srcLocal, 5, dataNum);
- 调用算子编译及运行接口,对应options配置为设置dump_mode='normal'。以标准自定义场景下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结果,具体参见产物说明。
产物说明
Dump的Tensor数据存放在${root}/${work_dir}/npu路径下,其中${root}表示当前操作路径,${work_dir}表示调测工作空间,默认为/debug_workspace/${op_type}目录,${op_type}为算子名。目录结构示例如下:
├ ${op_type} // 算子名 ├── npu │ ├── dump │ ├── PARSER_${timestamp} │ ├── 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。
接口说明
函数原型 |
|
|
函数功能 |
从Tensor的第0位元素开始打印指定长度的元素值。 |
|
参数(IN) |
tensor |
用户需要Dump的Tensor。多个DumpTensor调用时,不可重复。
|
desc |
用户自定义附加信息(行号或其他自定义数字)。 |
|
dumpNum |
需要Dump的元素个数。 |
|
shapeInfo |
如果有Tensor的shape信息,工具可解析shapeInfo并进行打印。 |
|
参数(OUT) |
NA |
- |
返回值 |
NA |
- |
使用约束 |
|
|
调用示例 |
|
父主题: 更多功能