查看泳道图
功能说明
泳道图用于直观展示计算图的实际调度与执行过程,清晰呈现任务的执行顺序和耗时信息,帮助开发者分析算子性能瓶颈。本节将介绍如何查看泳道图及其展示的关键信息。
前提条件
执行PyPTO程序,生成泳道图文件。
-
启动性能数据采集功能。
@pypto.frontend.jit( debug_options={"runtime_debug_mode": 1} ) -
重新执行PyPTO程序,例如:
python3 examples/02_intermediate/operators/softmax/softmax.py在${work_path}/output/output_*/目录(*代表时间戳)下生成泳道图数据文件,文件名为:merged_swimlane.json。
操作步骤
-
打开泳道图文件。以下提供两种方式:
- 在Visual Studio Code侧边栏,单击
图标,打开PyPTO Toolkit,在运行结果界面打开泳道图文件。 - 在Visual Studio Code工作区,右键单击泳道图文件,在弹出的菜单中选择“PyPTO Toolkit:打开文件”。
- 在Visual Studio Code侧边栏,单击
-
在展示的界面中可查看泳道图信息。

区域①:工具栏,支持搜索泳道图节点、缩放泳道图、设置着色模式、按时间范围查看泳道图、查看性能报告等功能。
区域②:三段式时间轴,最上方时间轴显示总执行时间、中间时间轴显示当前任务面板占用的执行时间,最下方时间轴为纳秒级别。
区域③:侧边栏,AIV和AIC的线程区,以线程度量维度覆盖了每个AIV和AIC的性能统计信息。
区域④:任务面板,以泳道形式展示各任务序列,每个AIV/AIC线程横向对应一条泳道。泳道中的每一个色块代表一个在其上执行的具体任务,其长度对应任务的耗时,能够直观地反映计算的负载和密集程度。用户可以通过观察相邻任务之间的空闲间隔(如图中的黑色区域,或称气泡)以及识别耗时较长的任务,来分析可能存在的性能瓶颈问题。支持纵向移动泳道图(鼠标滚轮)、横向移动泳道图(鼠标左键+CTRL,或A / D快捷键)、缩放泳道图(鼠标滚轮+CTRL,或W / S快捷键),单击任务节点可查看详细信息,具体请参考3。
区域⑤:性能指标阶梯图,具体请参考4。
-
单击泳道图中的某个任务节点(Task节点),可显示节点的详细信息面板。

区域①:节点信息,详细请参见表1。
区域②:节点参数信息,详细请参见表2。
区域③:节点性能统计信息,当前暂不支持展示相关数据。
区域④:节点依赖信息,详细请参见表3。
参数 说明 名称 节点名称包含任务名称以及语义标签,例如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 持续时间 命中率 缓存命中率 参数 说明 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 参数 说明 
查看前序依赖。 
查看后续依赖。 
查看前后续依赖。 任务连线层级 配置为-1表示展示该节点的全部层级,配置为1表示展示该节点的前后一层依赖关系,以此类推。 (step4)=
-
通过鼠标滚轮纵向移动泳道图,可以在页面底部看到性能指标阶梯图。
表 4 泳道图性能指标阶梯数据参数说明
参数 说明 Dependence Solving 单位时间解依赖的速度 Ideal_Mem_Uage 理想内存占用 ReadyCount_AIC Cube核上等待执行的任务个数 ReadyCount_AIV Vector核上等待执行的任务个数 ReadyCount_Total Cube + Vector核上等待执行的任务个数