XRT 流程如下所示:
- 将生成的 sd_card.img 烧写到物理 SD 卡上。
- 按本节中所述方式,在 sd_card 文件夹中创建
xrt.ini
文件以启用xrt
流程。xrt.ini
文件示例如下所示。# Main switch to turn on aie trace [Debug] aie_trace = true # Continuous trace knobs [AIE_trace_settings] reuse_buffer = true periodic_offload = true # Time to wait between trace reads buffer_offload_interval_us = 100 # Total amount of device memory shared between trace streams buffer_size = 16M # granularity graph_based_aie_tile_metrics = all:all:functions
- 在硬件上运行设计以追踪硬件事件。
- 将捕获的追踪数据从 sd_card 文件夹复制到设计内与设计的
Work
目录相同的层次。追踪数据的生成位置与 SD 卡上主机应用所在位置相同。这些文件为xrt.run_summary
、aie_event_runtime_config.json
和aie_trace_N.txt
。 - 使用 Vitis IDE,通过此命令导入和分析数据。
vitis-a xrt.run_summary
[Debug]
aie_trace = true
# Section for AIE trace settings
[AIE_trace_settings]
# Size of AIE trace buffer in DDR (Format: <Integer>[K|k|M|m|G|g]; Default: 1M)
buffer_size = 100M
# Graph/Kernel name
graph_based_aie_tile_metrics = <graph name|all>:<kernel_name|all:<off|functions|functions_partial_stalls|functions_all_stalls>
# AI Engine Tiles
# Single or all tiles
tile_based_aie_tile_metrics = <{<column>,<row>}|all>:<off|functions|functions_partial_stalls|functions_all_stalls>
# Range of tiles
tile_based_aie_tile_metrics = {<mincolumn,<minrow>}:{<maxcolumn>,<maxrow>}:<off|functions|functions_partial_stalls|functions_all_stalls>
选项 | 描述 |
---|---|
aie_trace =
true
|
在应用执行期间启用 AI 引擎事件追踪。 |
buffer_size =
100M
|
在 DDR 存储器内设置事件追踪缓冲器的大小。 |
reuse_buffer =
true
|
在 DDR 存储器内启用事件追踪缓冲器的复用。启用该选项时,会将 DDR 追踪缓冲器作为圆形缓冲器来处理,并从 XRT 持续卸载追踪数据。该选项仅适用于使用 PLIO 追踪捕获的事件追踪数据。该选项无法与 GMIO 选项搭配使用。默认值为 false 。 |
periodic_offload =
true / false
|
在应用运行时,启用定期将追踪数据从 DDR 到卸载 XRT 的功能。如不设置该选项 (false ),那么仅在运行结束时卸载追踪数据。默认选项设置为 true 。该选项支持您定期卸载追踪数据,即使应用崩溃也是如此。在此情况下,您可以检查截至上一次定期下载追踪数据之前的追踪信息。 该选项可搭配 如将该选项与
|
offload_interval_us
= 10
|
指定将追踪事件数据从 DDR 存储器中的追踪缓冲器读取到 XRT 中的缓冲器的频率(以毫秒为单位)。仅当 periodic_offload=true 时,该选项才有效。默认值为 100
|
file_dump_interval_s = 3
|
指定将追踪事件数据从 XRT 中的追踪缓冲器读取到 SD 卡中的事件追踪文件的频率(以秒为单位)。仅当 periodic_offload=true 时,该选项才有效。默认设为 5
|
start_type = time |
iteration | kernel_event0
|
为了高效使用 DDR 中可用的有限追踪缓冲器,该选项支持基于时间、迭代或用户定义的事件来延迟追踪的功能。要使用 start_type = kernel_event0 选项,您必须在内核代码中添加 event0() 内部函数,此内核代码用于生成核事件 0 以供剖析。start_type = time|iteration 选项应分别与 start_time 选项和 start_iteration 选项相结合,如下所述。如需了解有关延迟的事件追踪的更多信息,请参阅 使用延迟事件追踪 主题。 |
start_time =
<1000|1s|1ms|1us|1ns>
|
该选项可指定事件追踪的起始延迟,用 AI 引擎时钟周期数或时间(以 sec、ms、us 或 ns 为单位)来表示。如未指定单位,则假定该值表示 AI 引擎时钟周期数。该选项应仅限与 start_type = time 选项一起使用。 |
start_iteration =
<int>
|
该选项允许基于计算图迭代计数启动事件追踪。要使用该事件追踪启动类型,您必须利用 graph-iterator-event 选项来重新编译 AI 引擎设计。该选项应仅限与 start_type =
iteration 一起使用。如不指定任何值,则默认迭代值取 1。 |
graph_based_aie_tile_metrics = <graph
name|all>:<kernel
name|all>:<off|functions|functions_partial_stalls|functions_all_stalls>
|
该选项用于配置 AI 引擎事件追踪指标,该指标将应用于所有计算图或特定计算图中的所有内核。该选项会被应用于拼块,即使在该拼块上有多个内核正在运行也是如此。 |
tile_based_aie_tile_metrics =
<{<column>,<row>}|all>:<off|functions|functions_partial_stalls|functions_all_stalls>
|
该选项用于配置 AI 引擎事件追踪指标,该指标将应用于单个拼块或所有拼块。 |
tile_based_aie_tile_metrics =
{<mincolumn,<minrow>}:{<maxcolumn>,<maxrow>}:<off|functions|functions_partial_stalls|functions_all_stalls>
|
该选项用于配置 AI 引擎事件追踪指标,该指标将应用于某一范围内的所有拼块。 |
graph_based_interface_tile_metrics = <graph
name|all>:<port
name|all>:<off|input_ports|output_ports|input_ports_stalls|output_ports_stalls|
input_ports_details|output_ports_details>
|
此选项用于配置接口拼块的事件追踪指标,该指标应用于所有计算图或特定计算图中的所有端口或特定端口。 |
tile_based_interface_tile_metrics =
<column|all>:off|input_ports|output_ports
|input_ports_stalls|output_ports_stalls|input_ports_details|output_ports_details>
[:<channel 1>][:<channel 2>]
|
该选项用于配置接口拼块的事件追踪指标,该指标应用于单个拼块或所有拼块。 |
tile_based_interface_tile_metrics =
<mincolumn>:<maxcolumn>:<off|input_ports|output_ports|input_ports_stalls|output_ports_stalls
|input_ports_details|output_ports_details>[:<channel
1>][:<channel 2>]
|
该选项用于配置接口拼块的事件追踪指标,该指标应用于某一范围内的所有拼块。 |
-graph-based-memory-tile-metrics
|
该选项用于配置存储器拼块的事件追踪指标,该指标应用于一部分计算图/缓冲器。 注释: 该选项仅适用于 AI 引擎机器学习器件。
|
-tile-based-memory-tile-metrics
|
该选项用于配置存储器拼块的事件追踪指标,该指标适用于一部分拼块。 注释: 该选项仅适用于 AI 引擎机器学习器件。
|
例如:
# Example 1 : trace function events for all tiles used in the AI Engine array
[AIE_trace_settings]
tile_based_aie_tile_metrics = all:functions
# Example 2 : trace function events in all the kernels in all graphs (Similar to the example above)
[AIE_trace_settings]
graph_based_aie_tile_metrics = all:all:functions
# Example 3 : trace all function stalls events on all used tiles
[AIE_trace_settings]
tile_based_aie_tile_metrics = all:functions_all_stalls
# Example 4 : trace function events within the bounding box of tiles or
# on specific tiles
[AIE_trace_settings]
tile_based_aie_tile_metrics = {4,1}:{6,2}:functions_all_stalls; {4,1}:functions
# Example 5 : trace events specified by graph name
[AIE_trace_settings]
graph_based_aie_tile_metrics = chain_0:all:functions; chain_1:all:functions_all_stalls; chain_2:all:functions_partial_stall
# Example 6 : trace functions_all_stalls events all kernels in all graphs
# and trace function events occuring in all kernels in the graph chain_0
[AIE_trace_settings]
graph_based_aie_tile_metrics = all:all:functions_all_stalls; chain_0:all:functions
# Example 7 : Trace graphs and all kernels function events and override
# tile 4,1 with functions all stalls
[AIE_trace_settings]
graph_based_aie_tile_metrics = all:all:functions
tile_based_aie_tile_metrics = {4,1}:functions_all_stalls
# Example 8 : Trace all graphs and all kernels function events and turn off
# trace in tile 4,1
[AIE_trace_settings]
graph_based_aie_tile_metrics = all:all:functions
tile_based_aie_tile_metrics = {4,1}:off
# Example 9 : Trace multi-level hierarchical graph
[AIE_trace_settings]
graph_based_aie_tile_metrics = MyGraph.sub_graph1.sub_graph2:all:functions
#Examples on Delayed event trace
# Example 10 : Trace function events in all the kernels in all graphs,
# delayed by 1ms.
[AIE_trace_settings]
graph_based_aie_tile_metrics = all:all:functions
start_type = time
start_time = 1ms
# Example 11 : Trace function events for all tiles used in the AI Engine
# array, delayed by 10 graph iterations.
[AIE_trace_settings]
tile_based_aie_tile_metrics = all:functions
start_type = Iteration
start_iteration = 10
# Example 12 : Trace user defined event in the kernel 'add' in graph 'MyGraph'.
[AIE_trace_settings]
graph_based_aie_tile_metrics = MyGraph:add:functions
start_type = kernel_event0