下载
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助
昇腾小AI

printf/PRINTF功能

功能介绍

使用工具进行算子调测时,支持printf/PRINTF功能,可以打印Scalar数据。

  • PRINTF和printf语法工具均支持,本章以printf为例。
  • 固定为每个核分配的打印数据的最大可使用空间为1M,目前该大小不支持修改,若打印超过1M,打印内容不再显示,请开发者控制待打印的数据量。

使用方法(命令行)

  1. 在核函数代码中按需加上printf或PRINTF语句,接口说明参见printf/PRINTF接口说明,本节以printf为例:
    printf("1 fmt string d %d\n", 6666);
    printf("1 fmt string lf %lf\n", double(61.556));
  2. NPU调测场景执行如下命令,使能Dump开关。
    ascendebug kernel --backend npu --dump-mode normal ... {其他NPU调测参数}

    --dump-mode取normal,开启通用打印Scalar模式,其他参数说明请参考NPU调测参数,用户按需配置即可。

  3. 查看屏显打印结果,示例如下。

使用方法(API)

  1. 在核函数代码中按需加上printf或PRINTF语句,接口说明参见printf/PRINTF接口说明,本节以printf为例:
    printf("1 fmt string d %d\n", 6666);
    printf("1 fmt string lf %lf\n", double(61.556));
  2. 设置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)
  3. 查看屏显打印结果,示例如下。

printf/PRINTF接口说明

表1 printf/PRINTF接口说明表

函数原型

  • void printf(__gm__ const char* fmt, Args&&... args);
  • void PRINTF(__gm__ const char* fmt, Args&&... args);

函数功能

打印Scalar数据。

参数(IN)

fmt

格式控制字符串,包含两种类型的对象:普通字符和转换说明。

  • 普通字符将原样不动地打印输出。
  • 转换说明并不直接输出而是用于控制printf中参数的转换和打印。每个转换说明都由一个百分号字符(%)开始,以转换说明结束,从而说明输出数据的类型 。

args

附加参数,个数和类型可变的输出列表:根据不同的fmt字符串,函数可能需要一系列的附加参数,每个参数包含了一个要被插入的值,替换了fmt参数中指定的每个%标签。参数的个数应与%标签的个数相同。

参数(OUT)

NA

-

返回值

NA

-

使用约束

  • 不支持转义字符打印。
  • 当前支持的打印类型:
    • %d / %i:输出十进制数。
    • %f:输出实数。
    • %x:输出十六进制整数。
    • %s:输出字符串。
    • %u:输出unsigned类型数据。
    • %p:输出指针地址。

调用示例

// 整型打印:
printf("fmt string %d", 0x123);
PRINTF("fmt string %d", 0x123);
// 指针打印:
int *a;
printf("TEST %p", a);
PRINTF("TEST %p", a);
搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词