作者:Florentw,AMD工程师;来源:AMD开发者社区
在前几篇 AI 引擎系列博文中,我们讲解了 AI 引擎仿真器生成的用于执行 AI 引擎 (AIE) 应用功能验证的文本文件。
在本文中,我们将讲解如何生成追踪来观察计算图 (graph) 的状态,这也是执行性能分析的关键要素。
要求
下文要求您通读前几篇 AI 引擎系列博文。
AI 引擎系列 1 - 从 AI 引擎工具开始(2022.1 更新)
AI 引擎系列 2 - AI 引擎 graph 简介 (2022.1 更新)
AI 引擎系列 3 - AI 引擎内核简介
AI 引擎系列 4 - 首次运行 AI 引擎编译器和 x86simulator(2022.1 更新)
AI 引擎系列 5 - 以 AI 引擎模型为目标运行 AI 引擎编译器(2022.1 更新)
AI 引擎系列 6 - 在 Vitis 分析器中分析 AI 引擎编译结果(2022.1 更新)
禁用编译器最优化
为了获得最详细的可视化,最好禁用编译器最优化。
要禁用编译器最优化,请右键单击 simple_application 工程,然后单击“C/C++ Build Settings”(C/C++ 构建设置)

随后在“Settings > AIE C Compiler > Miscellaneous”(设置 > AIE C 语言编译器 > 杂项)中,将“Optimization”(最优化)设置更改为“No Optimizations (xlopt=0)”(无最优化 (xlopt=0))。

单击“Apply and Close”(应用并关闭),然后单击锤子图标重新编译“Simple Application”工程。
从 AI 引擎仿真器生成 VCD 追踪
AI 引擎仿真器可按值变转储 (VCD) 文件形式来生成硬件信号的详细转储。仿真完成后,即可处理完该 VCD 文件并将其包含在各项事件中,每项事件都包含时间戳、不同事件类型和关联的数据。这些事件用于描述 AI 引擎应用的执行过程。
要从 Vitis IDE 生成 VCD 文件,请首先在“Project Explorer”(工程资源管理器)窗口中单击该 AI 引擎应用,然后单击“Run As > Run Configurations...”(运行方式 > 运行配置)。

在“Run Configurations”窗口中,启用“Generate Traces”(生成追踪)并选中 VCD。

单击“Run”(运行)即可启动仿真。这样我们即可看到下列命令的执行过程:
aiesimulator --pkg-dir=./Work --i=.. --dump-vcd=foo
通过与先前运行过程相比较,即可看到本轮运行添加了 --dump-vcd=
仿真完成后,可以看到在 Emulation-AIE 文件夹下创建的 VCD 文件 (foo.vcd)。

使用 Vitis 分析器分析追踪
运行仿真后,Vitis 会生成 Vitis 分析器文件,其中包含仿真输出。
打开 Emulation-AIE/aiesimulator_output 下的 default.aierun_summary 文件。

这样即可打开 Vitis 分析器工具。
在“Trace”(追踪)选项卡中,会显示追踪信息,包括核、DMA、锁定与信号线的状态(按功能块来组织)

此视图对于估算内核的执行时间很有用。例如,其中可以看到首个内核的首次调用于 556.8 ns 后开始,并于 729.6 ns 后结束。因此该内核执行时间达 172.8 ns 或 216 个时钟周期,其中 AI 引擎运行频率为 1250 MHz。
