本教程主要介绍 Alevo 板卡在 Vitis(v2022.2)GUI 上的部署流程,以在 U50 上部署多核的 Transformer 加速器为例,仅作为 Vitis_workflow 的更新补充。
FPGA: Alevo U50
系统: ubuntu18.04
参考资料:
- 在终端直接运行
vitis,设置工作目录,launch
- 点击
Create Application Project,并点击next
- 选择已安装好的 U50 平台文件
注意:这里请选择与安装的 XRT 版本相符的平台文件 可以通过
xbutil命令查看 XRT 版本信息,因此这里选择 U50 2022 版本
$ xbutil --version
Version : 2.14.384
Branch : 2022.2
Hash : 090bb050d570d2b668477c3bd0f979dc3a34b9db
Hash Date : 2022-12-09 01:00:17
XOCL : 2.14.384, 090bb050d570d2b668477c3bd0f979dc3a34b9db
XCLMGMT : 2.14.384, 090bb050d570d2b668477c3bd0f979dc3a34b9db- 新建应用,输入名称,例如 Transformer
- 创建空白应用,选择
Empty Application后点击Finish
- 添加 kernel 代码至
Tranformer_kernels/src文件夹中
- 打开上图中的
Transformer_kernels.prj添加 kernel
- 配置 hls 综合选项
- Assistant -> Transformer_kernels -> Hardware -> Setting
- 在 Extra source file 中勾选需要使用的其他文件
- v++ command line options 可选配置
--kernel_frequency 300,表示 HLS 综合目标频率为300 (默认)
- 核心数目及 container 设置
- 这里可以配置各个 kernel 的数目以及 container 数目,详见 multi-kernels。默认即可。
-
编写配置文件
- 如上图,在 Transformer_system_hw_link 目录创建
setting.cfg。 - 编写 kernel 端口映射规则
[connecticity],vivado 配置参数[vivado]。具体规则见 UG1393。
[vivado] 选项指定 vivado 运行配置,这里设置了 implementation 策略。
- 如上图,在 Transformer_system_hw_link 目录创建
-
设置硬件实现配置
- Assistant -> Transformer_system_hw_link -> Hardware -> Setting
- v++ command line options:
--kernel_frequency 200:设置 vivado 综合实现频率为 200MHz--config ../setting.cfg:指定上一步编写的配置文件
- 若仅需要将 kernel 端口映射到单存储体,也可在图中 Memory 列选择
- v++ command line options:
- 添加 Host 代码至
Transformer/src文件夹
- 命令行解析代码:Vitis_Accel_Examples/common/includes
- Host 代码编写参考:
- 选中
Transformer_system,将锤子改为Hardware后点击编译
Transformer_system_hw_link/Hardware:PL 端硬件编译,生成xclbin文件Transformer_kernels/Hardware:HLS 综合Transformer/Hardware:Host 端编译
-
Host 代码编译失败,
undefined reference to symbol '_ZNK3xrt6devicecvPvEv'在 setting -> [application name] -> Hardware -> Linker setting -> Libraries(-l) 添加
xrt_coreutil
- 打开
vitis shell
- 切换到 host 的 hardware 目录
$ cd ./Transformer/Hardware- 执行应用程序
$ ./Transformer -x ./binary_container_1.xclbin-
执行时报错
failed to load xclbin: Invalid argument, error:-22,dmesg 查看 log 报错xocl_fdt_check_uuids: Can not find uuid xxxXRT 版本与板卡 Platform 版本不适用。更换 vitis 和 Platform 版本。XRT 版本查看见 2.1 - 3 ! 若在 2.1 第 3 步中选择 U50 2019 platform 就会报该错误
-
buffer 分配错误
[XRT] WARNING: Kernel Linear_eval has no compute units with connectivity required for global argument at index 0. The argument is allocated in bank 45, the compute unit is connected to bank 37. Allocating local copy of argument buffer in connected bank. ... terminate called after throwing an instance of 'xrt_core::system_error' what(): No host side buffer in destination buffer: Invalid argument -
vitis 或 vitis_hls GUI 界面无法打开
删除
~/.Xilinx/vitis/2022.2/文件夹和~/.Xilinx/vitis_hls/2022.2/文件夹
















