为 PS on x86 编译嵌入式应用 - 2023.2 简体中文

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

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

要将嵌入式应用编译为在 x86 处理器上运行(如 使用 PS on x86 执行嵌入式处理器仿真 中所述),您必须使用 gcc 的 x86 版本或者 g++ 编译器 v8.3 或更高版本。

提示: x86 编译仅受软件仿真流程支持,并且要求安装 XRT 的 x86 版本,如 安装 Xilinx Runtime 和平台 中所述。这样即可将 LD_LIBRARY_PATH 变量设置为指向 XRT 库。

基于所需 XRT API 来编译和链接主机应用,并生成可执行文件

g++ -Wall -c -std=c++17 -Wno-int-to-pointer-cast -I${XILINX_XRT}/include \
-I./src/aie -I./ -I${XILINX_VITIS}/aietools/include \
-o aie_control_xrt.o ./Work/ps/c_rts/aie_control_xrt.cpp $(HOST_SRCS) -o main.o
g++ *.o -lxrt_coreutil -ladf_api_xrt -L${XILINX_VITIS}/aietools/lib/lnx64.o \
-L${XILINX_XRT}/lib -o $(EXECUTABLE)
注释: 要执行 ps_on_x86 编译,您必须设置源自 Vitis 安装的 GCC 路径:
setenv PATH $XILINX_VITIS/aietools/tps/lnx64/gcc/bin:$PATH

如果要在相同设置(终端)上的嵌入式 (ARM-GCC) 流程与 x86 编译流程之间进行切换,需要显式指定 ARM-GCCSYSROOT 路径,用于为基于 ARM-GCC 的流程编译和链接应用。如果您尝试使用主机应用的交叉编译来运行仿真,同时想要在同一个 shell(终端)上使用主机应用的本机 x86 编译运行软件仿真,则适用此场景。

注释: 运行本机 x86 编译后,如果您尝试在同一个终端内使用 ARM-GCC 编译器来编译主机应用,那么您将使用 source 命令找到环境设置脚本 xilinx-versal-common-v2023.1/environment-setup-cortexa72-cortexa53-xilinx-linux。确保其中并未设置 LD_LIBRARY_PATH 变量,因为如果设置了此变量,则将发出警告。随后,您必须取消设置 LD_LIBRARY_PATH,然后重新运行该环境设置脚本。

如需了解有关如何为 AI 引擎内核运行 PS on x86 的信息,请参阅 GitHub 上的 AIE 加法器示例。

限制

运行 x86 编译时,在主机代码中不支持仅限 Arm 的数据类型或库。

以下是使用 _fp16(浮点 16)数据类型的主机代码示例,此示例仅在基于 ARM-GCC 的编译器中受支持。x86 编译器在编译此主机代码时会发出错误。在此类情况下,AMD 建议使用 PS 的 QEMU 模型并使用基于 ARM GCC 的编译器来编译 PS 应用。

#define LENGTH (1024)
#define HALF __fp16
int main(int argc, char* argv[])
{
unsigned fileBufSize;
std::string binaryFile = argv[1];
size_t vector_size_bytes = sizeof(HALF) * LENGTH;
//Source Memories
std::vector<HALF> source_a(LENGTH);
std::vector<HALF> source_b(LENGTH);
std::vector<HALF> result_sim (LENGTH);
std::vector<HALF> result_krnl(LENGTH);
/* Create the test data and golden data locally */
for(int i=0; i < LENGTH; i++){
source_a[i] = i;
source_b[i] = i*2;
result_sim[i] = source_a[i] + source_b[i];
} 
提示:为 Cortex-A72 处理器编译嵌入式应用 中所述,您也可以 PS 的 QEMU 模型作为目标,方法是在软件仿真流程中使用 ARM-GCC 编译器来编译嵌入式应用。