debug_print
功能说明
tik.tikdb对象定义了debug_print语句,方便用户打印算子运行过程中的数据。调试器执行到这行代码时会对表达式求值并将结果打印在屏幕上。
此接口仅应用于仿真环境中开启了start_debug的场景。
函数原型
def debug_print(expr)
参数说明
参数名称 |
输入/输出 |
含义 |
---|---|---|
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 训练系列产品
Atlas 推理系列产品(Ascend 310P处理器)
Atlas A2训练系列产品/Atlas 800I A2推理产品
Atlas 200/500 A2推理产品
返回值
无。
注意事项
- debug_print打印tik定义的变量,用单或双引号包装起来,直接传入定义的变量名即可。例如:
tensor = tik_instance.Tensor(...) tik_instance.tikdb.debug_print("tensor")
- debug_print打印字符串先用单引号,再用双引号包装起来。例如:
tik_instance.tikdb.debug_print('"被打印的字符串"')
- debug_print打印字符串与tik变量复合的情况,多个复合情况可用逗号隔开。例如:
tik_instance.tikdb.debug_print('"字符串"+str(变量名),"字符串"')
- 当待打印的tik变量作为类属性出现时,如果该属性有两次赋值并按照代码一写法,debug_print在运行态解析类的属性时调用getattr(self, 'tensor')会指向tensor2,因而打印结果错误;建议不要对待打印的类属性多次赋值,或者使用代码二写法。
# 代码一:打印结果不合预期 self.tensor = tik_instance.Tensor(...) # tensor1 tik_instance.tikdb.debug_print("self.tensor") self.tensor = tik_instance.Tensor(...) # tensor2 # 代码二:打印结果符合预期 self.tensor = tik_instance.Tensor(...) # tensor1 tmp = self.tensor tik_instance.tikdb.debug_print("tmp") self.tensor = tik_instance.Tensor(...) # tensor2
- debug_print()语句需要定义在你所写的算子代码内,然后在调用完你的算子程序后返回tik_instance,再调用start_debug()接口才能够正确执行debug_print()函数,从而打印出所需要输出信息
调用示例
tik_instance.tikdb.debug_print('字符')
父主题: 功能调试