AI エンジンのプログラムには、C++ 言語で記述されたデータフロー グラフの仕様が含まれ、ノードとエッジで構成されています。ノードは (カーネルと呼ばれる) 演算関数を表し、エッジはデータ接続を表します。AI エンジン グラフの仕様は、Vitis aiecompiler を使用してコンパイルされ、Vitis aisimulator でシミュレーションされます。
ザイリンクスでは、スカラー演算からベクター化された演算へとグラフを段階的に調整してテストすることを推奨します。これで、低レベルでの AI エンジン固有のコード化をしなくても、システムをセットアップできるようになります (ビルド スクリプト、機能の正当性など)。
グラフは、グラフ アプリケーション プログラミング インターフェイス (API) を使用し、グラフを駆動および管理するユーザーが作成したテストベンチを用いてテストされます。グラフに対するデータの入力/出力方法はいくつかあります。
- ランタイム パラメーター (RTP) は、PS アプリケーションと AI エンジン カーネル間の値のやり取りに使用されるプログラム可能なレジスタです。
- GMIO は、AI エンジンからグローバル メモリへの直接接続を水平 NoC 経由で提供します。
- PLIO は、AI エンジン カーネルと PL ブロック間の直接ストリーミング接続を提供します。
テストベンチは、基本的なファイル I/O 動作、あるいは Python、C/C++、または HDL で記述されるより強力なトラフィック ジェネレーターで構成され、AI エンジン グラフに対してデータを入出力します。
重要: 開発が先の段階に進むにつれてシステム パフォーマンスの改善は難しくなるため、この段階で性能テストの結果を観察し、パフォーマンス目標を満たすようにすることが重要です。ただし、aiesimulator による I/O トラフィックのシミュレーションはベスト ケースの動作条件を前提にしているため、こうした設計の早い段階で aiesimulator で性能を満たしても、最終的なシステム性能を示しているとはいえません。
AI エンジン グラフおよびカーネルの開発およびシミュレーション方法の詳細は、Versal ACAP デザイン プロセス資料: AI エンジン開発 を参照してください。