查看泳道图#
功能说明#
泳道图用于直观展示计算图的实际调度与执行过程,清晰呈现任务的执行顺序和耗时信息,帮助开发者分析算子性能瓶颈。本节将介绍如何查看泳道图及其展示的关键信息。
前提条件#
执行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:打开文件”。
在展示的界面中可查看泳道图信息。

区域①:工具栏,支持搜索泳道图节点、缩放泳道图、设置着色模式、按时间范围查看泳道图、查看性能报告等功能。
区域②:三段式时间轴,最上方时间轴显示总执行时间、中间时间轴显示当前任务面板占用的执行时间,最下方时间轴为纳秒级别。
区域③:侧边栏,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表示展示该节点的前后一层依赖关系,以此类推。
通过鼠标滚轮纵向移动泳道图,可以在页面底部看到性能指标阶梯图。
表 4 泳道图性能指标阶梯数据参数说明
参数
说明
Dependence Solving
单位时间解依赖的速度
Ideal_Mem_Uage
理想内存占用
ReadyCount_AIC
Cube核上等待执行的任务个数
ReadyCount_AIV
Vector核上等待执行的任务个数
ReadyCount_Total
Cube + Vector核上等待执行的任务个数