AI エンジン のリセットと再読み込みフローにより、ボードと Linux OS を再起動することなく、ハードウェア上でアプリケーションを複数回実行できます。このフローでは、RST_PL RESET0 レジスタを制御することで、AI エンジン アレイおよびプラットフォームのダイナミック領域ブロック デザイン内のすべての PL ロジックがリセットおよび再読み込みされます。RST_PL レジスタについては、 『Versal アダプティブ SoC レジスタ リファレンス』 (AM012) を参照してください。このリセットおよび再読み込みフローでは、次が実行されます。
- 特定のタイルにプログラムされたカーネル、DMA、タイルとメモリ間の FIFO など、AI エンジン グラフ アプリケーションでコンフィギュレーションされた AI エンジン アレイをリセットします。
- DFX を使用しないプラットフォームの AI エンジン アレイをリセットします。
- ボードを再起動することなく AI エンジン アレイをリセットします。
- ボードを再起動することなく、同じグラフまたは異なるグラフで AI エンジン アレイを再読み込みします。
フローは、Linux XRT でサポートされています。
アプリケーションを連続してリセットおよび再読み込みする場合は、同じ AI エンジン-PL インターフェイスを使用する必要があります。同じグラフまたは異なるグラフを使用して AI エンジン アレイを再読み込みできます。
このフローは、次のことを目的として使用します。
- AI エンジン アプリケーションを複数回実行するため、システムのリセットおよびボードの再起動を回避する。
- ボードで実行していてシステムが異常状態となり、アプリケーションの再実行が必要になった場合、長時間の再起動を回避する。
- 変更された AI エンジン カーネルを実行する場合、システムのリセットおよびボードの再起動を回避する。
リセットおよび読み込みフローでは、AI エンジン グラフと PL カーネルを別々の XCLBIN ファイルにコンパイルする必要があります。ホスト アプリケーションは、これらの XCLBIN ファイルを使用する必要があります。続いて、xbutil ユーティリティを使用して、連続するアプリケーション実行間で PL および AI エンジン カーネルをリセットします。
ハードウェアで AI エンジン デザインをリセットして再読み込みする場合、イベント トレースとこのデザインのプロファイルはサポートされません。
リセットおよび再読み込みフローの前提条件
次の手順を実行し、アプリケーションでリセットおよび再読み込みフローがサポートされるようにします。
- AI エンジン グラフをコンパイルします。
- PL カーネルをコンパイルします。
- v++ リンカーを使用して HW フローをターゲットにして XSA ファイルを生成します。
- v++ パッケージャーを使用して PL 専用 XCLBIN を生成します。AI エンジン専用および PL 専用 XCLBIN の生成 を参照してください。
- v++ パッケージャーを使用して、AI エンジン専用 XCLBIN を生成します。AI エンジン専用および PL 専用 XCLBIN の生成 を参照してください。
- v++ パッケージャーを使用して、上記で生成した AI エンジン専用 XCLBIN と PL 専用 XCLBIN を
--package.sd_file <>
オプションを使用してsd_card
イメージに含めます。 - ホスト コードにより AI エンジン専用 XCLBIN と、前の手順で生成された PL 専用の XCLBIN が読み込まれることを確認します。リセットおよび再読み込みフローのホスト アプリケーション を参照してください。
リセットおよび再読み込みフローの手順
- ボード上でアプリケーションを実行します。ハードウェアでの AI エンジン グラフ アプリケーションのパフォーマンス解析 を参照してください。
-
xbutil reset
コマンドを使用してアプリケーションをリセットします。連続するアプリケーション実行前のリセット を参照してください。 - ボード上でアプリケーションを再実行します。
図 1. AI エンジンのリセットおよび再読み込みフロー
連続する実行で異なるカーネルが AI エンジン アレイで使用される場合、AI エンジン コンパイラのインクリメンタル フローを使用して、同じ AI エンジン-PL インターフェイスが使用されるようにすることができます。次を実行する必要があります。
-
aiecompiler
と、上記の前提条件のセクションの手順 3 で生成したプラットフォーム XSA を使用して、新しいカーネルを再コンパイルします。 - v++ パッケージャーを使用して、新しい AI エンジン専用 XCLBIN を生成します。
- v++ パッケージャーを使用して、新しい AI エンジン専用 XCLBIN を
--package.sd_file <>
オプションを使用してsd_card
イメージに含めます。