构建 .xclbin 文件时,可使用 --connectivity.nk
选项来指定要实现到硬件中的内核实例或计算单元 (CU) 的数量,如 创建内核的多个实例 中所述。构建 .xclbin 后,即可从主机应用访问这些 CU。
用户可以使用单一内核对象 (xrt::kernel
) 来执行多个 CU,前提是这些 CU 具有相同的接口连接方式,即这些 CU 具有相同的存储器连接 (krnl.group_id
)。如果并非所有 CU 都有相同的内核连接,那么您可以为内核的每项唯一配置创建独立的内核对象,如以下示例所示。
krnl1 = xrt::kernel(device, xclbin_uuid, "vadd:{vadd_1,vadd_2}");
krnl2 = xrt::kernel(device, xclbin_uuid, "vadd:{vadd_3}");
在以上示例中,krnl1
可用于启动 CU vadd_1
和 vadd_2
,这 2 个 CU 具有相匹配的连接,而 krnl2
则可用于启动 vadd_3
,该 CU 的连接与前 2 个不同。
提示: 如果您为多个无匹配连接的 CU 创建单个内核对象,那么在执行内核时,XRT 会将一个或多个具有匹配连接的 CU 分配到该内核对象,并忽略硬件中的其它内核。