当前,数据中心加速器卡上的赛灵思器件使用由超级逻辑区域 (SLR) 组成的堆叠硅片来提供器件资源(包括全局存储器)。为了实现最佳性能,在向全局存储体分配端口时(如 将内核端口映射到存储器 中所述),最好将 CU 实例与相连的全局存储器分配到相同 SLR。在此情况下,您将把内核实例或 CU 手动分配到全局存储器所在 SLR 中,以确保最佳性能。此外,如果平台或器件支持多个 SLR,那么应向特定 SLR 分配 CU 以改善布局和时序结果。
重要: 如果您的内核过大,无法布局到单一 SLR 内,那么 Vitis 编译器会自动跨多个 SLR 进行逻辑布局。在此情况下,您不应分配 SLR,否则可能导致实现期间出错。
在配置文件中使用 connectivity.slr
选项即可将 CU 分配给 SLR。配置文件中的 connectivity.slr
选项语法如下:
[connectivity]
#slr=<compute_unit_name>:<slr_ID>
slr=vadd_1:SLR2
slr=vadd_2:SLR3
其中:
-
<compute_unit_name>
是 CU 的实例名,由connectivity.nk
选项确定(如 创建内核的多个实例 中所述),或者如果不指定多个 CU,则直接命名为<kernel_name>_1
。 -
<slr_ID>
是 CU 分配到的 SLR 编号,格式为 SLR0、SLR1...,以此类推。
必须针对每个 CU 单独指定分配给 SLR 的 CU,当平台包含多个 SLR 时建议执行此分配。如果分配的 CU 连接到位于另一个 SLR 中的全局存储器,那么该工具将自动插入跨 SLR 寄存器以帮助达成时序收敛。如无 SLR 分配,v++
连接器即可自由向任意 SLR 分配 CU。
编译配置文件以包含 SLR 分配后,您可在 v++
链接进程中通过使用 --config
选项指定配置文件来使用此分配:
v++ -l --config config_slr.cfg ...