MindStudio支持TIK算子的可视化调试,可以实现断点设置、单步调试、连续运行直到结束或下一断点、查看变量信息、退出调试等功能。
# Ascend-cann-toolkit环境变量(请根据实际路径修改)
source $HOME/Ascend/ascend-toolkit/set_env.sh
source ~/.bashrc
本章节以add算子为例介绍TIK功能调试方法。
import numpy as np from tbe import tik from tbe.common.platform import set_current_compile_soc_info def simple_add(): tik_instance = tik.Tik(disable_debug=False) kernel_name = "tik_vec_add_128_float32" dst_ub = tik_instance.Tensor("float32", [128], tik.scope_ubuf, "dst_ub") dst_gm = tik_instance.Tensor("float32", (128,), tik.scope_gm, "dst_gm") src0_gm = tik_instance.Tensor("float32", (128,), tik.scope_gm, "src0_gm") src0_ub = tik_instance.Tensor("float32", (128,), tik.scope_ubuf, "src0_ub") src1_gm = tik_instance.Tensor("float32", (128,), tik.scope_gm, "src1_gm") src1_ub = tik_instance.Tensor("float32", (128,), tik.scope_ubuf, "src1_ub") tik_instance.data_move(src0_ub, src0_gm, 0, 1, 16, 0, 0) tik_instance.data_move(src1_ub, src1_gm, 0, 1, 16, 0, 0) tik_instance.vec_add(64, dst_ub, src0_ub, src1_ub, 2, 8, 8, 8) tik_instance.data_move(dst_gm, dst_ub, 0, 1, 16, 0, 0) tik_instance.BuildCCE(kernel_name, [src0_gm, src1_gm], [dst_gm]) return tik_instance if __name__=='__main__': set_current_compile_soc_info("Ascendxxx") # 请根据芯片实际版本设置,具体请参考set_current_compile_soc_info接口说明 tik_instance = simple_add() data_x = np.ones((128,)).astype("float32") data_y = np.ones((128,)).astype("float32") feed_dict = {'src0_gm': data_x, 'src1_gm': data_y} model_data, = tik_instance.tikdb.start_debug(feed_dict=feed_dict,interactive=True) # 添加TIK调试代码 print(model_data)
调试TIK Debug时,用户需自行修改tik_instance的描述为tik.Tik(disable_debug=False),操作方法如下:
在add算子调试代码.py文件中添加如下加粗字体信息。
self.tik_instance = tik.Tik(disable_debug=False)
单击需要设置tik断点的行,在弹出的对画框中选择“Tik Operator Breakpoint”。如图1。
右击已经设置断点的代码行号处的,在弹出界面中取消勾选“Enabled”,可以看到原有
断点标识变成
,则再执行调试功能时,该断点不生效。
右击已经Disable断点处的,在弹出界面中勾选“Enabled”,可以看到原有
断点标识变成
,则后续执行调试功能时,该断点生效。
单击Disable断点或Enable断点界面的“More(Ctrl+Shift+F8)”,弹出图4所示断点查看界面。
左侧序号1断点列表展示了当前代码中所设置的所有断点,序号2对应相应断点的停用(Disabled)或启用(Enabled)功能,序号3为代码预览区域。
调试执行操作步骤请参见调试执行。