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.json、および aie_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) 場合、トレース データは run の最後にのみオフロードされます。デフォルト設定は 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> 1 つまたはすべてのタイルに適用する 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>] 1 つ/すべてのタイルに適用されるインターフェイス タイルのイベント トレースが設定されます。
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 エンジン ML デバイスにのみ適用可能です。
-tile-based-memory-tile-metrics タイル セットのメモリ タイル メトリクスのイベント トレースが設定されます。
注記: このオプションは、AI エンジン ML デバイスにのみ適用可能です。
次に例を示します。
# 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