グラフの基本的な反復実行 - 2023.2 日本語

AI エンジン カーネルおよびグラフ プログラミング ガイド (UG1079)

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

次のグラフ制御 API は、グラフ API を使用して、グラフの初期化、実行、待機、および終了を特定の回数だけ反復実行する方法の例を示しています。グラフ オブジェクト mygraph は、simpleGraph という定義済みのグラフ クラスを使用して宣言されます。その後、main アプリケーションでこのグラフ オブジェクトが初期化および実行されます。init() メソッドは、事前に指定された AI エンジン タイルの AI エンジン アレイにグラフを読み込みます。これには、各 AI エンジンの ELF バイナリの読み込み、配線用のストリーム スイッチの設定、I/O の DMA の設定が含まれます。プロセッサはディスエーブル ステートに保持されます。run() メソッドは、プロセッサをイネーブルにしてグラフの実行を開始します。run API の実行時に正の整数引数を指定すると、グラフを指定の回数だけ反復実行できます。これは、グラフ実行のデバッグに便利です。

#include "project.h" 
simpleGraph mygraph; 

int main(void) { 
  mygraph.init(); 
  mygraph.run(3); // run 3 iterations 
  mygraph.wait(); // wait for 3 iterations to finish 
  mygraph.run(10); // run 10 iterations 
  mygraph.end(); // wait for 10 iterations to finish 
  return 0; 
}

wait() API は、1 回目の実行の終了を待ってから 2 回目の実行を開始するために使用します。wait には end と同じブロッキング効果がありますが、グラフを再初期化せずに再実行できる点が異なります。run API はグラフのアクティブ プロセッサのループ境界を変更するため、wait を挿入せずに run を連続実行すると、予期されない影響が見られることがあります。

グラフ反復

グラフは、複数のカーネル、入力、出力ポートを持つことができます。グラフの接続は、データフロー グラフ内のネットと同じで、カーネル間、カーネルと入力ポート間、またはカーネルと出力ポート間のいずれかであり、接続として設定できます。グラフは、グラフ内のカーネルが想定するデータのバッファーまたはストリームに相当するデータ サンプルを消費し、グラフ内のすべてのカーネルの出力で想定されるデータのバッファーまたはストリームに相当するデータ サンプルを生成するときに、1 回の反復を実行します。