锁定停滞分析 - 2022.1 简体中文

Versal ACAP AI 引擎编程环境 用户指南 (UG1076)

Document ID
UG1076
Release Date
2022-05-25
Version
2022.1 简体中文

Performance Metrics(性能指标)分析选项卡可帮助识别是否需要对锁定停滞进行分析。以下步骤演示了如何在 Vitis 分析器中开始分析锁定停滞。

  1. 选择Trace(追踪)视图。
  2. Stalls(停滞)视图中,选中下拉列表中的Lock Stalls(锁定停滞)。
    提示: 这样Stalls视图即可随Trace视图、Graph视图和Array(阵列)视图一起使用。
    图 1. Trace视图中的锁定停滞
    每次停滞都包含下列关联信息。
    Stall ID(停滞 ID)
    锁定停滞名为 LS_<NUM>。此编号在所有类型的停滞中都是唯一的。停滞发生时间越早,编号越小。
    Stalled Tile(停滞的拼块)
    已停滞的内核所在的 AI 引擎 tile。
    Stalled Kernel(停滞的内核)
    已停滞的内核。此内核名为 <Kernel_function_name>.<Schedule_ID>.<Graph_instance_name>。有时,它显示为 _main,随后,需通过交叉探测来查找实际的内核函数。
    Start (ns)(开始 (ns))
    停滞的开始时间。
    Duration (ns)(持续时间 (ns))
    停滞的持续时间。
    PC
    发生停滞时的程序计数器。
    Type(类型)
    停滞的内核会尝试对缓冲器执行读取写入
    Buffer(缓冲器)
    停滞的内核尝试读取或写入的缓冲器。
    Port(端口)
    停滞的内核尝试读取或写入缓冲器时所使用的端口。
    Lock Holder(锁定保存器)
    保存缓冲器的锁定的源代码。
    Related Stall(相关停滞)
    可能导致停滞的其它停滞。
    提示: 蓝色项可与其它视图进行交叉探测。
  3. 选中一行停滞。它将转至Trace视图中该停滞的开始位置。(可选)右键单击停滞并选择Filter Trace(筛选追踪)即可筛选与该停滞相关的所有信号。在Trace视图中,会显示与停滞相关的信号。不相关的信号则隐藏。如果采用大型设计,那么这样更便于浏览追踪。
    提示: Filter Trace可能无法显示与相关停滞存在关联的信号。
  4. Trace视图可用于查看时间线中的锁定停滞。对于特定锁定停滞,只需为其分配写入锁定和读取锁定即可查看。根据停滞的位置以及停滞前后的事件,可分析停滞原因。例如,如果已分配写入锁定并且锁定类型为“Read”(读取),那么这表示生产者尚未释放缓冲器。使用者正在等待该缓冲器变为可读。生产者可在Lock Holder中找到。
  5. 要清除先前筛选的追踪,请右键单击并选中Clear All Filters(清除所有筛选)。
  6. Graph视图中显示停滞路径的概览是很有帮助的。选中Graph视图,然后从该视图的下拉列表中选中Tile View(拼块视图)。Graph视图的Tile视图会显示 AI 引擎拼块内的 graph。
    图 2. Graph视图中的锁定停滞
  7. 如果Stalls视图未显示,请从下拉列表中选中Lock Stalls(锁定停滞),并选择要分析的停滞。它将高亮显示Graph视图的Tile视图中的相关路径。
  8. 红色路径显示的是停滞发生的位置。蓝色路径显示的是停滞发生的来源。
  9. 单击 PC 值。这样即可打开源代码并转至其中发生停滞的行。
图 3. 对源代码进行 PC 交叉探测人

下表列出了可能导致锁定停滞的场景以及可能的解决方案。

表 1. 锁定停滞场景和解决方案
目标 目标 停滞类型 可能的解决方案
AI 引擎内核 同步窗口锁定 AI 引擎内核 锁定停滞
  • 如果使用单个缓冲器,请使用乒乓缓冲器(默认)或者将内核布局到相同 AI 引擎拼块内。
  • 如果在执行中内核处于不平衡状态,请平衡内核间的吞吐量。
AI 引擎内核 异步窗口锁定(window_acquirewindow_release API) AI 引擎内核 锁定停滞
  • 如果使用单个缓冲器,请使用乒乓缓冲器(默认)。
  • 及时获取和释放缓冲器。按需使用本地缓冲器。
PL 接口 窗口锁定 AI 引擎内核 锁定停滞
  • 确保 PL 接口吞吐量与 AI 引擎吞吐量相匹配。
  • 检查 PL 接口频率与宽度是否设置正确。请参阅 AI 引擎/可编程逻辑集成
AI 引擎 窗口锁定 PL 接口 锁定停滞
  • 确保 PL 接口吞吐量与 AI 引擎吞吐量相匹配。
  • 检查 PL 接口频率与宽度是否设置正确。请参阅 AI 引擎/可编程逻辑集成
注释: DMA 锁定停滞不包含在 Vitis 分析器锁定停滞分析内。