在 AMD Vitis™ 环境中,可使用 Xilinx Runtime (XRT) 本机 API 以本机 C++ 语言来编写软件应用组件。此处对 XRT 本机 API 进行了简要描述,在 XRT 文档网站上的 XRT 本机 API 下提供了更多详细信息。对于数据中心加速,通常将应用组件称为主机应用,因为它在 x86 服务器上运行,而对于基于嵌入式处理器的系统,通常直接将其称为应用,此类系统与 PL 内核和 AI 引擎计算图位于相同器件内。
总之,主机应用的结构可分为以下步骤:
- 指定平台器件 ID 并加载 .xclbin
- 设置 PL 内核与内核实参
- 在软件应用与 PL 内核之间传输数据
- 加载和启动 AI 引擎计算图应用
- 运行系统并返回结果
对于 AMD Versal™ 自适应 SoC 器件,PS 应用会管理整个异构系统,包括 PL 硬件和 AI 引擎计算图应用。如需了解更多信息,请参阅 AI 引擎工具和流程用户指南(UG1076) 中的“对 PS 主机应用进行编程”。
要使用 XRT 本机 API,主机应用必须与
xrt_coreutil
库相链接。例如:g++ -g -std=c++17 -I$XILINX_XRT/include -L$XILINX_XRT/lib -lxrt_coreutil -pthread
使用 XRT 本机 C++ API 编译主机代码需要 C++ 标准和 -std=c++17
。如果使用的 GCC 版本低于 4.9.0,请改用 -std=c++1y
,因为 -std=c++17
是从 4.9.0 开始引入 GCC 的。
重要: 如需为主机应用开启多线程,调用
fork()
系统调用时请谨慎操作。fork()
不会复制所有运行时线程。因此,在 Vitis 核开发套件中,子进程无法作为完整应用来运行。建议使用 posix_spawn()
系统调用从 Vitis 软件平台应用启动另一个进程。