消除循环进位依赖关系 - 2023.2 简体中文

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

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

最常见的循环进位依赖关系是当循环迭代依赖于前一次迭代中计算所得值时。根据循环迭代是与阵列存在依赖关系还是与标量变量存在依赖关系,处理方式存在差异。如需了解更多信息,请参阅 Vitis HLS 用户指南(UG1399) 中的展开循环

  • 消除与阵列之间的依赖关系

    HLS 编译器执行索引分析以确定是否存在阵列依赖关系(先写入后读取、先读取后写入、先写入后写入)。该工具可能无法始终静态解决潜在的依赖关系,并且在这种情况下将报告错误的依赖关系。

    特殊的编译器编译指示可以覆盖这些依赖关系并改进设计的 II。在这种情况下,请小心不要覆盖有效的依赖关系。

  • 消除对标量的依赖关系

    与标量存在依赖关系时,通常存在反馈路径,并且其中计算调度为在多个时钟周期内执行。通常在这些反馈路径上能找到复杂的算术运算,例如乘法、除法或取模。反馈路径中的周期数直接限制了潜在的 II,应该减少周期数以改善 II 和吞吐量。为此,请分析反馈路径以确定是否可以和如何才能缩短该路径。这可以使用 HLS 调度约束或代码修改(例如减小位宽)来完成。