编写软件应用 - 2023.2 简体中文

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

Document ID
UG1393
Release Date
2023-12-13
Version
2023.2 简体中文

AMD Vitis™ 环境中,可使用 Xilinx Runtime (XRT) 本机 API 以本机 C++ 语言来编写软件应用组件。此处对 XRT 本机 API 进行了简要描述,在 XRT 文档网站上的 XRT 本机 API 下提供了更多详细信息。对于数据中心加速,通常将应用组件称为主机应用,因为它在 x86 服务器上运行,而对于基于嵌入式处理器的系统,通常直接将其称为应用,此类系统与 PL 内核和 AI 引擎计算图位于相同器件内。

提示: 如需获取使用 XRT 本机 API 进行软件应用编程的示例,请参阅 Vitis_Accel_Examples 中的 host_xrt

总之,主机应用的结构可分为以下步骤:

  1. 指定平台器件 ID 并加载 .xclbin
  2. 设置 PL 内核与内核实参
  3. 在软件应用与 PL 内核之间传输数据
  4. 加载和启动 AI 引擎计算图应用
  5. 运行系统并返回结果

对于 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 软件平台应用启动另一个进程。