将缓冲器从 XO 内核传递到 VPP_ACC - 2022.1 简体中文

Vitis 统一软件平台文档 应用加速开发 (UG1393)

Document ID
UG1393
Release Date
2022-05-25
Version
2022.1 简体中文

以下 API 可用于将 xrt::bo 传递到 VSC 加速器:

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, ...);
    ...