constraint<T> - 2023.2 日本語

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

Document ID
UG1603
Release Date
2023-12-07
Version
2023.2 日本語

このテンプレート クラスは、カーネル、接続、およびポートにスカラー データ制約を作成するために使用します。

スコープ

制約は、ユーザーのグラフ コンストラクター内に含める必要があります。

メンバー関数

constraint<T> operator=(T)

このオーバーロードされた等価演算子を使用すると、スカラー制約に値を割り当てることができます。

コンストラクター

デフォルト コンストラクターは使用されません。その代わりに、明確な目的を持つ次の特別なコンストラクターが使用されます。

constraint<std::string>& initialization_function(kernel&)

この制約は、各カーネルに特定の初期化関数を設定します。制約には、初期化関数の名前を示す文字列が必要です。1 つのコアに複数のカーネルがパックされている場合、そのコアにパックされている各初期化関数は 1 回だけ呼び出されます。コアにパックされたすべての初期化関数が完了するまで、カーネル関数は実行されません。

初期化関数は、値を返すことはできず、入力/出力引数を指定することはできません。つまり、関数プロトタイプは次のとおりです。

void init_function_name(void)
注記: 初期化関数は、graph::run API が 1 回目に呼び出されたときにのみ呼び出されます。

この関数は、グローバル変数を初期化し、丸めおよび飽和モードを設定/クリアするために使用できます。メモリまたはストリーム インターフェイスにアクセスするのにバッファーまたはストリーム API は使用できませんが、ストリーム組み込み関数 (get_ss() など) を使用できます。

constraint<float>& runtime<ratio>(kernel&)

この制約は、カーネルに特定のコア使用率を設定します。この値は、1 回のカーネル呼び出し (1 データ ブロックの処理) に必要なサイクル数のサイクル バジェットに対する比率です。アプリケーションのサイクル バジェットは、予測されるデータ スループットおよび処理されるブロック サイズによって、通常は固定されています。

constraint<std::string>& source(kernel&)

この制約は、各カーネル関数の定義を含むソース ファイルを指定します。ソース制約は、各カーネルに指定する必要があります。

constraint<int>& fifo_depth(connect&)=[<depth> | (depth)]

この制約は、実行でデッドロックが発生しないようにするため、ストリーミング接続に挿入するスラック値を指定します。

void single_buffer(port<T>&)

この制約は、バッファー ポートに 1 つのバッファー制約を指定します。デフォルトでは、バッファー ポートはダブル バッファリングされます。

 constraint<int> num_buffers(adf::shared_buffer_base& sb)

この制約を使用して、共有バッファーを構成するバッファーの数を指定できます。デフォルトでは、共有バッファーは単一のバッファーですが、バッファーの数を 2 に設定することで、ピンポン バッファーのインプリメンテーションが可能になります。書き込みレートと読み出しレートの大きな差を解消するために、より大きな数値を設定できます。

template <typename _XILINX_ADF_T=api_impl::variant>
    constraint<_XILINX_ADF_T> initial_value(adf::port<adf::input>& p);

この制約は、非同期 AI エンジン ML 入力ランタイム パラメーター ポートに初期値を設定します。これにより、デスティネーション カーネルは指定された初期値で非同期に開始できます。この制約を使用すると、スカラーと配列の両方のランタイム パラメーターを設定できます。

スカラーの例: initial_value(k.in[1])=6;

配列の例: initial_value(k.in[2])={1,2,3};

constraint<int> stack_size(adf::kernel& k);

この制約は、個別のカーネルのスタック サイズを設定します。

constraint<int> heap_size(adf::kernel& k);

この制約は、個別のカーネルのヒープ サイズを設定します。