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 ) 場合、トレース データは run の最後にのみオフロードされます。デフォルト設定は 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>
|
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