シミュレーション、ハードウェア エミュレーション、またはハードウェアでシステムを実行後、アプリケーションが正しくコンフィギュレーションされると run_summary レポートが生成されます。
AI エンジン グラフのシミュレーション中、AI エンジン シミュレータまたはハードウェア エミュレーションでパフォーマンスおよびアクティビティ メトリクスが収集され、出力ディレクトリ ./aiesimulator_output および ./sim/behav_waveform/xsim
にレポートが生成されます。生成されたサマリは、default.aierun_summary と呼ばれます。
run_summary は、Vitis IDE で表示できます。このサマリには、複数のレポートが含まれ、AI エンジン アプリケーションの実行中に収集されたパフォーマンス プロファイルが示されます。たとえば、AI エンジン シミュレータの実行サマリを開くには、次のコマンドを使用します。
vitis -a ./aiesimulator_output/default.aierun_summary
Vitis IDE が開いて、レポートの Summary ページが表示されます。ツールには、サマリに表示できるさまざまなレポートが一覧表示されます。Analysis view の詳細は、 『Vitis 統合ソフトウェア プラットフォーム資料: アプリケーション アクセラレーション開発』 (UG1393) の [Analysis] ビュー (Vitis アナライザー) の使用 を参照してください。
default.aierun_summary
には、<GRAPH_TB_FILE_NAME>.aiecompile_summary
と同じレポートの一部が含まれます。それは、Graph および Array レポートです。これらのレポートを表示するには、Vitis 統合 IDE の [Analysis] ビューでのコンパイル結果の表示 を参照してください。レポート サマリ
最上位のレポートで、日付、ツール バージョン、シミュレータの起動に使用されたコマンド ラインなどの実行の詳細をレポートします。
プロファイル サマリ
aiesimulator --profile
オプションを指定すると、シミュレータで AI エンジン グラフおよびカーネルのプロファイリング データが収集され、AI エンジン グラフの全体的な表示とプロセッサにマップされたカーネルが、メトリクス データを示す表および図と共に表示されます。
Profile Summary には、全体的なアプリケーション パフォーマンスに関する注釈付きの詳細が表示されます。アプリケーションの実行中に生成されたすべてのデータが複数のカテゴリに分類されます。Profile Summary では、プロセッサ/DMA メモリのストール、デッドロック、干渉、クリティカル パス、および最大競合を調べることができます。これは、システム レベルのパフォーマンスの調整およびデバッグに便利です。システム パフォーマンスは、レイテンシ (システムの実行にかかるサイクル数) とスループット (データ/所要時間) で示されます。システム パフォーマンスが最適でない場合、制約を使用して、マップおよびバッファーのパック、ストリームおよびパケット スイッチの割り当て、隣接するプロセッサとの通信、および外部インターフェイスを制御できます。次に、Profile Summary レポートの例を示します。
特定の表を使用して、カーネル特定のプロファイル情報を表示できます。これは、タイルで実行されているものを示すチャートと表で示されます。次に、チャートの例を示します。
このビューには、グラフの実行に関数で使用された総サイクル数 Total Function Time を示すチャートが表示されます。Y 軸は、下の図の表の ID 列で参照される関数の id を示します。この情報は、関数のどこで時間が費やされているかを調べるのに便利で、最適化またはデバッグに役立つ可能性があります。表には、次の項目が示されています。
- プロファイルされた関数の ID
- 関数の名前
- 関数が実行された回数
- 関数の実行にかかった合計時間 (サイクル単位)
- グラフの合計実行時間に占める関数の合計実行時間 (%)
- 関数およびその関数から呼び出された関数 (子孫) の実行にかかった合計時間 (サイクル単位)
- 関数およびその関数から呼び出された関数 (子孫) の実行にかかった合計時間 (%)
トレース レポート
欠落または不一致ロック、バッファー オーバーラン、DMA バッファーの間違ったプログラムなどの問題は、従来の対話的デバッグ手法ではデバッグが困難です。イベント トレースは、プログラム イベントのシステム レベルのトレースを収集する体系的な方法で、ハードウェア イベントのトレースとしての生成、収集、およびストリーミングを直接サポートします。次の図に、Vitis IDE で開いた Trace レポートを示します。
-
_main
- コアの
main
モジュール。これは、最上位ファイルで使用される関数とは異なります。
-
_main_init
- グラフの実行ごとに 1 回実行されるカーネル
init
関数。
-
_cxa_finalize
- グローバル C++ オブジェクトのデストラクターを呼び出します。
-
_fini
- このセクションには、プロセスを終了する実行命令が含まれます。プログラムが正常に終了すると、このセクションのコードが実行されます。
aiesimulator --pkg-dir=./Work --online -wdb -text
トレース レポートの機能は、次のとおりです。
- 各タイルがレポートされます。グラフに PL ブロックがある場合は、各タイルにコア、DMA、ロック、および I/O がレポートされます。
- コアにマップされている各カーネルに個別のタイムラインがあります。カーネルが実行されている期間は青で示され、メモリ競合やストリーム データを待機しているために停止している期間は赤で示されます。
- これらのセクション (コア、DMA、およびロック) でロック ID を使用して、ロックを取得/解放することで、コアと DMA が互いにどのように作用し合うかを確認できます。
- ロック セクションは、タイル内でのロックのアクティビティ (読み出しおよび書き込みロック要求の割り当てと解放) を示します。特定のロックは、近くのタイルにより割り当てられます。そのため、このセクションは図の左ペインに示されているコアのロック要求と一致するとは限りません。
- ロックが解放されない場合、赤のバーがシミュレーション時間の最後まで伸びます。
- 左方向矢印をクリックするとステートの開始、右方向矢印をクリックするとステートの終了に移動します。
- [Data View] には、ストリーム スイッチ ネットワークを通過するデータが、各ホップのスレーブ入力ポイントおよびマスター出力ポイントと共に表示されます。これは、配線遅延、パケット スイッチングを使用する場合のネットワーク密集の影響 (同じストリーム チャネルを共有する場合にパケットが遅れて別のパケットの後になる) を特定するのに有益です。