使用 Vitis Unified IDE 和报告 - 2023.2 简体中文

AI 引擎内核与计算图编程指南 (UG1079)

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

Vitis Unified IDE 负责管理 AI 引擎组件和系统工程。Vitis Unified IDE 提供了各种视图,用于 AI 引擎内核开发,并且它对于内核开发、调试和分析也同样不可或缺。

Vitis Unified IDE 具有调试视图,其中可显示寄存器、变量、可用断点、寄存器/存储器映射变量、内部/外部存储器内容、Disassembly(反汇编)视图和Pipeline(流水线)视图,以便提供各种指示信息。

启动仿真时,如果在启动配置中选中Enable Profile(启用剖析),那么它将在控制台中显示 printf 输出。启动配置中的Enable Trace(启用追踪)复选框用于生成事件追踪数据,这些数据有助于更好地了解存储器停滞和串流停滞等事件发生的时间和方式。事件追踪有助于性能调优。

启动调试透视图时,如果在启动配置中选中Enable Pipeline View(启用流水线视图),则可显示AI ENGINE PIPELINE(AI 引擎流水线)视图。

图 1. 调试配置

在调试透视图中,调试命令支持您复原、单步进入和单步跳过。其中会显示 AI 引擎源代码,并且可通过双击各行来设置断点。Variables(变量)窗口、Breakpoints(断点)窗口和Register Inspector(寄存器检查器)窗口可用于检查器观察数据存储器或寄存器状态。Disassembly视图有助于了解指令使用情况,尤其是这些指令在流水线中的调度方式。Pipeline视图允许您将特定时钟周期内执行的指令与Disassembly视图中的标签加以关联。

图 2. 调试透视图

AI 引擎 (Col_Row.cc) 生成的代码包含核中的 AI 引擎内核以及封装文件代码。在 AI 引擎封装文件代码中,您可单击多个单步进入按钮以单步进入 AI 引擎内核代码。或者,您可从设计透视图打开 AI 引擎内核源文件,并在该文件中设置断点。有多个视图可用于调试和性能调优,如Disassembly视图、Pipeline视图、Memory Inspector(存储器检查器)、Register InspectorVariables视图。

注释: 断点数量限制为每个 tile(拼块)最多 4 个断点。要设置超出允许数量的新断点,必须清除现有断点。如果您尝试设置的断点数量超出允许的数量,本工具将发出错误消息。

Disassembly视图会显示编译器以硬件为目标所生成的指示信息。在各行之间也可嵌入 C/C++ 源码以供源代码引用。这些指示信息码有助于理解编译结果,尤其是循环流水打拍的结果。在Disassembly视图中通过滚动或单步进入即可找到内核中的循环。循环会从零开销循环开始 (ZLS) 迭代至零开销循环结束 (ZLE)。从中可以看到加载指令和 MAC 指令布局为流水打拍的方式。前导码和后导码指令布局在零开销循环主体之前和之后,用于填充和清空流水线阶段。

Microcode(微码)视图提供了已编译内核指令信息的静态视图。该视图可通过 Vitis IDE 的Tile(拼块)视图中的 AI 引擎组件或链接来打开。右键单击Microcode视图,将该选项设置为Enable AIE Cross Probing(启用 AIE 交叉探测)。这样就会在Microcode视图与源代码视图之间发生交叉探测。

图 3. “Microcode”视图的交叉探测

AI 引擎核的连接器存储器映射报告可在 Work/aie/core_ID/Release/core_id.map 中找到。该列表按函数、静态变量和软件栈来列出程序和数据存储器的位置。从这些报告中可以抽取栈大小、程序存储器大小、全局缓冲器及其大小。如需生成连接器报告的 XML 版本 (core_id.map.xml),只需为 AI 引擎编译器指定 -Xchess=\"main:bridge.xargs=-fB\" 选项即可。

Work/<name>.aiecompile_summary 是可在 Vitis IDE 中打开的编译汇总报告。Work/reports 包含计算图编译结果(例如,内核与缓冲器映射结果)的多份报告。如需了解有关 AI 引擎编译器输出的更多信息,请参阅 AI 引擎工具和流程用户指南 (UG1076)