跳转到主要内容

AI 引擎系列 7 - 在仿真内通过追踪来可视化 AI 引擎事件(2022.1 更新)

<font color="#FF8000">作者:Florentw,AMD工程师;来源:AMD开发者社区</font>

在前几篇 AI 引擎系列博文中,我们讲解了 AI 引擎仿真器生成的用于执行 AI 引擎 (AIE) 应用功能验证的文本文件。

在本文中,我们将讲解如何生成追踪来观察计算图 (graph) 的状态,这也是执行性能分析的关键要素。

<strong>要求</strong>

下文要求您通读前几篇 AI 引擎系列博文。

<p><a href="https://xilinx.eetrend.com/content/2023/100574714.html">AI 引擎系列 1 - 从 AI 引擎工具开始(2022.1 更新)</a><br />
<a href="https://xilinx.eetrend.com/content/2023/100575023.html">AI 引擎系列 2 - AI 引擎 graph 简介 (2022.1 更新)</a><br />
<a href="https://xilinx.eetrend.com/content/2023/100575117.html">AI 引擎系列 3 - AI 引擎内核简介</a><br />
<a href="https://xilinx.eetrend.com/content/2023/100575652.html">AI 引擎系列 4 - 首次运行 AI 引擎编译器和 x86simulator(2022.1 更新)</a><br />
<a href="https://xilinx.eetrend.com/content/2023/100575896.html">AI 引擎系列 5 - 以 AI 引擎模型为目标运行 AI 引擎编译器(2022.1 更新)</a><br />
<a href="https://xilinx.eetrend.com/content/2023/100576210.html">AI 引擎系列 6 - 在 Vitis 分析器中分析 AI 引擎编译结果(2022.1 更新)</a><br />

<strong> 禁用编译器最优化</strong>
为了获得最详细的可视化,最好禁用编译器最优化。

要禁用编译器最优化,请右键单击 simple_application 工程,然后单击“C/C++ Build Settings”(C/C++ 构建设置)
<center><img src="https://cdn.eetrend.com/files/2024-01/wen_zhang_/100577027-329041-biany…; alt=""></center>

随后在“Settings > AIE C Compiler > Miscellaneous”(设置 > AIE C 语言编译器 > 杂项)中,将“Optimization”(最优化)设置更改为“No Optimizations (xlopt=0)”(无最优化 (xlopt=0))。
<center><img src="https://cdn.eetrend.com/files/2024-01/wen_zhang_/100577027-329042-biany…; alt=""></center>

单击“Apply and Close”(应用并关闭),然后单击锤子图标重新编译“Simple Application”工程。

<strong> 从 AI 引擎仿真器生成 VCD 追踪</strong>
AI 引擎仿真器可按值变转储 (VCD) 文件形式来生成硬件信号的详细转储。仿真完成后,即可处理完该 VCD 文件并将其包含在各项事件中,每项事件都包含时间戳、不同事件类型和关联的数据。这些事件用于描述 AI 引擎应用的执行过程。

要从 Vitis IDE 生成 VCD 文件,请首先在“Project Explorer”(工程资源管理器)窗口中单击该 AI 引擎应用,然后单击“Run As > Run Configurations...”(运行方式 > 运行配置)。
<center><img src="https://cdn.eetrend.com/files/2024-01/wen_zhang_/100577027-329043-biany…; alt=""></center>

在“Run Configurations”窗口中,启用“Generate Traces”(生成追踪)并选中 VCD。
<center><img src="https://cdn.eetrend.com/files/2024-01/wen_zhang_/100577027-329044-biany…; alt=""></center>

单击“Run”(运行)即可启动仿真。这样我们即可看到下列命令的执行过程:
aiesimulator --pkg-dir=./Work --i=.. --dump-vcd=foo

通过与先前运行过程相比较,即可看到本轮运行添加了 --dump-vcd=<file name> 选项用于生成 VCD 追踪。

仿真完成后,可以看到在 Emulation-AIE 文件夹下创建的 VCD 文件 (foo.vcd)。
<center><img src="https://cdn.eetrend.com/files/2024-01/wen_zhang_/100577027-329045-biany…; alt=""></center>

<strong> 使用 Vitis 分析器分析追踪</strong>
运行仿真后,Vitis 会生成 Vitis 分析器文件,其中包含仿真输出。
打开 Emulation-AIE/aiesimulator_output 下的 default.aierun_summary 文件。
<center><img src="https://cdn.eetrend.com/files/2024-01/wen_zhang_/100577027-329046-biany…; alt=""></center>

这样即可打开 Vitis 分析器工具。

在“Trace”(追踪)选项卡中,会显示追踪信息,包括核、DMA、锁定与信号线的状态(按功能块来组织)
<center><img src="https://cdn.eetrend.com/files/2024-01/wen_zhang_/100577027-329047-biany…; alt=""></center>

此视图对于估算内核的执行时间很有用。例如,其中可以看到首个内核的首次调用于 556.8 ns 后开始,并于 729.6 ns 后结束。因此该内核执行时间达 172.8 ns 或 216 个时钟周期,其中 AI 引擎运行频率为 1250 MHz。
<center><img src="https://cdn.eetrend.com/files/2024-01/wen_zhang_/100577027-329048-biany…; alt=""></center>