このテンプレート クラスは、カーネル、接続、およびポートにスカラー データ制約を作成するために使用します。
スコープ
制約は、ユーザーのグラフ コンストラクター内に含める必要があります。
メンバー関数
constraint<T> operator=(T)
このオーバーロードされた等価演算子を使用すると、スカラー制約に値を割り当てることができます。
コンストラクター
デフォルト コンストラクターは使用されません。その代わりに、明確な目的を持つ次の特別なコンストラクターが使用されます。
void fabric<aiengine>(kernel&)
この制約は、カーネルを AI エンジン (デフォルト) にインプリメントするよう指定します。
constraint<std::string>& initialization_function(kernel&)
この制約は、各カーネルに特定の初期化関数を設定します。制約には、初期化関数の名前を示す文字列が必要です。1 つのコアに複数のカーネルがパックされている場合、そのコアにパックされている各初期化関数は 1 回だけ呼び出されます。コアにパックされたすべての初期化関数が完了するまで、カーネル関数は実行されません。
初期化関数は、値を返すことはできず、入力/出力引数を指定することはできません。つまり、関数プロトタイプは次のとおりです。
void init_function_name(void)
graph::run
API が 1 回目に呼び出されたときにのみ呼び出されます。この関数は、グローバル変数を初期化し、丸めおよび飽和モードを設定/クリアするために使用できます。メモリまたはストリーム インターフェイスにアクセスするのにウィンドウまたはストリーム API は使用できませんが、ストリーム組み込み関数 (get_ss()
など) を使用できます。
『AI エンジン カーネル コーディング ベスト プラクティス ガイド』
(UG1079) の例を参照してください。
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 つのバッファー制約を指定します。デフォルトでは、ウィンドウ ポートはダブル バッファリングされます。
void initial_value(async_AIE_RTP_port)
この制約は、非同期 AI エンジン入力ランタイム パラメーター ポートに初期値を設定します。これにより、デスティネーション カーネルは指定された初期値で非同期に開始できます。この制約を使用すると、スカラーと配列の両方のランタイム パラメーターを設定できます。
スカラーの例: initial_value(6)
配列の例: initial_value({1,2,3})
constraint<int> stack_size(adf::kernel& k);
この制約は、個別のカーネルのスタック サイズを設定します。
constraint<int> heap_size(adf::kernel& k);
この制約は、個別のカーネルのヒープ サイズを設定します。