XRT 流程 - 2023.2 简体中文

AI 引擎工具和流程用户指南 (UG1076)

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

XRT 流程如下所示:

  1. 将生成的 sd_card.img 烧写到物理 SD 卡上。
  2. 按本节中所述方式,在 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
  3. 在硬件上运行设计以追踪硬件事件。
  4. 将捕获的追踪数据从 sd_card 文件夹复制到设计内与设计的 Work 目录相同的层次。追踪数据的生成位置与 SD 卡上主机应用所在位置相同。这些文件为 xrt.run_summaryaie_event_runtime_config.jsonaie_trace_N.txt
  5. 使用 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>
表 1. XRT 追踪选项
选项 描述
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 选项一起使用,以便捕获定期卸载中的 GMIO 和 PLIO 追踪信息。

如将该选项与 reuse_buffer 选项(仅适用于 PLIO 追踪)搭配使用,即可启用连续卸载追踪数据的功能。

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