printf/PRINTF功能
功能介绍
使用工具进行算子调测时,支持printf/PRINTF功能,可以打印Scalar数据。
- CPU调测场景下支持printf和PRINTF打印,其中printf采用C++原生打印功能,不受dump-mode或CpuOptions.dump_mode参数控制。
- NPU调测场景下支持printf和PRINTF打印,受dump-mode或NpuCompileInfo.dump_mode参数控制。
- 固定为每个核分配的打印数据的最大可使用空间为1M,目前该大小不支持修改,若打印超过1M,打印内容不再显示,请开发者控制待打印的数据量。
使用方法(命令行)
- 在核函数代码中按需加上printf或PRINTF语句,接口说明参见printf/PRINTF接口说明,以PRINTF打印为例:
PRINTF("1 fmt string d %d\n", 6666); PRINTF("1 fmt string lf %lf\n", double(61.556));
- NPU调测场景执行如下命令,使能Dump开关。
ascendebug kernel --backend npu --dump-mode normal ... {其他NPU调测参数}
--dump-mode取normal,开启通用打印Scalar模式,其他参数说明请参考NPU调测参数,用户按需配置即可。
- 查看屏显打印结果,示例如下。
使用方法(API)
- 在核函数代码中按需加上printf或PRINTF语句,接口说明参见printf/PRINTF接口说明,以PRINTF打印为例:
PRINTF("1 fmt string d %d\n", 6666); PRINTF("1 fmt string lf %lf\n", double(61.556));
- 设置dump_mode='normal',调用算子编译、运行API接口。这里以标准自定义场景下实现NPU上板打印Scalar数据为例:
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)
- 查看屏显打印结果,示例如下。
printf/PRINTF接口说明
函数原型 |
|
|
函数功能 |
打印Scalar数据。 |
|
参数(IN) |
fmt |
格式控制字符串,包含两种类型的对象:普通字符和转换说明。
|
args |
附加参数,个数和类型可变的输出列表:根据不同的fmt字符串,函数可能需要一系列的附加参数,每个参数包含了一个要被插入的值,替换了fmt参数中指定的每个%标签。参数的个数应与%标签的个数相同。 |
|
参数(OUT) |
NA |
- |
返回值 |
NA |
- |
使用约束 |
|
|
调用示例 |
// 整型打印: printf("fmt string %d", 0x123); PRINTF("fmt string %d", 0x123); // 指针打印: int *a; printf("TEST %p", a); PRINTF("TEST %p", a); |
父主题: Debug调试功能