イベント トレースのビルド フローは次のとおりです。
-
--event-trace
とその他の適切なフラグを指定してグラフをコンパイルします。次に、イベント トレースの AI エンジン コンパイラ コマンドの例を示します。
aiecompiler --verbose --pl-freq=100 --workdir=./myWork \ --event-trace-port=gmio --event-trace=runtime \ --num-trace-streams=8 --xlopt=0 --include="./" \ --include="./src" --include="./src/kernels" --include="./data" \ ./src/graph.cpp
たとえば、統合コマンド ライン インターフェイスの使用については、 『Vitis 統合ソフトウェア プラットフォーム資料: アプリケーション アクセラレーション開発』 (UG1393) を参照してください。
注記:- この例は、
--event-trace=runtime
コンフィギュレーションを含むデザインをコンパイルする方法を示しています。このオプションを使用すると、AI エンジンが収集するイベントのタイプを実行中に設定できます。 -
--event-trace-port=gmio
オプションは、イベント トレース データの収集に GMIO を使用します。このオプションは、AI エンジンから NOC へのイベント トレース パスウェイを使用します。別の方法として、AI エンジン-PL パスウェイを使用する PLIO を使用してイベント トレース データを収集できます。この場合、プログラミング ロジック リソースを使用して、AI エンジンからのデータを DDR に収集します。推奨: AMD では、イベント トレース ポート設定として GMIO を使用することをお勧めします。これにより、プログラミング ロジック リソースが使用されなくなり、PL リソースの使用によるタイミング エラーを回避できます。-
gmio
は、AI エンジン NoC イベント パスウェイです。GMIO は、デフォルトのイベント トレース ポート設定です。 -
plio
は、AI エンジンから PL へのイベント トレース パスウェイです。イベント データは PL に転送され、BRAM と URAM のリソースに格納されます。この PL リソースの追加により、ハードウェア デザイン側でタイミング エラーが発生する可能性があります。
-
- この例は、
-
Vitis コンパイラを使用してデザインのコンパイルとリンクを実行します。
AI エンジン グラフ アプリケーションをコンパイルした後、 『Vitis 統合ソフトウェア プラットフォーム資料: アプリケーション アクセラレーション開発』 (UG1393) のシステムのビルドと実行 で説明されているように、システムのその他のエレメントを構築する必要があります。AI エンジン コンパイラの libadf.a ファイルで
--event-trace
をイネーブルにすると、Vitis コンパイラで生成されるシステム ハードウェアに PS アプリケーション用のコンパイル済み ELF ファイル、AI エンジン プロセッサ用のコンパイル済み ELF ファイル、および PL 用の XCLBIN ファイルが含まれます。これらは、ハードウェア上でシステムを実行するのに必要な要素です。 - リンクしてデバイス バイナリを作成した後、
『Vitis 統合ソフトウェア プラットフォーム資料: アプリケーション アクセラレーション開発』 (UG1393) の Versal デザインのパッケージで説明しているとおりに Vitis コンパイラ
--package
ステップを実行してデバイスの起動に必要な sd_card フォルダーとファイルを作成します。この手順では、システムのBOOT.BIN
ファイルを作成するために必要なものをすべてパッケージ化します。デバイスのブート ファイルをパッケージ化する際には、--package.defer_aie_run
も指定して AI エンジン アプリケーションに ELF ファイルをロードする必要がありますが、 『AI エンジン カーネルおよびグラフ プログラミング ガイド』 (UG1079) のグラフの実行制御で説明されているように、graph.run
で命令されるまで実行を開始しないようにします。aiecompiler --event-trace
オプションにruntime
引数を使用すると、データを収集するようデザインをコンパイルできます。このオプションを使用すると、AI エンジン グラフをイベント トレース用に設定してコンパイルでき、ランタイムに収集するプロファイル データの種類 (functions
、functions_partial_stalls
、functions_all_stalls
) を指定できます。異なるタイプのデータを収集するためにデザインを再コンパイルする必要はありません。この機能を使用すると、グラフを再コンパイルしてデザインを再パッケージする必要性が低くなります。表 1. 定義済みイベント トレース レベルでサポートされるイベント イベント タイプ 定義済みイベント トレース レベル functions
functions_partial_stalls
functions_all_stalls
関数呼び出し/戻り値 収集 収集 収集 ストリーム ストール × 収集 収集 カスケード ストール × 収集 収集 ロック ストール × 収集 収集 メモリ ストール × × 収集 - 関数呼び出し/戻り値
- カーネル関数が呼び出されて値が返されたときに生成されるイベント。
- ストリーム ストール
- コアがストールしたときに生成されるエラー イベント。入力にデータがないか、コアからのストリーム出力にバック プレッシャーがあることが原因で発生します。
- カスケード ストール
- コアがストールしたときに生成されるエラー イベント。入力にデータがないか、またはコアからのストリーム出力にバック プレッシャーがあることが原因で発生します。
- ロック ストール
- ロックが既に取得されているためにコアがストールしたときに生成されるイベント。
- メモリ ストール
- コアがメモリ競合によりストールしたときに生成されるイベント。