此阶段的目标是判定导致设计性能下降或停滞或者导致死锁的 AI 引擎内核或 graph 构造。
下图显示了此阶段中可用的任务和技巧。
图 1. AI 引擎事件追踪和分析
以下章节列出了此设计阶段可用的不同调试技巧。
使用 AI 引擎事件追踪流程来运行和分析运行时追踪数据
AI 引擎 Event Trace(事件追踪)功能特性可在硬件中运行设计时,提供设计追踪数据的全方位视图。您可在此三阶段进程中:
- 在启用事件追踪和其它事件追踪相关选项的前提下进行设计编译。
- 在硬件中运行设计并收集事件追踪数据。
- 在 Vitis™ 分析器内打开追踪汇总文件,提供以上收集的追踪数据的波形视图。
图 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 引擎仿真器来进行 graph 仿真。此外,仿真中的追踪和剖析数据也可用于此目的。
如需了解有关 aie::tile::cycles()
API 的详细信息,请参阅
AI 引擎内核编码最佳实践指南
(UG1079)。
Vitis IDE 调试器
您也可以使用 Vitis IDE 调试器来调试内核源代码。如需了解有关 Vitis 调试器的详细信息,请参阅 调试 AI 引擎应用。
下一阶段:判定吞吐量下降的原因并修复问题后,继续执行阶段 1 以重新运行设计。