TIK功能调试
简介
MindStudio IDE支持TIK算子的可视化调试,可以实现断点设置、单步调试、连续运行直到结束或下一断点、查看变量信息、退出调试等功能。
前提条件
- 完成环境变量配置,需要完成用户级别的环境变量配置。若没有配置,请参考以下操作。
- 修改~/.bashrc文件。在文件中添加如下内容。
# Ascend-cann-toolkit环境变量(请根据实际路径修改) source $HOME/Ascend/ascend-toolkit/set_env.sh
- 执行命令。
source ~/.bashrc
- 修改~/.bashrc文件。在文件中添加如下内容。
- 已完成TIK算子实现代码。
操作步骤
本章节以add算子为例介绍TIK功能调试方法。
- 编写add算子调试代码.py文件。完整代码示例参考(以文件名simple_add.py为例):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
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。
- TIK断点必须添加在TIK语句上。
- 若一行代码被分为多行,需在最后一行设置断点。
- 删除断点
- Disable断点。若用户设置了多个断点,执行调试时想使用部分断点又不删除其他断点,则可以通过该功能将暂不使用的断点Disable,操作方法如下:
右击已经设置断点的代码行号处的
,在弹出界面中取消勾选“Enabled”,可以看到原有
断点标识变成
,则再执行调试功能时,该断点不生效。
图2 断点Disable - Enable断点。若已经有部分断点设置了Disable,执行新的调试功能时想使原有Disable的断点生效,则可以通过该功能实现。操作方法如下:
右击已经Disable断点处的
,在弹出界面中勾选“Enabled”,可以看到原有
断点标识变成
,则后续执行调试功能时,该断点生效。
图3 断点Enable - 查看断点。通过该功能,用户可以查看设置过的断点。
单击Disable断点或Enable断点界面的“More(Ctrl+Shift+F8)”,弹出图4所示断点查看界面。
左侧序号1断点列表展示了当前代码中所设置的所有断点,序号2对应相应断点的停用(Disabled)或启用(Enabled)功能,序号3为代码预览区域。
- 单击左侧断点列表中,断点左侧的复选框,勾选表示该断点启用,相应序号2处“Enabled”功能被勾选,同时在代码预览区域中,对应代码行左侧行号处显示
图标;取消勾选表示该断点停用,相应序号2处“Enable”功能被取消勾选,同时在代码预览区域中,对应代码行左侧行号处显示
图标。
- 选中断点列表处的断点,单击上方的
可以删除断点,同时代码预览区域,相应代码行号处的断点图标随之删除。
- 在代码预览区域,代码行号处单击,则该行被标记为断点,同时断点列表中会自动增加该断点信息。
- 单击左侧断点列表中,断点左侧的复选框,勾选表示该断点启用,相应序号2处“Enabled”功能被勾选,同时在代码预览区域中,对应代码行左侧行号处显示
- 添加断点
- 运行调试。
- 首次调试,右键单击simple_add.py文件选择“Tik Operator Debug”运行调试。
- 非首次调试,可以通过单击工具栏
或“Shift+F9”按键运行调试。
- 调试执行。
调试执行操作步骤请参见调试执行。
父主题: 其他功能及操作