连续追踪捕获 - 2022.1 简体中文

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

Document ID
UG1393
Release Date
2022-05-25
Version
2022.1 简体中文

Vitis 工具支持在运行应用时记录连续追踪数据。应用可能因长时间运行而导致捕获大量追踪数据,这可能导致诸如追踪数据不完整等问题,当用于追踪数据的存储器资源不足时更是如此。通过使用连续追踪,即可在应用仍在运行时或者在应用完成前即崩溃的情况下执行追踪分析。

借助连续捕获追踪数据的功能,在 Vitis 分析器工具中即可在运行应用的同时动态更新“Timeline Trace”(时间线轨迹)报告。在 Vitis 分析器中加载这些报告后,有一个超链接可用于表示当前报告正在磁盘上进行修改。如需加载新数据,功能区上的Reload(重新加载)或Auto-Reload(自动重新加载)选项可支持您在运行应用并生成追踪数据的同时查看更新的报告。

默认情况下,不启用连续追踪。此外,FPGA 的存储器资源并非无限。因此,如果应用生成大量追踪数据,可使用圆形缓冲器来存储数据。圆形缓冲器可写入、下载至主机并可复用。通过为连续追踪启用圆形缓冲器,可进一步减少所需的存储器资源,从而节省器件上的可用资源。但应用随连续追踪/圆形缓冲器一起运行可能导致生成多个器件追踪文件。

提示: 对于硬件仿真,仅限主机侧连续追踪可用,而对于硬件运行,主机侧和器件侧连续追踪均可用。

在如下情况下,建议使用存储器资源作为圆形缓冲器。

xrt.ini 中启用连续追踪时,自动启用圆形缓冲器实现。此流程需如下设置才能启用连续追踪。

  • xrt.ini 文件中,continuous_trace 设置为 TRUE
  • v++ 链接选项 --profile.trace_memory 设置为 DDR 或 HBM

您可选择如下设置:

  • xrt.ini 文件中使用 trace_buffer_size 来设置追踪缓冲器的大小。此大小默认值为 1 MB。
  • xrt.ini 文件中使用 trace_buffer_offload_interval_ms 来设置从器件卸载追踪缓冲器的时间间隔。默认值为 10 ms。
  • 通过设置 trace_file_dump_interval_s 来设置文件转储的时间间隔。默认值为 3 秒。
重要: 可通过将 trace_buffer_offload_interval_ms 设置为 0 ms 来强制启用圆形缓冲器。
例如,如果您启用 continuous_trace 并将 trace_buffer_size 设为 8k,trace_buffer_offload_interval_ms 采用默认值 10 ms,那么追踪数据速率为每秒 819200 字节,小于默认的 100 MB/s。在此情况下,圆形缓冲器默认不启用,并报告 XRT 警告:
[XRT] WARNING: Unable to use circular buffer for continuous trace offload. Please increase trace buffer size and/or reduce continuous
trace interval. Minimum required offload rate (bytes per second) : 104857600 Requested offload rate : 819200
以下是 xrt.ini 设置示例:
[Debug]
opencl_trace=true
device_trace=fine
stall_trace=all
continuous_trace=true
// The following are optional and needed only in rare circumstances

trace_buffer_size=20M
trace_buffer_offload_interval_ms=10
trace_file_dump_interval_s=2

以下是上述设置的结果:

  • opencl_trace:启用生成主机相关 OpenCL API 追踪,创建 opencl_trace.csv 文件。
  • device_trace:启用收集内核活动,这些活动将被添加到剖析汇总和轨迹报告中,并创建 device_trace_0.csv 文件(器件编号为 0)。
  • stall_trace:启用硬件在计算单元中生成停滞。
  • continuous_trace:启用将器件数据的追踪和连续读取对应的文件连续转储到主机中。
  • trace_buffer_size:指定追踪数据捕获时需耗用的存储空间。
  • trace_buffer_offload_interval_ms:控制从器件到主机的器件数据读取(以毫秒为单位)。
  • trace_file_dump_interval_s:控制追踪文件转储的时间间隔(以秒为单位)。

由此导致在运行应用时,使用以上 xrt.ini 文件不仅可以生成 xrt.run_summary,还可生成多个 CSV 文件。Vitis 分析器只需生成的 run_summary 文件即可,并且将使用相关 CSV 文件来显示剖析汇总和时间线轨迹信息。

以下是有关设置应用以进行追踪数据转储的一些建议:

  1. 默认情况下,用于追踪捕获的存储器是平台上的首个存储器资源,可使用 platforminfo 实用工具 来判定。大部分平台中,该存储器资源即 DDR 或 HBM。保留用于追踪数据的存储空间由 xrt.ini 文件中的 trace_buffer_size 开关来判定,默认值为 1 MB。.
    注释: 您也可以使用 --profile.trace_memory 选项来指定是否使用 FIFO 以及要分配的大小。
  2. 如果仍无法转储最大追踪数据,则可通过设置 stall_trace=offstall_trace=ondata_transfer_trace=coarse 来禁用停滞追踪。
  3. 如果应用需要更大的追踪缓冲器大小,则可通过设置 continuous_trace=true 并采用默认设置 trace_buffer_offload_interval_ms=10trace_file_dump_interval_s=5 来启用圆形缓冲器。理想情况下,连续追踪功能应在下列情况下使用:
    • 设计长时间运行并生成少量追踪数据
    • 调试应用时发生崩溃,其中部分 .csv 文件仍可用于调试
  4. 如果应用运行仍无法转储最大追踪,可进一步增加 trace_buffer_size
  5. 如果应用仍创建海量追踪数据,导致主机无法满足需求,请减小所用的 trace_file_dump_interval 大小,这样会创建等同于所提供的时间间隔的多个文件。
  6. 最后,在运行应用时,连续追踪不仅会创建 xrt.run_summary 文件,还会创建多个追踪文件。Vitis 分析器只需生成的 run_summary 文件即可,它可选取生成的相关 CSV 文件来显示剖析汇总和时间线轨迹信息,以提供更好的体验。