pypto_pro.language.printf#
产品支持情况#
Ascend 950PR/Ascend 950DT:支持
Atlas A3 训练系列产品/Atlas A3 推理系列产品:不支持
Atlas A2 训练系列产品/Atlas A2 推理系列产品:不支持
功能说明#
在Kernel运行时按格式串打印标量值或指针,用于调试。格式串遵循C printf语法的受限子集。
该接口通过设备侧打印机制输出,具体查看位置由运行环境的CANN日志配置决定。printf运行在S(标量)流水上,有显著运行时开销,仅用于调试,生产环境应移除。
函数原型#
pypto_pro.language.printf(
format_str: str,
*args,
loc: bool = False,
) -> None
参数说明#
参数 |
输入/输出 |
说明 |
|---|---|---|
format_str |
输入 |
格式串,必须是编译时常量字符串,不能是运行时变量。 |
*args |
输入 |
要打印的标量值或Ptr指针,数量和类型须与格式串中的格式说明符匹配。支持Python int、Python float、Python bool以及Kernel标量表达式;使用%p时还支持Ptr指针。 |
loc |
输入 |
可选,是否在输出前打印源文件/行号,取值为True或False(默认)。为True时,在输出前打印调用位置的源文件和行号。 |
约束说明#
无。
返回值说明#
无。
调用示例#
import pypto_pro.language as pl
# 打印整数
pl.printf("flag=%d, offset=%d\n", flag, offset)
# 打印浮点(仅 FP32)
pl.printf("value=%f\n", value_f32)
# 打印十六进制
pl.printf("addr=0x%x\n", addr_u32)
# 纯文本(无参数)
pl.printf("reached checkpoint A\n")
# 带源码位置
pl.printf("debug: i=%d\n", i, loc=True)
示例输出:
调用 |
输出(假设flag = 1, offset = 32, value_f32 = 3.14, addr_u32 = 0x1234, i = 5) |
|---|---|
pypto_pro.language.printf(“flag=%d, offset=%d\n”, flag, offset) |
flag=1, offset=32 |
pypto_pro.language.printf(“value=%f\n”, value_f32) |
value=3.140000 |
pypto_pro.language.printf(“addr=0x%x\n”, addr_u32) |
addr=0x1234 |
pypto_pro.language.printf(“reached checkpoint A\n”) |
reached checkpoint A |
pypto_pro.language.printf(“debug: i=%d\n”, i, loc=True) |
debug: i=5(loc = True时额外附带源码位置) |