graph - 2023.2 日本語

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

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

ADF ツールでエクスポートされたメイン グラフの抽象化です。すべてのユーザー定義グラフは、class graph を継承する必要があります。

スコープ

ユーザー デザインの一部を形成するユーザー定義グラフ タイプのインスタンスはすべて、グローバル スコープで宣言する必要がありますが、任意の名前空間で宣言できます。

メンバー関数

virtual return_code init() ;

このメソッドは、定義済みのプロセッサ タイル セットを使用して、コンパイル済みのグラフ オブジェクトを AI エンジン アレイに読み込んで初期化します。現在のところ、再配置はサポートされていません。読み込まれているタイルのプログラム メモリ、データ メモリ、およびストリーム スイッチにある既存の情報はすべて、置き換えられます。読み込まれたプロセッサは、ディスエーブル ステートに保持されます。

virtual return_code run();
virtual return_code run(unsigned int num_iterations);

このメソッドは、グラフに関連付けられているプロセッサを、対応する main プログラムの最初から実行します。引数を指定しない場合は、グラフは無限に実行されます。引数を使用して、各実行の反復回数を個別に設定できます。これは、PS アプリケーションに対するノンブロッキング操作です。

virtual return_code end();
virtual return_code end(unsigned int cycle_timeout);

end メソッドは、グラフの終了を待機します。グラフは、そのアクティブ プロセッサが main スレッドを終了し、プロセッサがディスエーブルになると、終了したと見なされます。これは、PS アプリケーションに対するブロッキング操作です。このメソッドでは、すべてのロックを強制的に解除したり、グラフで使用されているストリーム スイッチ コンフィギュレーションをクリーンアップするなど、グラフのステートもクリーンアップします。end メソッドにサイクル タイムアウトを設定すると、グラフ関連のイベントを待機するのではなく、タイムアウト時間が経過したときにグラフが終了してクリーンアップされます。end 後に再初期化せずに run を使用してグラフを実行しようとすると、予期しない結果となることがあります。

virtual return_code wait();
virtual return_code wait(unsigned int cycle_timeout);

virtual return_code resume();

wait メソッドは、グラフのステートをクリーンアップせずにグラフの実行を一時的に停止します。一時停止したグラフの実行は、run または resume メソッドで再開できます。wait メソッドを引数を指定せずに使用すると、反復回数が設定された前の run が終了するまで待機できます。この後、別の run を反復回数を設定して開始できます。wait メソッドにサイクル タイムアウトを使用すると、前の run または resume 呼び出しからカウントされたタイムアウト時間が経過したときにグラフの実行が一時停止します。グラフの実行を継続するには、resume を使用する必要があります。wait をサイクル タイムアウトを設定して呼び出した後に run を実行しようとすると、グラフが予測不可能なステートで一時停止し、run によってプロセッサが main プログラムの最初から再開することがあるので、予期しない結果になる可能性があります。

virtual return_code update(input_port& pName, <type> value);

virtual return_code update(input_port& pName, const <type>* value, size_t size);

これらのメソッドは、さまざまな形式のランタイム パラメーター アップデート API で、スカラーまたは配列のランタイム パラメーター ポートをアップデートするために使用できます。ポート名は、graph1.graph2.portgraph1.graph2.kernel.port などの完全修飾パス名です。<type> には、int8int16int32int64uint8uint16uint32uint64cint16cint32floatcfloat のいずれかを指定できます。配列のランタイム パラメーターをアップデートする場合、size 引数でアップデートする配列内の要素数を指定します。この size は、グラフで定義されている RTP の配列サイズと同じにする必要があります。つまり、RTP の配列全体を一度にアップデートする必要があります。

virtual return_code read(input_port& pName, <type>& value);

virtual return_code read(input_port& pName, <type>* value, size_t size);

これらのメソッドは、さまざまな形式のランタイム パラメーター読み出し API で、スカラーまたは配列のランタイム パラメーター ポートを読み出すために使用できます。ポート名は、graph1.graph2.portgraph1.graph2.kernel.port などの完全修飾パス名です。<type> には、int8int16int32int64uint8uint16uint32uint64cint16cint32floatcfloat のいずれかを指定できます。配列のランタイム パラメーターを読み出す場合、size 引数で読み出す配列内の要素数を指定します。