创建内核的多个实例 - 2022.1 简体中文

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

Document ID
UG1393
Release Date
2022-05-25
Version
2022.1 简体中文

默认情况下,连接器会从内核构建单个硬件实例。如果主机程序将多次执行相同内核,比如,为了满足数据处理的需求,那么它必须按顺序在硬件加速器上执行该内核。这可能会影响整体应用性能。但通过自定义内核链接阶段,您即可从单一内核例化多个硬件计算单元 (CU)。这样可以改善性能,因为主机程序现在可以执行多次重叠的内核调用,通过逐一分开运行各计算单元来并发执行内核。

链接期间,可通过在 v++ 配置文件中使用 connectivity.nk 选项来创建单一内核的多个 CU。编辑配置文件以包含所需选项,并在 v++ 命令行中通过 --config 选项来指定该配置文件,如 Vitis 编译器命令 中所述。

例如,对于 vadd 内核,可在配置文件中实现两个硬件实例,如下所示:
[connectivity]
#nk=<kernel name>:<number>:<cu_name>.<cu_name>...
nk=vadd:2

其中:

<kernel_name>
指定要多次例化的内核名称。
<number>
要在硬件中实现的内核实例或 CU 的数量。
<cu_name>.<cu_name>...
为指定数量的实例指定实例名称。这是可选项,如果不指定 CU 名称,则默认设为 kernel_1。
随后,在 v++ 命令行上指定配置文件:
v++ --config vadd_config.cfg ...

在以上 vadd 示例中,生成了 vadd 内核的两个实例:vadd_1vadd_2

提示: 您可使用 xclbinutil 命令检验 xclbin 文件内容以检查结果。请参阅 xclbinutil 实用工具
以下示例显示了 xclbin 二进制文件中的 vadd 内核的 3 个 CU,分别名为 vadd_Xvadd_Yvadd_Z
[connectivity]
nk=vadd:3:vadd_X.vadd_Y.vadd_Z