与 XO 和 RTL 内核的互操作性 - 2022.1 简体中文

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

Document ID
UG1393
Release Date
2022-05-25
Version
2022.1 简体中文
重要: 对于此处所述 XO 设计流程,不提供软件仿真支持。

Vitis System Compilation(Vitis 系统编译)模式也可搭配标准 Vitis 内核 (.xo) 和应用加速设计流程一起使用。因此,您可将 VSC 与 Vitis HLS C++ 内核搭配使用(如 Vitis 高层次综合用户指南(UG1399) 中所述),也可将其与 RTL 内核搭配使用(如 Vitis 统一软件平台文档:应用加速开发(UG1393) 中所述)。

图 1. XO 流程

给定 VSC 加速器代码 sc_acc.cppVitis 内核 kernel.xo 的情况下,需通过下列命令行来构建工程:

v++ -c sc_acc.cpp -o sc_acc.o
v++ -l sc_acc.o kernel.xo -o hw.xclbin # also produces hw.o
 
g++ -c host.cpp -o host.o
g++ -l -o host.exe host.o sc_acc.o hw.o -lvpp_acc -lxrt_hw -lpthread

在前述场景中,kernel.xo 已编译完成。因此,VSC 加速器代码 (sc_acc.cpp) 需按以上第一条 v++ 命令中所示进行编译。输出即为对象文件 sc_acc.ov++ 命令会识别 VSC 加速器代码,并将其正确编译到对象文件内。

随后,运行 v++ --link 命令以将 .xo 文件和 .o 文件链接到 .xclbin 中。请注意,这样不仅会生成 hw.xclbin 文件,还会生成 hw.o 文件。hw.o 文件是主机应用编译中 g++ 命令所必需的,如后续步骤中所示。

g++ 命令会对主机代码进行编译,然后将各对象文件(host.osc_acc.ohw.o)链接在一起以生成 host.exe 可执行文件。请注意,在 g++ 命令行中添加了 vpp_acc 库和 xrt_hw 库,因为这些是链接进程所必需的库。

在标准 Vitis 流程中,用户主机代码必须使用本机 XRT 或 OpenCL 代码显式加载 .xclbin。在混合型 VSC-XO 流程中,用户主机代码仍可显式加载 .xclbin,但这并非必要操作。可改为通过调用 API vpp::sc::get_xrt_device() 来获取器件 ID (device-ID)。

在本机 XRT 与 VSC API 之间,可轻松传递缓冲器对象。在以下章节中描述了两种可能的缓冲器传输场景。