デバイス カーネルを継続的に使用する - 2020.1 Japanese

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

Document ID
UG1393
Release Date
2020-08-20
Version
2020.1 Japanese

カーネルはデバイス内に含まれるかもしれませんが、実行されるのはアプリケーションから要求があった場合のみです。最高のパフォーマンスを達成するには、カーネルを常にビジー状態にするアプリケーションを設計します。

これは概念的には、現在の要求が終了する前に次の要求を送信することで達成できます。この結果、次の図に示すように、実行がパイプライン処理されてオーバーラップするので、カーネルが最適に使用されるようになります。

図 1. アクセラレータのパイプライン処理

この例の場合、元のアプリケーションは func1、func2、func3 を繰り返し呼び出します。この 3 つの関数に対して、K1、K2、K3 というカーネルがそれぞれ作成されています。そのままのインプリメンテーションでは、これら 3 つのカーネルが元のソフトウェア アプリケーションと同様に順次的に実行されますが、各カーネルは 3 分の 1 の時間しかアクティブになりません。このような場合、カーネルにパイプライン処理された要求を送信できるようなソフトウェア アプリケーション構造にする方が効率的です。つまり、K2 が最初の K1 の出力を処理し始めるのと同時に、K1 が新しいデータ セットを処理し始めるようにします。この方法を使用すると、3 つのカーネルが最大の使用率で一定して実行されるようになります。

ソフトウェアのパイプライン処理の詳細は、Vitis アプリケーション アクセラレーション開発フロー チュートリアルを参照してください。