确定加速潜力 - 2022.1 简体中文

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

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

属于软件应用瓶颈的函数并不一定能在器件中运行得更快。通常需要详细分析来准确判定给定函数的实际加速潜力。但是,可以根据一些简单的准则来评估函数是否具有硬件加速的潜力:

  • 该函数的计算复杂度是多少?

    计算复杂度表示执行函数所需的基本计算的运算数量。在可编程器件中,加速是通过创建高度并行且深度流水打拍的数据路径来实现的。这就像是先前类比中的组装线。组装线越长,包含的工作站越多,则与车间内工人采用顺序步骤相比,就更高效。

    所谓适合加速的函数,表示在此类函数中需要对每个输入样本按顺序执行一连串深度运算才能生成输出样本。

  • 该函数的计算密集度是多少?

    函数的计算密集度是运算总数占输入和输出数据总量的比例。计算密集度较高的函数更适合用于加速,因为将数据移植到加速器的开销相对较低。

  • 什么是函数的数据访问局部性剖析?

    数据复用、空间局部性和时间局部性的概念对于评估将数据移植到加速器的开销的可优化程度很有用。空间局部性反映了多个连续存储器访问操作之间的平均距离。时间局部性反映了程序执行期间任一地址的访问操作的平均数量。这些测量值越低越好,因为这样数据更便于缓存在加速器中,从而降低了对全局存储器进行代价不菲且可能冗余的访问的需求。

  • 函数吞吐量与器件中可达到的最大吞吐量相比如何?

    器件加速的应用属于分布式多进程系统。总体应用的吞吐量不会超过其最慢的函数的吞吐量。这种瓶颈的本质因应用而异,可能源于系统的任何方面:I/O、计算或数据迁移。开发者可以通过将最慢的函数的吞吐量除以选定函数的吞吐量来确定最大加速潜力。

    最大加速潜力 = TMin / TSW

    Alveo 数据中心加速器卡上,PCIe 总线会对数据传输施加吞吐量限制。虽然此限制可能并非应用的真正瓶颈,但可能确立上限,从而用于早期估算。例如,假设 PCIe 吞吐量为 10 GB/s 且软件吞吐量为 50 MB/s,那么此函数的最大加速因数为 200x。

这 4 项标准并不意味着保证能实现加速,但确实可作为可靠的工具,用于识别可在器件上加速的正确函数。