XO カーネルから VPP_ACC へのバッファー渡し - 2022.1 日本語

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

Document ID
UG1393
Release Date
2022-05-25
Version
2022.1 日本語

次の API を使用すると、VSC アクセラレータに xrt::bo を渡すことができます。

std::shared_ptr<...> vpp::sc::set_xrt_bo(xrt::device, xrt::bo, void* buf, int memBank);

この buf は、返された共有ポインターが参照を保持している限り、VSC アクセラレータの compute() 呼び出しで使用できます。

ヒント: このようなバッファーは、vpp_acc::alloc_buf によって取得されるバッファーとは異なり、デバイスとの間で自動的に同期されません。

次は、そのユース ケース例です。

xrt::memory_group memA = 0; 
auto Abo = xrt::bo(device, bytes, memA);
auto Abuf = Abo.map();
auto Aref = vpp::sc::set_xrt_bo(device, Abo, Abuf, memA);
auto Bbp = my_acc::create_bufpool(vpp::input);
my_cc::send_while([=]()->bool {
    auto Bbuf = my_acc::alloc_buf(Bbp, bytes);
    my_acc::compute(Abuf, Bbuf, ...);
    ...