打印Scalar、Expr、ScalarArray或Tensor值。支持功能调试环境上的打印。
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 训练系列产品
无
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 ...