イベント トレースのビルド フロー - 2023.2 日本語

AI エンジン ツールおよびフロー ユーザー ガイド (UG1076)

Document ID
UG1076
Release Date
2023-12-04
Version
2023.2 日本語

イベント トレースのビルド フローは次のとおりです。

  1. --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 に収集します。
      • gmio は、AI エンジン NoC イベント パスウェイです。GMIO は、デフォルトのイベント トレース ポート設定です。
      • plio は、AI エンジンから PL へのイベント トレース パスウェイです。イベント データは PL に転送され、BRAM と URAM のリソースに格納されます。この PL リソースの追加により、ハードウェア デザイン側でタイミング エラーが発生する可能性があります。
      注記: コンパイラ オプション --graph-iterator-event を使用して、グラフの反復に基づいてイベント トレース データを遅らせる必要があります。イベント トレースの遅延の詳細は、XSDB フロー表 1、または XRT フロー表 1を参照してください。
  2. Vitis コンパイラを使用してデザインのコンパイルとリンクを実行します。

    AI エンジン グラフ アプリケーションをコンパイルした後、 『Vitis 統合ソフトウェア プラットフォーム資料: アプリケーション アクセラレーション開発』 (UG1393)システムのビルドと実行 で説明されているように、システムのその他のエレメントを構築する必要があります。AI エンジン コンパイラの libadf.a ファイルで --event-trace をイネーブルにすると、Vitis コンパイラで生成されるシステム ハードウェアに PS アプリケーション用のコンパイル済み ELF ファイル、AI エンジン プロセッサ用のコンパイル済み ELF ファイル、および PL 用の XCLBIN ファイルが含まれます。これらは、ハードウェア上でシステムを実行するのに必要な要素です。

  3. リンクしてデバイス バイナリを作成した後、 『Vitis 統合ソフトウェア プラットフォーム資料: アプリケーション アクセラレーション開発』 (UG1393)Versal デザインのパッケージで説明しているとおりに Vitis コンパイラ --package ステップを実行してデバイスの起動に必要な sd_card フォルダーとファイルを作成します。この手順では、システムの BOOT.BIN ファイルを作成するために必要なものをすべてパッケージ化します。デバイスのブート ファイルをパッケージ化する際には、--package.defer_aie_run も指定して AI エンジン アプリケーションに ELF ファイルをロードする必要がありますが、 『AI エンジン カーネルおよびグラフ プログラミング ガイド』 (UG1079)グラフの実行制御で説明されているように、graph.run で命令されるまで実行を開始しないようにします。

    aiecompiler --event-trace オプションに runtime 引数を使用すると、データを収集するようデザインをコンパイルできます。このオプションを使用すると、AI エンジン グラフをイベント トレース用に設定してコンパイルでき、ランタイムに収集するプロファイル データの種類 (functionsfunctions_partial_stallsfunctions_all_stalls) を指定できます。異なるタイプのデータを収集するためにデザインを再コンパイルする必要はありません。この機能を使用すると、グラフを再コンパイルしてデザインを再パッケージする必要性が低くなります。

    表 1. 定義済みイベント トレース レベルでサポートされるイベント
    イベント タイプ 定義済みイベント トレース レベル
    functions functions_partial_stalls functions_all_stalls
    関数呼び出し/戻り値 収集 収集 収集
    ストリーム ストール × 収集 収集
    カスケード ストール × 収集 収集
    ロック ストール × 収集 収集
    メモリ ストール × × 収集
    関数呼び出し/戻り値
    カーネル関数が呼び出されて値が返されたときに生成されるイベント。
    ストリーム ストール
    コアがストールしたときに生成されるエラー イベント。入力にデータがないか、コアからのストリーム出力にバック プレッシャーがあることが原因で発生します。
    カスケード ストール
    コアがストールしたときに生成されるエラー イベント。入力にデータがないか、またはコアからのストリーム出力にバック プレッシャーがあることが原因で発生します。
    ロック ストール
    ロックが既に取得されているためにコアがストールしたときに生成されるイベント。
    メモリ ストール
    コアがメモリ競合によりストールしたときに生成されるイベント。