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.port
や graph1.graph2.kernel.port
などの完全修飾パス名です。<type>
には、int8
、int16
、int32
、int64
、uint8
、uint16
、uint32
、uint64
、cint16
、cint32
、float
、cfloat
のいずれかを指定できます。配列のランタイム パラメーターをアップデートする場合、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.port
や graph1.graph2.kernel.port
などの完全修飾パス名です。<type>
には、int8
、int16
、int32
、int64
、uint8
、uint16
、uint32
、uint64
、cint16
、cint32
、float
、cfloat
のいずれかを指定できます。配列のランタイム パラメーターを読み出す場合、size
引数で読み出す配列内の要素数を指定します。