阶段 4:AI 引擎事件追踪和分析 - 2023.2 简体中文

AI 引擎工具和流程用户指南 (UG1076)

Document ID
UG1076
Release Date
2023-12-04
Version
2023.2 简体中文

此阶段的目标是判定导致设计性能下降或停滞或者导致死锁的 AI 引擎内核或计算图构造。

下图显示了此阶段中可用的任务和技巧。

图 1. AI 引擎事件追踪和分析

以下章节列出了此设计阶段可用的不同调试技巧。

使用 AI 引擎事件追踪流程来运行和分析运行时追踪数据

AI 引擎 Event Trace(事件追踪)功能特性可在硬件中运行设计时,提供设计追踪数据的全方位视图。您可在此三阶段进程中执行以下操作

  1. 在启用事件追踪和其他事件追踪相关选项的前提下进行设计编译。
  2. 在硬件中运行设计并收集事件追踪数据。
  3. Vitis IDE 内打开追踪汇总文件,其中提供了以上收集的追踪数据的波形视图。

事件追踪数据允许您识别造成停滞、死锁或吞吐量下降的 AI 引擎内核,并且还可查看发生停滞/吞吐量下降状况之前的事件以及其他详细追踪信息。如需了解有关事件追踪功能特性的详细信息,请参阅 硬件中的事件追踪

图 2. 事件追踪

如需了解在硬件中运行事件追踪时遇到的特定技巧的详细解决方案,请参阅 在硬件中对事件追踪进行故障排除。该功能特性受到可供器件内的事件追踪使用的事件追踪计数器、串流、DDR 存储器和设计资源的限制。

剖析内核内性能

您还可以使用 aie::tile::cycles() API 来剖析特定内核内部的代码块。

要在硬件内获取该值,您可将该值写入存储器或者写入输出串流。写入输出串流的示例如下所示。随后即可在主机应用中检验此数据串流以读回剖析数据。

// get the current tile
aie::tile tile=aie::tile::current();
unsigned long long time=tile.cycles(); //cycle counter of [SS1] the AI Engine tile
writeincr(out,time);
{//loop to be profiled
}
time=tile.cycles();//cycle counter of the AI Engine tile
writeincr(out,time);

这是极具侵入性的内核代码剖析方法。 建议您使用此方法搭配 AI 引擎仿真器来进行计算图仿真。此外,仿真中的追踪和剖析数据也可用于此目的。

如需了解有关 aie::tile::cycles() API 的详细信息,请参阅 AI 引擎内核与计算图编程指南 (UG1079)

Vitis IDE 调试器

您也可以使用 Vitis IDE 调试器来调试内核源代码。如需获取有关 Vitis 调试器的详细信息,请参阅 Vitis 统一软件平台文档:应用加速开发(UG1393) 中的调试系统工程和 AI 引擎组件

下一阶段:判定吞吐量下降的原因并修复问题后,继续执行阶段 1 以重新运行设计。