打印Scalar、Expr、ScalarArray或Tensor值。支持功能调试环境start_debug上的打印。
def printf(format_string, *arg)
参数名称 |
输入/输出 |
含义 |
|---|---|---|
format_string |
输入 |
待打印的字符串,包括字符和格式字符。 支持的数据类型:立即数(string) 注意:该字段不能为空。 字符串最大长度不能超过128个字符,如果在printf之前使用了set_printf_params接口,还需满足长度不能超过single_print_length-32。 示例: "scalar is: %d\n" 上例中格式字符为:%d。 格式字符配置格式为:%[flag][width][.precision]type |
*arg |
输入 |
参数值,参数个数可变,最多支持6个参数。 每个参数支持如下几种数据类型:
|
格式字符 |
含义 |
|---|---|
%d |
有符号十进制整数 |
%o |
有符号的八进制数,不可打印float数据 |
%x |
有符号十六进制数,不可打印float数据 |
%f |
浮点数十进制格式 |
%s |
输出字符串 |
%c |
输出单个字符, 数据范围在[0, 255], 否则会解析出错,不可打印float数据 |
%% |
输出一个 '%' 字符 |
Atlas 200/300/500 推理产品
Atlas 训练系列产品
Atlas 推理系列产品
无
1. 打印一个Scalar值。
from tbe import tik
tik_instance = tik.Tik()
scalar = tik_instance.Scalar("int8", init_value=-128)
// 需要的空间为 32B 头空间 + 32B 字符串空间 + 32<每个参数的TL占用空间>*1 +32B<每个数据需要向上补齐到32B>
tik_instance.printf("scalar is: %d\n", scalar)
tik_instance.BuildCCE(inputs=[], outputs=[], kernel_name="print_scalar")
tik_instance.tikdb.start_debug({})
输入
[]
输出
scalar is: -128
2.打印某个UB Buffer的值。
tik_instance = tik.Tik()
ub_tensor = tik_instance.Tensor("int16", [16, 16], tik.scope_ubuf, 'ub_tensor')
scalar = tik_instance.Scalar(dtype="int16",init_value=6)
ub_tensor[15].set_as(scalar)
tik_instance.printf("ubtensor[15:16] is: %d\n", ub_tensor[15:16])
tik_instance.BuildCCE(inputs=[], outputs=[], kernel_name="printf_ub")
tik_instance.tikdb.start_debug({})
输入
[]
输出
ubtensor[15:16] is: 6
3. 打印一段Global Memory的值。
tik_instance = tik.Tik()
gm_tensor = tik_instance.Tensor("float16", [256, ], tik.scope_gm, "gm_tensor")
tik_instance.printf("%f\n", gm_tensor[0:32])
tik_instance.BuildCCE(inputs=[gm_tensor], outputs=[], kernel_name="printf_gm")
data = np.random.uniform(-65504, 65504, [256, ]).astype(np.float16)
tik_instance.tikdb.start_debug(feed_dict={'gm_tensor': data})
输入
[-13288 46208 52448 -6488 -3364 55264 49376 3840 ...]
输出
-13288.000000 46208.000000 52448.000000 -6488.000000 -3364.000000 55264.000000 49376.000000 3840.000000 ...