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,打印内容不再显示,请开发者控制待打印的数据量。
使用方法(命令行)
使用方法(API)
- 在核函数代码中按需在目标位置加上printf或PRINTF语句,接口说明参见表1,以PRINTF打印为例:
PRINTF("1 fmt string d %d\n", 6666); PRINTF("1 fmt string lf %lf\n", float(61.556));
- 调用算子编译及运行接口,对应options配置为dump_mode='normal'。以标准自定义场景下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)
- 查看屏显打印结果,示例如下。
接口说明
函数原型 |
|
|
函数功能 |
打印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); |
父主题: 更多功能