在应用中启用剖析 - 2023.2 简体中文

Vitis 统一软件平台文档 应用加速开发 (UG1393)

Document ID
UG1393
Release Date
2023-12-13
Version
2023.2 简体中文

要在应用执行期间启用剖析和捕获事件追踪数据,您必须指令自己的应用执行此任务。您必须启用额外逻辑、耗用额外的器件资源来跟踪主机和内核执行步骤,并捕获事件数据。(可选)此进程要求修改您的主机应用,以捕获定制数据、在编译期间修改内核 XO 并在链接期间修改 xclbin 以从器件侧活动中捕获不同类型的剖析数据,并按 xrt.ini 文件 中所述方式配置 Xilinx Runtime (XRT) 以在应用运行时期间捕获数据。

提示: 虽然捕获剖析数据是剖析和最优化进程中用于构建加速应用的关键一环,但它确实会耗用额外的资源,从而对性能产生不利影响。您应确保从最终量产构建中清除掉这些元素。

根据系统所包含的元素以及要捕获的数据类型,对于应用而言,有多种不同类型的剖析可供使用。下表显示了可启用的部分剖析级别,并探讨了各自的实用性。

表 1. 主机和内核剖析
剖析/轨迹 描述 注释
主机应用 OpenCL API 和部分受限的器件侧(内核)剖析。 通过在 xrt.ini 文件中使用 opencl_trace 选项来指定。 生成 opencl_trace.csv 文件和 xrt.run_summary 以供在 Vitis 分析器中查看。
主机应用 XRT 本机 API 通过在 xrt.ini 文件中使用 native_xrt_trace 选项来指定。 为 XRT API 生成剖析汇总和追踪事件,如 编写软件应用 中所述。
主机应用用户事件剖析 要求在主机应用中添加额外代码,如 主机应用的定制剖析 中所述。 为主机应用生成用户范围数据和用户事件。
提示: 可用于捕获事件数据,以供用户管理的内核使用,如 使用用户管理的内核 中所述。
低开销剖析 通过在 xrt.ini 文件中使用 lop_trace 选项来指定。 生成 lop_trace.csv 文件,如 启用低开销剖析 中所述。
器件侧剖析 v++ 编译和链接期间使用 --profile 选项(如 --profile 选项 中所述)来启用,在 xrt.ini 文件中使用 device_trace 来启用。 启用对主机与内核之间的数据流量、内核停滞、内核与计算单元 (CU) 的执行时间以及 AMD Versal™ AI 引擎中的监控活动进行捕获。
AI 引擎计算图与内核 通过在 xrt.ini 文件中使用 aie_profileaie_trace 选项来指定。这些选项可以结合在一起指定,也可以各自单独指定。 生成 default.aierun_summary 报告,其中包含剖析报告和/或追踪报告。aierun_summary 位于 AI 引擎计算图构建目录的 aiesimulator_output 文件夹内。如需了解更多信息,请参阅 AI 引擎工具和流程用户指南(UG1076) 中的“基于 AI 引擎仿真的剖析”章节。
功耗剖析 通过在 xrt.ini 文件中使用 power_profile 选项来指定。 生成 power_profile_<device>.csv 报告。
注释: 在嵌入式平台或 AWS 上不支持此功能。
Vitis AI 剖析 通过在 xrt.ini 文件中使用 vitis_ai_profile 选项来指定。 启用 DPU 计数器剖析,以生成 opencl_summary.csv 文件和 xrt.run_summary,以供在 Vitis 分析器中查看。

默认情况下,器件二进制文件 (xclbin) 配置为捕获有限的器件侧剖析数据。但在 Vitis 编译器链接期间使用 --profile选项则会对器件二进制文件进行检测,方法是在系统中添加 Acceleration Monitor、AXI Performance Monitor 和 Memory Monitor。该选项还具有多个检测选项:--profile.data--profile.stall--profile.exec,如 --profile 选项 中所述。

例如,请将 --profile.data 添加到 v++ 链接命令行中:
v++ -g -l --profile.data all:all:all ...
提示: 编译内核代码用于调试软件或硬件仿真 (emulation) 时,请务必一并使用 v++ -g 选项。

v++ 编译和链接进程中启用应用剖析后,还必须通过编辑 xrt.ini 文件,在 XRT 中启用应用运行时期间的数据收集,如上文所述。例如,以下 xrt.ini 文件支持在运行应用时进行 OpenCL 剖析、功耗剖析以及事件和停滞追踪捕获:

[Debug]
opencl_trace=true
power_profile=true
device_trace=fine
stall_trace=all

要启用内核内部数据剖析,还必须在 xrt.ini[Emulation] 部分中添加 debug_mode 标签:

[Emulation]
debug_mode=batch

如果要收集大量追踪数据,可以通过在 v++ 链接期间指定 --profile.trace_memory 选项并在 xrt.ini 文件中添加 trace_buffer_size 关键字来增加可用于捕获数据的存储空间量。

--profile.trace_memory
表示用于捕获追踪数据的存储器类型。
trace_buffer_size
指定应用运行时期间用于捕获追踪数据的存储空间量。
提示: 如不指定 --profile.trace_memory,但在 xrt.ini 文件 中启用 device_trace,则将捕获剖析数据并存入默认平台存储器,为该存储器分配了 1 MB 作为追踪缓冲器大小。

最后,如 连续追踪捕获 中所述,您可以启用连续追踪捕获以在运行应用时连续卸载器件追踪数据,以便在发生应用或系统崩溃的情况下,有部分追踪数据可用于帮助调试应用。