実行モデル - 2020.2 Japanese

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

Document ID
UG1393
Release Date
2021-03-22
Version
2020.2 Japanese

Vitis コア開発キットでは、アプリケーション プログラムがホスト アプリケーションとハードウェア アクセラレーション カーネルに分割され、その間が通信チャネルで接続されます。ホスト プログラムは、C/C++ および OpenCL のような API 抽象化を使用して記述され、ホスト プロセッサ (x86 サーバー、エンベデッド プラットフォーム用の Arm プロセッサなど) で実行されますが、ハードウェア アクセラレーション カーネルはザイリンクス デバイス内で実行されます。

ホスト プログラムとハードウェア アクセラレータの間のトランザクションを処理するには、XRT で制御される API 呼び出しが使用されます。制御およびデータの転送を含むホストとカーネルの間の通信には、 PCIe® バスまたはエンベデッド プラットフォームの AXI バスを使用します。制御情報はハードウェアの特定のメモリ位置間で転送されますが、ホスト プログラムとカーネル間のデータ転送にはグローバル メモリが使用されます。グローバル メモリにはホスト プロセッサとハードウェア アクセラレータの両方からアクセスできますが、ホスト メモリにはホスト アプリケーションからしかアクセスできません。

たとえば、典型的なアプリケーションでは、まずホストがカーネルで実行されるデータをホスト メモリからグローバル メモリに転送します。その後カーネルがデータを処理し、結果をグローバル メモリに格納します。カーネルが処理を終了すると、ホストが結果をホスト メモリに戻します。ホストとグローバル メモリ間のデータ転送によりレイテンシが発生し、アクセラレーション全体に悪影響を及ぼすことがあります。実際のシステムでアクセラレーションを達成するには、ハードウェア アクセラレーション カーネルで達成される利点がこのデータ転送のレイテンシを上回る必要があります。

ターゲット プラットフォームには FPGA アクセラレーション カーネル、グローバル メモリ、およびメモリ転送用のダイレクト メモリ アクセス (DMA) が含まれます。カーネルには 1 つまたは複数のグローバル メモリ インターフェイスを含めることができ、プログラム可能です。Vitis コア開発キットの実行モデルは、次の段階に分割できます。

  1. ホスト プログラムが、Alveo データセンター アクセラレータ カード上の PCIe インターフェイスまたはエンベデッド プラットフォームの AXI バスを介して、カーネルで必要なデータをグローバル メモリに書き込みます。
  2. ホスト プログラムが、入力パラメーターを使用してカーネルを設定します。
  3. ホスト プログラムが FPGA のカーネル関数の実行をトリガーします。
  4. カーネルが、必要に応じてグローバル メモリからのデータを読み出しながら、計算を実行します。
  5. カーネルがグローバル メモリにデータを書き込み、ホストにタスクが終了したことを通知します。
  6. ホスト プログラムがグローバル メモリからホスト メモリにデータを読み出し、必要に応じて処理を続けます。

FPGA には、アクセラレータ上に複数のカーネル インスタンス (別のカーネル タイプまたは同じカーネルの複数のインスタンス) を含めることができます。ホスト プログラムとアクセラレータ内のカーネル間の通信は、XRT で管理されます。XRT アーキテクチャの資料は、https://xilinx.github.io/XRT/ を参照してください。