查看泳道图#

功能说明#

泳道图用于直观展示计算图的实际调度与执行过程,清晰呈现任务的执行顺序和耗时信息,帮助开发者分析算子性能瓶颈。本节将介绍如何查看泳道图及其展示的关键信息。

前提条件#

执行PyPTO程序,生成泳道图文件。

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

    @pypto.frontend.jit(
        debug_options={"runtime_debug_mode": 1}
    )
    
  2. 重新执行PyPTO程序,例如:

    python3 examples/02_intermediate/operators/softmax/softmax.py
    

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

操作步骤#

  1. 打开泳道图文件。以下提供两种方式:

    • 在Visual Studio Code侧边栏,单击图标,打开PyPTO Toolkit,在运行结果界面打开泳道图文件。

    • 在Visual Studio Code工作区,右键单击泳道图文件,在弹出的菜单中选择“PyPTO Toolkit:打开文件”。

  2. 在展示的界面中可查看泳道图信息。

    区域①:工具栏,支持搜索泳道图节点、缩放泳道图、设置着色模式按时间范围查看泳道图查看性能报告等功能。

    区域②:三段式时间轴,最上方时间轴显示总执行时间、中间时间轴显示当前任务面板占用的执行时间,最下方时间轴为纳秒级别。

    区域③:侧边栏,AIV和AIC的线程区,以线程度量维度覆盖了每个AIV和AIC的性能统计信息。

    区域④:任务面板,以泳道形式展示各任务序列,每个AIV/AIC线程横向对应一条泳道。泳道中的每一个色块代表一个在其上执行的具体任务,其长度对应任务的耗时,能够直观地反映计算的负载和密集程度。用户可以通过观察相邻任务之间的空闲间隔(如图中的黑色区域,或称气泡)以及识别耗时较长的任务,来分析可能存在的性能瓶颈问题。支持纵向移动泳道图(鼠标滚轮)、横向移动泳道图(鼠标左键+CTRL,或A / D快捷键)、缩放泳道图(鼠标滚轮+CTRL,或W / S快捷键),单击任务节点可查看详细信息,具体请参考3

    区域⑤:性能指标阶梯图,具体请参考4

  3. 单击泳道图中的某个任务节点(Task节点),可显示节点的详细信息面板。

    区域①:节点信息,详细请参见表1

    区域②:节点参数信息,详细请参见表2

    区域③:节点性能统计信息,当前暂不支持展示相关数据。

    区域④:节点依赖信息,详细请参见表3

    表 1 区域①参数说明

    参数

    说明

    名称

    节点名称包含任务名称以及语义标签,例如0-4-0-25-0(MatMul)。
    前三个数字0-4-0为该任务编号,也是该任务的唯一标识。三个数字分别表示:seqNo、task’s rootFunction part、task’s opIndex part。
    后两个数字25-0标识该任务执行的内容,即rootIndex和psglD in this root。
    MatMul为语义标签名称,当PyPTO程序代码中使用pypto.set_semantic_label接口设置自定义语义标签时展示。

    Subgraphid

    节点所在的同构子图的ID,不同任务节点可能归属统一个同构子图。

    Start

    开始时间

    Duration

    持续时间

    命中率

    缓存命中率

    表 2 区域②参数说明

    参数

    说明

    duration

    持续时间,单位us

    end_time

    结束时间,单位us

    start_time

    开始时间,单位us

    event-hint

    rootHash:该任务对应的Execute Graph的Hash值。callOpMagic:Execute Graph中的调用节点的Magic ID。leafHash:该任务对应的Block Graph的Hash值。这些参数主要用于跳转到计算图,详细介绍请参见泳道图跳转到计算图

    ioperand-hint

    rawmagic:该任务的输入Tensor的rawTensor的Magic ID,主要用于泳道图跳转到Dump Tensor。

    ooperand-hint

    rawmagic:该任务的输出Tensor的rawTensor的Magic ID,主要用于泳道图跳转到Dump Tensor。

    seqNo

    表示第几个stitched function。

    taskId

    表示第seqNo个stitched function内的第几个root以及第几个call

    表 3 区域④参数说明

    参数

    说明

    查看前序依赖。

    查看后续依赖。

    查看前后续依赖。

    任务连线层级

    配置为-1表示展示该节点的全部层级,配置为1表示展示该节点的前后一层依赖关系,以此类推。

  4. 通过鼠标滚轮纵向移动泳道图,可以在页面底部看到性能指标阶梯图。

    表 4 泳道图性能指标阶梯数据参数说明

    参数

    说明

    Dependence Solving

    单位时间解依赖的速度

    Ideal_Mem_Uage

    理想内存占用

    ReadyCount_AIC

    Cube核上等待执行的任务个数

    ReadyCount_AIV

    Vector核上等待执行的任务个数

    ReadyCount_Total

    Cube + Vector核上等待执行的任务个数