多面体编译技术在软硬协同设计中的应用
摘要
多面体模型是一项成熟的编译优化技术,广泛地应用在传统的编译器及AI编译器中。本文关注的是将多面体技术应用到软硬协同设计领域的空间探索(Design Space Exploration),针对Systolic Array的硬件架构设计多面体的分析模型,借助于现有的多面体编译技术在编译的过程中实现对硬件架构的探索,达到最佳性能;也可以在特定硬件约束下,改变算法设计适配硬件。
多面体模型介绍
多面体编译优化关注的是在确保程序执行正确的前提下重组循环的结构,实现性能最佳。比如图2的循环中,左图表示的原始的二维迭代空间,蓝色箭头表示数据(黑点)之间存在依赖关系,对角线的绿色表示数据没有依赖关系,经过变基操作之后变为右图的表达式及迭代空间,从形状看像是把多面体进行了变形,形象地体现出多面体优化的过程。当然,变形的目的是为了实现并行计算,达到更好的性能,具体分析可以参考[1][2]。
脉动阵列是基于数据流的计算架构,具有十分规则的计算范式,对于两个大小为4x4的矩阵乘投射到一个二维的4x4的脉动阵列上,其计算架构和数据流动可以表示为下图。本文的分析也针对二维脉动阵列展开。
图中的脉动阵列的特点是数据沿着水平和垂直方向流动,在计算单元(PE:Process Element)中完成乘加操作。
针对脉动阵列的空时变换(Space-Time Transformation)的分析模型在上世纪九十年代已经提出[3]。
定义一个二维脉动阵列的大小为
基于等价计算的方法,将上述代码的表达转换为自由赋值的符号表达(Assignment-Free Notation)
Eq<1>表示的是输入参数,Eq<2>表示的是计算过程,Eq<3>表示的是输出结果。
针对符号表达,可以将其投射到多面体模型中,
脉冲阵列的计算可以从空间域和时间域两个维度进行描述,空间域表示每个计算落在脉动阵列的计算单元的位置,时间域表示计算结果输出的时刻。通过观察,在图3的脉动阵列中,第一个计算结果
将前文提到的迭代矩阵
为了计算PE的空间坐标
另外,投影方向可以使用任何垂直于投影矩阵的单位向量
注意,投影矩阵和投影方向向量不是唯一的,此处是选择了
根据以上关于时间t和空间z的公式表达,那么就可以将脉动阵列的计算过程通过空时变换(Space-Time Transformation) T描述如下,T为投影矩阵和时间向量的组合。
针对图3的脉动阵列架构,空时转换矩阵为
从公式表达上,可以看出
本节的分析根据论文PolySA [4]展开,论文中多面体模型定义为
逻辑标签(Logical Stamp)S表示的是空间域信息和时间域信息。
针对脉动阵列的空间探索,散射函数的不同决定了产生不同的脉动阵列架构,而散射函数是由投影矩阵P和时间向量
根据脉动阵列结构的自身特点,一是每个边上的计算单元存在一个周期的延迟(脉动阵列本身固有特点),因此一个边上的计算时间都需要大于0,
二是映射到一个PE的节点无法在同一时刻计算,即前面提到的投影方向向量和时间向量的乘积要大于0。
散射函数存在传递性,可以将其不断投射下去。将多面体模型
比如从
多面体
图5中的图b和图c是针对2x2的脉动阵列,图d是将矩阵操作投射到1x2的脉动阵列上。
图5中a表示的是多面体的散射函数和访存函数,对于矩阵A,它被访问的迭代变量是i或者k,因此它的访存函数为
图b表示的是沿着k轴
图c表示的也是K轴的映射,空间映射的结构和图b相同,但时间向量选择是
图d表示将图c的空时信息进行再一次的投射,改变脉动阵列的结构。新的投射矩阵变为了向量
构建了多面体的中间表示(IR)之后,可以利用现有的多面体编译技术搭建编译框架,如图6所示。Design Optimizer是针对FPGA上的资源的优化,比如DSP,RAM,LUT等。最终产生HLS代码的配置参数,通过模板的方式生成HLS IP。
本文讨论了针对脉动阵列架构构建多面体模型的分析方法,并将多面体编译技术应用到硬件架构空间的探索中。该方法的启示在于将编译技术融合到软硬协同设计中,在编译的过程中针对特定的需求进行软硬件两个维度的空间探索,达到协同调优。但是目前的多面体分析模型局限于脉动阵列这种具有规则性的硬件架构上,尚且不能映射到所有的架构,这是需要后期研究的工作。
[1] Uday Bondhugula, Polyhedral Compilation Opportunities in MLIR
[2] 要术甲杰, Polyhedral Model—AI芯片软硬件优化利器,
https://mp.weixin.qq.com/s/QEooKxP1sm5O90AUiqKQEQ
[3] Space-time transformation and systolic arrays, https://gyires.inf.unideb.hu/KMITT/a52/ch04s02.html
[4] Jason Cong and Jie Wang. PolySA: polyhedral-based systolic array auto-compilation. In ICCAD 2018.
往期推荐
壁仞科技研究院作为壁仞科技的前沿研究部门,旨在研究新型智能计算系统的关键技术,重点关注新型架构,先进编译技术和设计方法学,并将逐渐拓展研究方向,探索未来智能系统的各种可能。壁仞科技研究院秉持开放的原则,将积极投入各类产学研合作并参与开源社区的建设,为相关领域的技术进步做出自己的贡献。