在 Alveo 加速器卡上将计算单元分配给 SLR - 2023.2 简体中文

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

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

Alveo 数据中心加速器卡使用由多个超级逻辑区域 (SLR) 组成的堆叠硅片器件来提供器件资源(包括全局存储器)。就频率和资源而言,内核计算单元 (CU) 实例和 DDR 存储器资源布局规划是满足设计结果质量的关键。布局规划包括将 CU(内核实例)显式分配至 SLR。为达成最佳性能,您应将内核或 CU 分配到特定 SLR,以改善布局和时序结果。按 将内核端口映射到存储器 中所述将内核端口分配到特定存储体时,SLR 分配尤为重要。

Alveo 加速器卡中 SLR 的具体可用性可通过 platforminfo 命令来判定。例如,U250 卡会报告有关 SLR 的下列信息:

Valid SLRs
:
SLR0, SLR1, SLR2, SLR3

您可以使用实际内核资源使用率值来帮助跨 SLR 分配 CU,从而降低任一 SLR 中的拥塞。系统会在设计周期早期估算内核所使用的资源(LUT、触发器、BRAM 等)的数量。该信息可搭配可用的 SLR 资源一起使用,以帮助将 CU 分配至 SLR,以免过度使用任一 SLR。

重要: 如果您的内核过大,无法布局到单一 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...,以此类推。

AMD 建议将内核分配到布局该内核的 SLR 中的 DDR 存储器资源中。对于有限的跨 SLR 连接资源而言,这样可以减少资源争用,并减少使用超长线路 (SLL) 布线资源,因为这会造成了比标准布线更大的延迟。可能需要将内核连接到其他 SLR 中的 DDR 资源。但是,如果 connectivity.spconnectivity.slr 指令都已显式定义,则该工具会自动添加额外的交汇逻辑,以便将 SLL 延迟的影响降到最低并促进时序收敛。

重要:--profile 选项 中所述,构建硬件并为剖析命令指定追踪存储器时,您还应根据 SLR 使用情况留意 CU 布局和分配存储器资源。限制和管理跨 SLR 能改善时序。此命令语法如下:
--profile.trace_memory <memory>:<SLR>