实现用于执行由高层软件代码定义的操作的硬件设备的方法技术

技术编号:33097529 阅读:21 留言:0更新日期:2022-04-16 23:32
本公开提供了一种实现硬件设备的方法,特别是配置在FPGA上或制造为ASIC的硬件设备,其配置为满足由高层软件代码定义的某些算法可实现的最大性能。该方法基于以下步骤:将高层软件代码翻译成对应的定义低层操作的低层软件代码,以执行由高层软件代码定义的相同操作;然后估计某些参数以计算硬件设备的峰值性能值P和存储器实现传送性能Pm;最后,利用具有在峰值性能值P和存储器传送性能Pm内的性能的硬件资源来实现硬件设备。硬件资源来实现硬件设备。

【技术实现步骤摘要】
【国外来华专利技术】实现用于执行由高层软件代码定义的操作的硬件设备的方法


[0001]本公开涉及用于算法的硬件实现的高层合成工具,并且更具体地涉及实现用于执行由高层软件代码定义的操作的硬件设备的方法。

技术介绍

[0002]高性能计算(HPC)和云背景中对计算性能和节能解决方案的需求不断增长,这导致采用异构系统。在市场上可用的硬件加速器中,现场可编程门阵列(FPGA)一方面在性能和功率效率之间提供了有吸引力的权衡,另一方面由于其可重新配置的特征,提供了灵活的解决方案。尽管有其优点,但广泛采用FPGA技术的主要限制因素之一是其可编程性的复杂性[1]。另一方面,专用集成电路(ASIC)提供了最佳的功率性能配置文件,但代价是开发和设计时间更长,同时缺乏FPGA典型的可重新配置特征。如今,与使用硬件描述语言(HDL)的更传统的开发相比,高层合成(HLS)工具被广泛采用,以持续减少硬件设计时间。设计人员从算法的高层表示(例如C/C++)开始,可以指定多个优化指令来引用代码的特定部分。这些指令通常以编译指示的形式给出,允许定义用于实现对应内核的高层架构选择。尽管这种方法在获得的性能/设计时间比方面非常有效,但HLS工具仍然需要一致的时间来生成最终设计。此外,最终设计的性能主要取决于用户选择最佳优化指令集的经验。
[0003]出于这个原因,已经提议了一些工作来自动化HLS优化指令的设计空间探索(DSE)[2]‑
[5],提议了多种方法来在相对较短的时间内实现最佳内核设计。尽管所使用的搜索方法质量很高,但此类工作要么没有明确考虑与片外存储器之间的存储器传送,要么假设内核输入和输出可以完全缓存在片上。因此,当内核与片外DDR存储器通信时,例如通过赛灵思(Xilinx)[6]的SDAccel设计流程中的AXI接口,存储器中传送的低效率很容易危及优化指令的有效性。因此,在优化内核本身之前,确定当前性能瓶颈所在的位置很重要。HLS工具提供的指令允许探索算法的软件描述的多个硬件实现。尽管HLS指令允许从计算角度改进硬件设计,但在大多数情况下,存储器传送的优化需要设计人员重构代码。这方面限制了仅针对HLS指令的DSE方法的有效性。
[0004]在这种背景下,屋顶线模型(roofline model)[7]、[8]可用于分析在特定架构上运行的特定应用的性能边界。通过这种分析模型,可以快速验证算法是否受存储器限制,以及设计人员是否应该在研究特定于计算的优化指令之前重构代码并应用存储器传送优化。
[0005]下面根据HLS指令的自动探索和屋顶线模型分析对相关工作进行调查。
[0006]A.自动HLS代码优化
[0007]文献中的几项工作提议了在不同设置中有效探索HLS优化指令的方法[2]‑
[5]。详细地说,[4]对从目标代码得出的一组样本设计执行了几次初步的HLS运行。HLS资源和性能报告用作分析线性模型的基础,以驱动DSE。分析模型相对于算法的循环层次结构进行参数化,提供对应用分类而不是算法本身的估计。此外,工具依赖于底层HLS工具的执行,根据目标代码,工具可能需要大量时间才能运行。如COMBA[2]和Lin

Analyzer[3]等其他方法不需要外部HLS工具。特别是,Lin

Analyzer利用从程序跟踪中获得的动态数据依赖图来推导出
DSE所需的资源和性能估计。另一方面,COMBA直接在从Clang前端[20]生成的LLVM[9]中间表示(IR)上执行静态代码分析。它构建了顶层函数的分层数据流图(DFG),以使用分析模型加速和递归计算资源和性能估计。[2]和[3]都考虑了DSP消耗,但他们没有估计任何LUT使用,这可能是几种情况下最受限制的资源。此外,两种方法都没有考虑在循环展开后应用的代码优化的影响,诸如instcombine和gvn[10],这可能会显著降低代码的复杂性。因此,尽管这些方法在估计内核时延时提供了相当精确的结果,但它们往往会高估资源消耗。最后,与之前的工作不同,[5]考虑了片外存储器传送的影响。然而,它仅限于具有加载

计算

存储范式的应用,其工作集可以缓存在芯片上。
[0008]在我们的工作中,采用相同的基于模型的COMBA方法,并增加了预处理优化步骤,包括内置和定制LLVM编译器通道。通过这种方式,我们能够更准确地探索设计空间并确定COMBA由于高估资源需求而认为不可行的解决方案。
[0009]B.广义屋顶线模型
[0010]为基于FPGA的架构适应屋顶线模型[7]的第一个工作是[8],作者提议了一种方法,用于依赖HLS工具的使用来构建屋顶线模型。利用循环展开带来的操作强度的增加,用户可以通过HLS工具评估多个展开版本的性能和资源使用情况,通过插值获得屋顶线模型。然而,无论是计算操作强度还是峰值性能,此项工作缺乏自动化。这些限制由[11]解决,它提供了一种用于半自动构建OpenCL内核的屋顶线模型的工具。峰值带宽和峰值性能是通过目标架构上的基准计算得出的,而不考虑要加速的计算。然而,FPGA和ASIC允许根据要执行的计算定义硬件加速器,因此与计算无关的峰值性能的假设使该方法不太可靠。另一方面,在[12]中,峰值性能的计算也考虑了输入算法。结合数据表中提供的数据,他们根据两个因素计算出几个峰值性能值:内核所需的浮点加法和乘法的比率以及用于其实现的DSP和LUT资源的比率。尽管此项工作部分考虑了算法的加速,但这两个因素仅提供了算法的粗粒度分类。此外,用户必须手动指定DSP和LUT的使用比例。

技术实现思路

[0011]为了克服所讨论的局限性,我们提议了一种新颖的方法来自动计算由高层软件代码定义的某种算法可实现的最大性能,从而实现硬件设备,尤其是配置在FPGA上或作为ASIC制造的硬件设备,实现满足最大性能。
[0012]根据本公开的方法在所附权利要求中定义,并且基于以下步骤:将高层软件代码翻译成定义低层操作的对应的低层软件代码,以执行由高层软件代码定义的相同操作;然后估计某些参数以计算可以制造或配置为执行高层软件代码的硬件设备的至少峰值性能值P;根据相应的峰值性能值P选择待制造或配置的硬件设备;最后,制造或配置所选择的硬件设备以执行高层软件代码。
[0013]根据本公开的方法的一个方面,估计当执行软件代码时代传送到所述硬件设备的存储器和待从所述硬件设备的存储器传送来的数据的字节的总数、以及用于向所述存储器和从所述存储器传送数据的最大带宽,然后计算低层软件代码的操作强度。最后,作为操作强度与最大带宽的乘积来计算硬件设备的存储器传送性能值,并且还根据存储器传送性能值来选择待制造或配置的硬件设备。
[0014]根据一方面,通过利用LLVM前端编译器,例如Clang前端编译器或Flang前端编译
器(https://en.wikipedia.org/wiki/LLVM,https://llvm.org/ProjectsWithLLVM/),将高层软件代码变换为低层软件代码本文档来自技高网
...

【技术保护点】

【技术特征摘要】
【国外来华专利技术】1.一种实现用于执行由高层软件代码定义的操作的硬件设备的计算机实现方法,所述方法包括以下步骤:将所述高层软件代码翻译成对应的低层软件代码,以执行由高层软件代码定义的相同操作,其中所述低层软件代码定义低层操作;针对能够被制造或配置用于执行所述低层软件代码的一组硬件设备中的每个硬件设备,执行以下操作:针对每个低层操作(op)并且针对所述硬件设备的每种类型的硬件资源(r),估计利用所述硬件设备实现所述低层操作(op)所需的所述类型的硬件资源的使用量(u
op,r
),针对所述低层操作中的每个低层操作(op),估计所述低层软件代码中的所述低层操作的运行时发生次数(o
op
),针对每种类型的所述硬件资源(r),作为所述低层操作(op)的运行时发生次数(o
op
)和对应的所述类型的硬件资源(r)的使用量(u
op,r
)之间的乘积在所有所述低层操作上的总和,来计算所述类型的所需的硬件资源(c
r
)的对应数量,作为所述类型(r)的所述硬件资源中的所需硬件资源(c
r
)的所述数量与所述硬件设备中的可用硬件资源的定义数量之间的比值的最大值,来计算用于所述硬件设备的缩放因子(SF),作为所述低层操作的所述运行时发生次数(o
op
)除以所述缩放因子(SF)后与定义可由硬件设备执行的每秒的低层操作的数量的速率(f)的乘积在所有所述低层操作上的总和,来计算所述硬件设备的峰值性能值(P);根据针对所述集合中的每个硬件设备计算的相应的所述峰值性能值(P),选择所述集合中的待制造或配置的硬件设备;制造或配置所述硬件设备以执行所述高层软件代码。2.根据权利要求1所述的方法,其中,针对所述集合中的每个硬件设备,包括以下步骤:估计当执行软件代码时待传送到所述硬件设备的存储器和待从所述硬件设备的存储器传送来的数据的字节(t...

【专利技术属性】
技术研发人员:马可
申请(专利权)人:霍克斯莱特有限责任公司
类型:发明
国别省市:

相关技术
    暂无相关专利
网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1