您可通过“Performance Metrics”(性能指标)分析来识别需分析的级联停滞。
- 选中Trace(追踪)视图。
- 选中Stalls(停滞)视图,然后从下拉列表中选择Cascade Stalls(级联停滞)。
- 右上角的筛选按钮可用于选择Trace视图中的信号。选中任一窗口中的所有级联停滞有助于更好地了解在时间线中发生这些停滞的原因,因为在级联链中,级联停滞通常彼此之间存在关联。单击筛选按钮,取消选中顶部的All(全部),然后选中感兴趣的所有内核。
- 选择Cascade stall即可在Trace视图中高亮停滞。图 1. Trace视图中的级联停滞
每项级联停滞都包含下列信息。
- Stall ID(停滞 ID)
- 串流停滞名为 CS_<NUM>。停滞发生时间越早,编号越小。此编号在所有类型的停滞中都是唯一的。
- Stalled Tile(停滞的拼块)
- 已停滞的内核所在的 AI 引擎 tile。
- Stalled Kernel(停滞的内核)
- 已停滞的内核。此内核名为
<Kernel_function_name>.<Schedule_ID>.<Graph_instance_name>
。有时,它显示为_main
,随后,需通过交叉探测来查找实际的内核函数。 - Start (ns)(开始 (ns))
- 发生停滞的开始时间
- Duration (ns)(持续时间 (ns))
- 停滞的持续时间。
- PC
- 发生停滞时的程序计数器。
- Stalled Port(停滞的端口)
- 已停滞的内核所在的端口。
- Related Stalls(相关停滞)
- 可能导致此停滞的其它停滞。
- Full Destination Port(目标端口已满)
- 此端口已满,导致已停滞的内核无法写入。
- Empty Source Port(源端口为空)
- 此端口为空,导致已停滞的内核无法从中读取。
浏览Trace视图中的级联停滞,查看其彼此之间的关联。
- 可能是由于其它类型的停滞导致了级联停滞。浏览其它类型的停滞,分析发生停滞的原因。Stalls视图中的相关停滞可显示哪项停滞导致了级联停滞。
- 查看Graph视图中发生的停滞有助于识别导致停滞的原因。选中Graph视图。
- 选中Stalls视图,然后从下拉列表中选中Cascade Stalls。
- 单击Stalls视图中的路径,这样就会在Graph视图中以红色显示停滞路径。
- 浏览级联停滞及其关联停滞,这样有助于查找有关停滞原因的提示。单击Related Stalls也能以红色显示相关停滞。例如,单击Related Stalls中的 SS_16 即可查看红色路径,这样可以提供有关停滞开始位置的提示。图 2. Graph视图中的级联停滞
下表列出了导致级联停滞的部分可能场景以及可能的解决方案。
源 | 目标 | 停滞类型 | 可能的解决方案 |
---|---|---|---|
级联串流 | 级联串流 | 级联停滞 |
|
串流 + 级联串流 | 串流 + 级联串流 | 级联停滞 |
|