XRT フローで得られたプロファイル結果を表示するには、次のコマンドを使用します。
vitis -a xrt.run_summary
XSDB フローで Vitis IDE を起動してプロファイリング情報を表示するには、次のコマンドを使用します。
vitis -a aie_trace_profile.run_summary
[Graph] ビューのパフォーマンス アノテーション
ハードウェアのプロファイリング内容に応じて、パフォーマンス データを [Graph] ビューの特定のテーブルに表示させることができます。対応するオブジェクトの上にマウスを置くと、そのパフォーマンスが表示されます。
次の例では、出力スループットがハードウェアでどのように測定され、[Graph] ビューのどこに表示されるかを示します。
-
xrt.ini
に内容を追加します。[Debug] aie_profile=true [AIE_profile_settings] tile_based_interface_tile_metrics=25:25:output_throughputs
- 続いて、アプリケーションを実行してプロファイリング結果を取得し、Vitis IDE でその結果を表示します。
パフォーマンス データは、Interface Channels
のテーブルに含まれます。プロファイルされたポートの上にマウスを置くと、次の図のようにパフォーマンス データが表示されます。
heat_map コア メトリクスと conflicts メモリ メトリクスの例
次の図に、サンプル デザインの 10 タイルに対する heat_map
メトリクスのアクティブ時間、ストール時間、累積命令数、およびベクター命令数と、conflicts
メトリクスのメモリ競合時間および累積メモリ エラー時間を示します。
AI エンジンが (15,0) に配置されているとします。このアクティブな使用時間 (5.120 ms) 中に 5120000 個のベクターが実行されます。これはアクティブ時間の 87% を占めます。これは良いパフォーマンスで、適切に最適化されたコアであることを示します。
stalls コア メトリクスと dma_locks メモリ メトリクスの例
次の図に、サンプル デザインの 10 タイルに対する stalls
メトリクスのメモリ ストール時間、ストリーム ストール時間、カスケード ストール時間、およびロック ストール時間と、dma_locks
メトリクスの累積 DMA アクティビティ時間および累積 DMA ロック回数を示します。
コア (24,2) では、DMA は 70.645 ms 間 (7780 万個の命令) アクティブですが、298 回停止しています。
execution コア メトリクスと conflicts メモリ メトリクスの例
次の図に、サンプル デザインの 10 タイルに対する execution
メトリクスの累積命令数、ベクター命令数、ロード命令数、ストア命令数と、conflicts
メトリクスのメモリ競合時間および累積メモリ エラー時間を示します。
コア (15,1) には、マイナーですがメモリ競合がいくつかあり、これを特定する必要があります。発生が少ないのは、DMA やその他のカーネル アクセスの干渉が原因である可能性があります。
read_throughputs と write_throughputs AI エンジン メトリクスおよび dma_stalls_s2mm と dma_stalls_mm2s AI エンジン メモリ メトリクスの例
次の図に、サンプル デザインの 10 タイルに対する read_throughputs
および write_throughputs
メトリクスの一部である、ストリーム読み出し命令数、ストリーム書き込み命令数、カスケード読み出し命令数、およびカスケード書き込み命令数と、dma_stalls_s2mm
および dma_stalls_mm2s
メトリクスの s2mm channel0 ストール時間、mm2s channel0 ストール時間、s2mm channel1 ストール時間、および mm2s channel1 ストール時間を示します。
AI エンジン カーネルでは、45% 以上の割合でカスケード書き込みとストリーム書き込みが発生していることが分かります。これは、ストリーム スループットがメモリ スループットよりもはるかに小さいため、AI エンジンをアクティブにしておくために必要です。
heat_map コア メトリクスと dma_locks メモリ メトリクスの例
次の図に、サンプル デザインの 10 タイルに対する heat_map
メトリクスのアクティブ時間、ストール時間、累積命令数、およびベクター命令数と、dma_lock
メトリクスの累積 DMA アクティビティ時間および累積 DMA ロック回数を示します。
累積 DMA アクティビティ時間と累積 DMA ロック回数により、ロック取得数と DMA を介して転送されるデータ数に不一致がないかどうかを確認できます。ロック回数の相対的な数は、各コアの相対的な反復回数を解釈するのにも使用できます。
input_throughputs インターフェイス メトリクスの例
次の図に、8 x 8 カスケード タイル デザインの input_throughputs:0
メトリクスの一部として、PLIO レベルでのデザインの入力スループットを示しています。
このグラフでは、すべての入力 PLIO のチャネル 0 スループットは約 95% で、達成可能な最大値に近い値です。このプロファイリング手順の後、AI エンジンがデータ不足になっていないことを確認します。
Vitis IDE のレポートの統合
プロファイリング段階では、実行時にすべてのメトリクスが同時に使用されるわけではありません。xrt.ini
で異なるプロファイル メトリック セットを使用してボードを再起動することにより、ハードウェアでデザインを複数回実行できます。通常、AI エンジン インターフェイス スループット プロファイリングでは、実行時に 1 つのチャネル (すべての PLIO で同じ) をプロファイリングできます。複数のチャネルのプロファイリングには、複数の実行が必要になります。
Vitis IDE では、同じデザインの異なる実行に関する複数のレポートを統合できます。これにより、たとえば複数のインターフェイス チャネルのスループットを表示できます。vitis
-a
を実行してデザインの特定の実行の xrt.run_summary
が表示されているときに、次の図に示すように、メイン ツールバーおよびウィンドウ ツールバーの [+] ボタンをクリックしてほかの xrt.run_summary
レポートを開くことができます。
入力 PLIO チャネル 0 および 4 と出力 PLIO チャネル 0 のプロファイリング データを統合すると、Vitis IDE で次の表を表示できます。