パイプラインの実行 - 2021.2 Japanese

Vitis 統合ソフトウェア プラットフォームの資料: アプリケーション アクセラレーション開発 (UG1393)

Document ID
UG1393
Release Date
2022-03-29
Version
2021.2 Japanese

時間的なデータ並列処理: ホストからカーネルへのデータフロー で説明したように、カーネルが前のトランザクションからのデータを処理中にさらにデータを受信できる場合、XRT は次のデータ バッチを送信できます。パイプライン モードでは、複数のカーネル実行を重複させることができるので、全体的なスループットが向上します。

パイプライン モードをサポートするには、カーネルで ap_ctrl_chain プロトコル (Vitis HLS で使用されるデフォルト プロトコル) を使用する必要があります。このプロトコルは、次の例に示すように、関数の戻り値に #pragma HLS INTERFACE を指定することによりイネーブルにすることもできます。

void kernel_name( int *inputs,
                  ...         )// Other input or Output ports
{
#pragma HLS INTERFACE ap_ctrl_chain port=return bundle=control

パイプライン実行が正しく動作するようにするには、カーネルのキューのレイテンシを長くする必要があります。そうでないと、カーネルで各データ バッチを処理するのに十分な時間がなく、パイプラインの利点を活かすことができないことがあります。パイプラインに設定されたカーネルでデータをパイプライン方式で処理できない場合は、シーケンシャル実行に戻ります。

重要: ホストからカーネルへのデータフローの利点を活かすには、ループのパイプライン処理 で説明するようにループ レベルでパイプライン処理、または データフロー最適化 で説明するようにタスク レベルでパイプライン処理するなどして、データが段階的に処理されるようカーネルを記述する必要もあります。

以前の技術との互換性のため、XRT 管理のカーネルでは純粋なシーケンシャル モードもサポートされています。これは、#pragma HLS INTERFACE で関数の戻り値に ap_ctrl_hs ブロック プロトコルを使用すると設定できます。