快速入门#

任务与目标#

本节将通过一个PyPTO程序示例,介绍如何使用PyPTO Toolkit查看计算图结构,并通过泳道图观察相关性能数据。具体目标包括:

  • 生成并查看计算图,通过计算图结构了解计算逻辑和数据流动关系。

  • 生成并查看泳道图,通过泳道图了解任务执行顺序、耗时信息等信息,识别性能瓶颈。

编译与执行PyPTO程序#

参考 PyPTO 文档 - 快速入门

查看计算图#

PyPTO程序在编译过程中,会自动生成由Tensor和Operation组合而成的图结构,即计算图。该计算图经过PyPTO编译优化流程,完成从原始计算图到可执行图的编译过程,最终生成可在昇腾硬件环境中运行的可执行代码,以实现实际的计算任务。用户可借助PyPTO Toolkit可视化工具查看计算图中的关键信息。

  1. 右键单击${work_path}/output/output_*/program.json文件,在弹出的菜单中选择“PyPTO Toolkit: 打开文件”。

    program.json文件包含了Execute Graph和Block Graph的汇总信息,图中的关键信息为:左右两边的卡片为Tensor节点(代表输入/输出数据)、中间卡片为调用节点(带有fx标识,双击可以实现信息钻取)。

  2. 双击中间卡片逐层钻取到下图所示的Execute Graph。

    图中不同的色块(CALL:TENSOR_xx)分别代表一个调用节点,表示该计算图被划分成不同的Block Graph子图。

  3. 双击上图的调用节点,可以看到Block Graph子图信息,标识着任务的具体执行过程。

    放大后可以看到图中具体的Tensor和Operation节点信息和连接关系:

查看泳道图#

泳道图用于直观展示计算图的实际调度与执行过程,清晰呈现任务的执行顺序和耗时信息,帮助开发者分析算子性能瓶颈。下面将介绍如何采集泳道图数据,并通过PyPTO Toolkit查看泳道图。

  1. 启动性能数据采集功能。

    @pypto.frontend.jit(
        debug_options={"runtime_debug_mode": 1}
    )
    
  2. 重新执行算子程序。

    python3 softmax.py
    

    在${work_path}/output/output_*/目录(*代表时间戳)下生成泳道图数据文件,文件名为:merged_swimlane.json。

  3. 通过PyPTO Toolkit插件查看泳道图。

    右键单击merged_swimlane.json,在弹出的菜单中选择“PyPTO Toolkit: 打开文件”,即可打开泳道图,如下图所示。

    上图任务面板区域以泳道形式展示各任务序列,每个AIV/AIC线程横向对应一条泳道。泳道中的每一个色块代表一个在其上执行的具体任务,其长度对应任务的耗时,能够直观地反映计算的负载和密集程度。用户可以通过观察相邻泳道之间的空闲间隔(如图中的黑色区域,或称气泡)以及耗时较长的泳道条目,来分析可能存在的性能瓶颈问题。