デバイスでのバッファーの割り当て - 2020.2 Japanese

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

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

デフォルトでは、カーネルがプラットフォームにリンクされる際に、すべてのカーネルからのメモリ インターフェイスが 1 つのデフォルトのグローバル メモリ バンクに接続されます。そのため、グローバル メモリ バンクとデータを転送できるのは一度に 1 つの計算ユニット (CU) のみになり、アプリケーションの全体的なパフォーマンスが制限されます。

デバイスにグローバル メモリ バンクが 1 つしか含まれていない場合は、これしかオプションがありません。ただし、デバイスに複数のグローバル メモリ バンクが含まれる場合は、リンク中にカーネルのメモリ インターフェイス接続を変更して、グローバル メモリ バンクの接続をカスタマイズできます。これを実行する方法は、カーネル ポートのメモリへのマップ を参照してください。全体的なパフォーマンスは、異なるカーネルまたは計算ユニットに対して別のメモリ バンクを使用して、複数のカーネル メモリ インターフェイスが同時にデータを読み出しおよび書き込みできるようにすると改善します。

重要: XRT はカーネルのメモリ接続を検出して、データをホスト プログラムからカーネルの正しいメモリ位置に送信する必要があります。XRT では、clSetKernelArgs がバッファーのエンキュー操作 (たとえば clEnqueueMigrateMemObject) よりも前に使用されると、自動的にカーネル バイナリ ファイルからバッファー位置を検出するようになっています。