前のセクションでは、VSC により統合 C++ モデルからコンパイルされた構成、ソフトウェア インターフェイス、およびハードウェアについて説明しました。次に、特定の設計意図を簡単に取り込むために使用できる、ソース C++ モデルの主な機能の概要を示します。
- 各アクセラレータとその CU グループとの間でデータを送受信できるように、2 つの C スレッドを使用したホストからデバイスへのデータ転送を明示的にモデリング
- 複数のメモリ バンクの使用、CU の変更、ホストとデバイス間の同時 (ピンポン形式) データ転送などのガイダンス パラメーターを使用して、ホスト コードやカーネル コードの変更を最小限に抑えながら、パフォーマンスを調査
- 単一の数値ガイダンス パラメーターのみを使用して粗粒度の並列処理を調査できるように、並列で実行される CU を複製
- ラウンドロビンまたはフリーポーリングを使用して、計算クラスター (複数の CU) でジョブを自動スケジューリング
- アクセラレータ内で複製された CU での自動データ転送およびアクセラレータ ジョブのスケジューリング
- 次を実行するための、
PCIe®
を介した各アクセラレータ ジョブおよびその他の最適化の自動パイプライン
- ホスト側の複数のバッファー オブジェクトを使用してデータを送受信
- データ移動パターンのガイダンスに基づいて、CU ごとにデータ ムーバーがプラグイン
- グローバル (DDR/HBM) メモリ リソースとオンチップ (RAM) メモリ リソース間でデータをコピー
- 現在のトランザクションが CU で終了する前に、グローバル メモリから次のトランザクションをプリフェッチ
- PCIe レイテンシを償却するため、トランザクション (1 つのデータ ブロックとして転送される n 個のデータセットのシーケンス) をクラスター化
- CU ごとに複数のホストおよびデバイス メモリ バッファーを使用した自動同時 (ピンポン形式) データ転送によりスループットを向上
- ピーク メモリ割り当て (最大データ サイズに割り当て) を使用して、可変ペイロード サイズを許容。
- 次の場合、ダイナミック出力バッファー サイズ (実行時に割り当て) をサポート
- 最大バッファー サイズは、コンパイル時に認識
- ダイナミック サイズは、アプリケーション コードにより決定
- ソフトウェア (ホスト側) とハードウェア (演算ユニット) を組み合わせたシステム レベルの構成
- 直接接続 (AXI4-Stream) インターフェイスを使用したハードウェアのみの構成。各 CU 内に PE パイプラインまたはネットワークを作成し、そのようなユニットを簡単に複製できます。
- CU の同期パイプライン内でストリーミング インターフェイスを備えた、フリーランニング PE を許容
- データ処理パイプラインを作成するためにハードウェアとソフトウェアを混在。ソフトウェア タスクでは、同じ xclbin にコンパイルされた異なるアクセラレータを使用して、ハードウェア タスク間でデータを処理できます。
- システム デザイン全体が C++ で取り込まれ、それを C++ ソースのソフトウェア コンパイルおよび実行で検証可能