SDAccel のプログラム
ザイリンクス FPGA で実行するカーネル用に SDAccel™ で生成されるカスタム プロセッシング アーキテクチャでは、パフォーマンスを大幅に向上できる可能性があります。この可能性を最大限に活用するため、ホストおよびカーネル コードを FPGA でアクセラレーションするのに適したものにする必要があります。
ホスト アプリケーションはホスト x86 サーバーで実行され、SDAccel ランタイムを使用して FPGA カーネルとの通信を制御します。ホスト アプリケーションは、OpenCL API を使用して C/C++ で記述されます。カスタム カーネルは、SDAccel プラットフォーム上のザイリンクス FPGA 内で実行されます。
SDAccel ハードウェア プラットフォームには、グローバル メモリ バンクが含まれます。ホスト マシンとカーネルの間のデータ転送は、これらのグローバル メモリ バンクを介して実行されます。ホスト x86 マシンと SDAccel アクセラレータ間の通信には PCIe® バスが使用されます。
このセクションでは、SDAccel OpenCL ランタイムをセットアップするためのホスト アプリケーション コードの記述方法、カーネル バイナリを SDAccel プラットフォームに読み込む方法、ホスト アプリケーションとカーネルの間でのデータの転送方法、FPGA 上のカーネルをホスト アプリケーションで適切なときにトリガーする方法を説明します。
FPGA ファブリックでは、複数のカーネルを同時に実行することも可能です。そのため、1 つのカーネルの複数のインスタンスを作成したり、1 つのデバイス上に複数のカーネルをコンフィギュレーションしたりして、ホスト アプリケーションのパフォーマンスを向上できます。FPGA 上で実行されるカーネルには、プラットフォームのグローバル メモリに接続するため、1 つまたは複数のメモリ インターフェイスを含めることができます。FPGA で実行するカーネルの数、およびカーネルがアクセスする特定のメモリ バンクは、ビルド プロセス時に XOCC のリンク オプションで指定できます。
ここで説明する内容は、『SDAccel 環境プログラマ ガイド』 により詳細に説明されています。ホストアプリケーション、カーネル コード、およびそれらの間のデータ転送に関する詳細は、このガイドを参照してください。