昇腾社区首页
中文
注册

debug_print

功能说明

在TIK DSL中插入一个对表达式求值并打印结果的语句。调试器执行到这行代码时会对表达式求值并将结果打印在屏幕上。

函数原型

def debug_print(expr)

参数说明

表1 参数说明

参数名称

输入/输出

含义

expr

输入

字符串形式的一段合法的Python表达式,expr可以使用的变量有TIK DSL当前作用域的Scalar、Expr、ScalarArray和Tensor。其中Scalar、Expr会被求值并替换为Python的float或int类型的数值;ScalarArray中的每个元素会被求值并替换,最后组成一个list返回;Tensor会被替换为与Tensor等价的numpy.ndarray,这个numpy对象的形状、类型和数据都与Tensor一致。

支持的芯片型号

Atlas 200/300/500 推理产品

Atlas 训练系列产品

返回值

无。

注意事项

  • debug_print打印tik定义的变量,用单或双引号包装起来,直接传入定义的变量名即可。例如:
tensor = tik.Tensor(...)
debug_print("tensor")
  • debug_print打印字符串先用单引号,再用双引号包装起来。例如:
debug_print('"被打印的字符串"')
  • debug_print打印字符串与tik变量复合的情况,多个复合情况可用逗号隔开。例如:
debug_print('"字符串"+str(变量名),"字符串"')
  • 当待打印的tik变量作为类属性出现时,如果该属性有两次赋值并按照代码一写法,debug_print在运行态解析类的属性时调用getattr(self, 'tensor')会指向tensor2,因而打印结果错误;建议不要对待打印的类属性多次赋值,或者使用代码二写法。
# 代码一:打印结果不合预期
self.tensor = tik.Tensor(...) # tensor1
debug_print("self.tensor")
self.tensor = tik.Tensor(...) # tensor2

# 代码二:打印结果符合预期
self.tensor = tik.Tensor(...) # tensor1
tmp = self.tensor
debug_print("tmp")
self.tensor = tik.Tensor(...) # tensor2
  • debug_print()语句需要定义在你所写的算子代码内,然后在调用完你的算子程序后返回tik_instance,再调用start_debug()接口才能够正确执行debug_print()函数,从而打印出所需要输出信息

调用示例

tik_instance.tikdb.debug_print('字符')