一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于FPGA的背压索引式组合计算单元

2022-07-30 16:34:40 来源:中国专利 TAG:

一种基于fpga的背压索引式组合计算单元
技术领域
1.本发明涉及机器学习技术领域,更具体地,涉及一种基于fpga的背压索引式组合计算单元。


背景技术:

2.与深度卷积神经网络(dcnn)相比,图神经网络(gnn)在处理非欧几里得数据上具有其他神经网络无法比拟的优势,因此在节点分类、自然语言处理、推荐系统、图聚类、链接预测领域被广泛使用。不同于dcnn算法已经具有较多成熟的落地方案,gnn算法的落地依然存在较多的问题。相比dcnn算法,gnn具有更加高昂的计算、存储和带宽开销,并且引入了不规则的计算和访存模式。因此,面向dcnn的加速手段,如嵌套循环优化技术、量化策略、winograd算法等等手段难以直接迁移到gnn加速器设计中。
3.作为最广泛的数据格式,图数据与神经网络的结合,必然会催生出大量的专用硬件架构设计,一如以图像为代表的dcnn应用催化了gpu的发展。因此,面向图数据处理领域的专用系统架构设计-gnn加速器是具有非凡的实际工程价值与学术研究价值。与dcnn相比,gnn的有效计算并不多。虽然,gnn计算中涉及的矩阵尺寸都很大,但是由于计算所需的邻接矩阵中非零元素所占百分比常常只有10-3
到10-2
数量级左右,且分布不规则,因此限制gnn计算速度的是计算资源利用率低以及负载不均等问题。在进行gnn加速器设计过程中,并不能单一地关心加速器的吞吐量,更重要的是如何高效的调度数据,提高计算资源的利用率。
4.现有的gnn加速器,大多是针对gnn具有不规则访存的聚合阶段进行专门的优化,而计算密集的组合阶段,则直接使用dcnn中脉动阵列等一系列现有的方法。但是,组合阶段的向量维度高,数据稀疏性也很高,直接使用dcnn的计算方法会造成大量的计算资源浪费,计算时间也较长。因此,利用好组合阶段计算的数据特点,将有效节省计算资源和计算时间,减少流水线阻塞,提高计算资源的利用率,从而提高加速器性能。
5.现有技术中公开了一种神经网络单元(nnu),被配置为将h行乘以w列乘以c个通道的输入与每一个为r行乘以s列乘以c个通道的f个滤波器进行卷积,以生成每一个为q行乘以p列的f个输出,所述神经网络单元包括:第一存储器,所述第一存储器被配置为保存逻辑地分为g个输入块的n个字的行,其中每个输入块为b个字;第二存储器,所述第二存储器被配置为保存逻辑地分为g个滤波器块的n个字的行,其中每个滤波器块为b个字;其中b是大于w的n的最小因数,及其中n至少为512;n个处理单元(pu)的阵列,其中所述阵列的每个pu具有:累加器;寄存器,所述寄存器被配置为接收来自所述第二存储器的行的n个字中的相应字;多路复用寄存器,所述多路复用寄存器被配置为选择性地接收来自所述第一存储器的行的n个字中的相应字或从逻辑上相邻的pu的多路复用寄存器旋转的字;及算术逻辑单元,所述算术逻辑单元耦合到所述累加器、寄存器和多路复用寄存器,其中所述n个pu被逻辑地分为g个pu块,每一pu块为b个pu;其中所述输入块被保存在所述第一存储器的h行中,其中所述第一存储器的所述h行的每行保存所述输入的h行中的对应行的相应的2维片,其
中,所述相应的2维片被保存在所述g个输入块中的至少c个输入块中,其中所述至少c个输入块的每个输入块保存由所述c个通道中的相应通道指定的2维片的字的行;其中所述滤波器块被保存在所述第二存储器的r
×s×
c行中,其中所述第二存储器的所述r
×s×
c行的每行的g个滤波器块中的f个滤波器块中的每一个保存在对应的滤波器的相应行和相应列以及相应通道的f个滤波器中的对应滤波器的权重的p个副本;及其中为了将所述输入与所述滤波器进行卷积,所述g个pu块以列-通道-行顺序对所述输入块和滤波器块执行乘法-累加运算,其中所述g个pu块从所述第一存储器读取所述至少c个输入块中的h行中的一行,并且在执行一部分乘法-累加运算期间围绕所述n个pu旋转所述行,使得所述g个pu块中的f个中的每一个在从所述第一存储器读取所述h行中的另一行之前接收所述行的所述至少c个输入块中的每一输入块。该方案运用至gnn加速器中依然会造成大量的计算资源浪费。


技术实现要素:

6.本发明提供一种基于fpga的背压索引式组合计算单元,提高gnn组合阶段的计算效率。
7.为解决上述技术问题,本发明的技术方案如下:
8.一种基于fpga的背压索引式组合计算单元,所述组合计算单元用于计算图神经网络的组合阶段,每个时钟周期内,输入一个权重矩阵切片至所述组合计算单元中,所述组合计算单元包括索引缓冲器、范围缓冲器、控制单元、权重平铺缓冲器、乘法器、累加器和m个中间结果寄存器,其中:
9.所述索引缓冲器用于存放节点特征矩阵中非零元素编码后的数据;
10.所述范围缓冲器用于确定当前时钟周期输入的权重矩阵切片中数据的编号范围;
11.所述控制单元判断所述索引缓冲器的顶部索引号是否在所述范围缓冲器的编号范围内,若在范围内,则索引出所述权重矩阵切片中对应的权重数据,并连同索引缓冲器中对应的非零元素的具体值一起送入乘法器,并根据非零元素所属的节点号将乘法器结果由累加器累加到对应的中间结果寄存器中;
12.权重平铺缓冲器用于存放当前时钟周期内未能处理的权重矩阵切片,当所述控制单元完成当前任务后判断所述权重平铺缓冲器中的权重矩阵切片是否有要索引的数据,没有则丢弃,有则索引并送入乘法器和累加器找进行计算,直至权重平铺缓冲器为空;
13.所有权重矩阵切片发送并完成处理后,所述m个中间结果寄存器中的数据为组合计算的最终结果。
14.优选地,所述节点特征矩阵由邻接矩阵和节点特征向量组成,其中,邻接矩阵用于表示节点之间的连接关系,节点特征向量用于表示各个节点的特征。
15.优选地,需要对所述节点特征矩阵进行切片,其中,将节点特征矩阵向量的切片只需与邻接矩阵的切片对应,具体为:
16.将邻接矩阵某一切片涉及的节点的节点特征向量取出,作为一个节点特征向量切片。
17.优选地,所述索引缓冲器存放数据时,将不同节点特征向量的切片内相同编号的节点特征向量合并,合并后根据被编码后的非零元素的行内元素坐标由小到大的顺序进行排列,所述不同节点特征向量的切片内相同编号具体为:
18.当邻接矩阵的切片尺寸确定后,节点特征向量的每一个切片的节点数量是相同的,假设都有n个节点特征向量,且对每个切片内的节点进行0至n-1的编号,把不同切片内相同编号的节点特征向量称为不同切片内相同编号的节点特征向量。
19.优选地,所述节点特征矩阵中非零元素编码,具体为:
20.节点特征矩阵中的每一个非零元素均用一个三元组进行表示,三元组中包含行、列以及具体值这三个数据,其中,行表示节点号,列表示行内非零元素的坐标。
21.优选地,所述范围缓冲器的编号范围在每个时钟周期递增,递增的数值等于权重矩阵切片中权重数据的个数。
22.优选地,所述控制单元判断所述索引缓冲器的顶部索引号是否在所述范围缓冲器的编号范围内,具体为:
23.若索引缓冲器发送来的索引值小于所述范围缓冲器中当前的值,则确定当前权重矩阵切片中有符合索引值的数据。
24.一种基于fpga背压索引式组合计算系统,所述系统包括预处理模块、组合计算单元阵列和若干权重存储器,其中:
25.所述预处理模块对节点特征矩阵中非零元素进行编码和存储;
26.所述组合计算单元阵列包括m
×
n的如上述所述的基于fpga的背压索引式组合计算单元,每m个节点特征向量中非零元素构成的数据将被输入到一个组合计算单元中,同一列的组合计算单元中,每一个组合计算单元将负责m个节点特征向量的组合计算;
27.所述若干权重存储器存储权重矩阵的切片,且将权重矩阵的切片以广播的方式发送到组合计算单元阵列中同一列的每个组合计算单元,每个时钟单元发送一个权重矩阵切片,所述权重存储器的个数等于权重矩阵的列数,每个权重存储器存储一列权重矩阵的数据。
28.优选地,所述预处理模块还通过对节点特征矩阵进行静态统计得到节点特征矩阵的稀疏性,根据节点特征矩阵的稀疏性,确定节点特征向量的切片融合数量m和权重矩阵的切片尺寸。
29.优选地,当权重平铺缓冲器已经存满数据时,权重平铺缓冲器的full信号拉高,组合计算单元发送反压信号至权重存储器中,暂停权重矩阵切片数据的传送和系统后续模块的工作,等待当前组合计算单元的特殊情况得到解决,即最后一个权重矩阵切片的计算任务全部完成或者权重平铺缓冲器的full信号拉低。
30.与现有技术相比,本发明技术方案的有益效果是:
31.1)本发明充分利用gnn网络第一层组合计算中节点特征向量的稀疏性,利用背压索引的方法在固定周期内完成了组合计算,为高维向量的计算节省了大量时间,同时降低了每个计算单元的硬件开销,使得计算阵列能有更大的并行度。
32.2)本发明合并m个节点特征向量的非零元素,使其时分复用计算单元,与不合并的情况相比,提高了m倍的并行度,同时为后续的聚合阶段提供了更多的可用顶点,在合适的参数下能有效提高聚合计算单元的利用率,减少流水线堵塞。
33.3)本发明使组合计算时间取决于权重数据的切片尺寸,使所有计算单元的计算时间趋于相同,对于后续聚合阶段而言提供了规则的数据流,控制逻辑简单。同时,调整切片的尺寸使硬件资源开销和组合计算时间之间能够自由调节。
附图说明
34.图1为本发明的背压索引式组合计算单元结构示意图。
35.图2为背压索引式组合计算单元的数据流示意图。
36.图3为背压索引式组合计算系统框架示意图。
37.图4为使用背压索引式组合计算系统中计算单元的利用率和不同参数下加速器性能提升情况示意图。
具体实施方式
38.附图仅用于示例性说明,不能理解为对本专利的限制;
39.为了更好说明本实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;
40.对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。
41.下面结合附图和实施例对本发明的技术方案做进一步的说明。
42.实施例1
43.本实施例提供一种基于fpga的背压索引式组合计算单元(cpe),如图1所示,所述组合计算单元用于计算图神经网络的组合阶段,每个时钟周期内,输入一个权重矩阵切片至所述组合计算单元中,所述组合计算单元包括索引缓冲器(index buffer)、范围缓冲器(range buffer)、控制单元(control unit)、权重平铺缓冲器(weight tile buffer)、乘法器、累加器和m个中间结果寄存器(图中reg代表一组m个中间结果寄存器),其中:
44.所述索引缓冲器用于存放节点特征矩阵中非零元素编码后的数据;
45.所述范围缓冲器用于确定当前时钟周期输入的权重矩阵切片中数据的编号范围;
46.所述控制单元判断所述索引缓冲器的顶部索引号是否在所述范围缓冲器的编号范围内,若在范围内,则索引出所述权重矩阵切片中对应的权重数据,并连同索引缓冲器中对应的非零元素的具体值一起送入乘法器,并根据非零元素所属的节点号将乘法器结果由累加器累加到对应的中间结果寄存器中;
47.权重平铺缓冲器用于存放当前时钟周期内未能处理的权重矩阵切片,当所述控制单元完成当前任务后判断所述权重平铺缓冲器中的权重矩阵切片是否有要索引的数据,没有则丢弃,有则索引并送入乘法器和累加器找进行计算,直至权重平铺缓冲器为空;
48.所有权重矩阵切片发送并完成处理后,所述m个中间结果寄存器中的数据为组合计算的最终结果。
49.实施例2
50.本实施例在实施例1的基础上,继续公开以下内容:
51.所述节点特征矩阵由邻接矩阵和节点特征向量组成,其中,邻接矩阵用于表示节点之间的连接关系,节点特征向量用于表示各个节点的特征。
52.需要对所述节点特征矩阵进行切片,其中,将节点特征矩阵向量的切片只需与邻接矩阵的切片对应,具体为:
53.将邻接矩阵某一切片涉及的节点的节点特征向量取出,作为一个节点特征向量切片。
54.gnn中,邻接矩阵被用于表示节点之间的连接关系,节点特征向量用于表示各个节点的特征,gcn推理过程的核心就是节点特征向量的更新。但是,由于fpga片上存储和计算资源都有限,需要对邻接矩阵和节点特征向量构成的节点特征矩阵进行切片后再部署到片上。如图2所示,所述索引缓冲器存放数据时,将不同节点特征向量的切片内相同编号的节点特征向量合并,若取合并数量为m,则m条节点特征向量合并后根据被编码后的非零元素的行内元素坐标由小到大的顺序进行排列,每m个节点特征向量中非零元素构成的数据将被输入到一个背压索引式组合计算单元中,所述不同节点特征向量的切片内相同编号具体为:
55.邻接矩阵的每一个切片对应了全图的一部分连接关系,即一个子图,只涉及部分节点。因此对于节点特征矩阵向量的切片只需与邻接矩阵的切片对应即可,当邻接矩阵的切片尺寸确定后,节点特征向量的每一个切片的节点数量是相同的,假设都有n个节点特征向量,且对每个切片内的节点进行0至n-1的编号,把不同切片内相同编号的节点特征向量称为不同切片内相同编号的节点特征向量。
56.所述节点特征矩阵中非零元素编码,具体为:
57.节点特征矩阵中的每一个非零元素均用一个三元组进行表示,三元组中包含行、列以及具体值这三个数据,其中,行表示节点号,列表示行内非零元素的坐标。
58.在整个gcn推理过程中,第一层的组合阶段需要进行乘法的向量维度极大,因此coo编码主要针对的是原始数据。第二层组合计算的输入数据为第一层的计算结果,此时向量维度已大幅缩小且较为密集,因此无需编码直接计算即可。
59.由于每个时钟周期权重存储器发送的权重数据数量是一定的,所述范围缓冲器的编号范围在每个时钟周期递增,递增的数值等于权重矩阵切片中权重数据的个数。
60.所述控制单元判断所述索引缓冲器的顶部索引号是否在所述范围缓冲器的编号范围内,具体为:
61.若索引缓冲器发送来的索引值小于所述范围缓冲器中当前的值,则确定当前权重矩阵切片中有符合索引值的数据。
62.组合计算开始后,编码后的非零元素存放于index buffer中。每一个权重切片都有其数据的编号范围,若index buffer顶部索引号在当前接收到的权重切片编号范围内,则索引出切片中对应的权重数据,交由后续计算单元计算,同时弹出index buffer中顶部数据。当一个切片中有多个数据需要被索引时,需要多个时钟周期完成对该切片的操作,而每个时钟周期都会有新的切片被送来,因此形成背压。当control unit还没有完成对之前的切片的索引任务时,新来的切片被存储到weight tile buffer中,当control unit完成了当前的任务后开始判断weight tile buffer中的切片中是否有要索引的数据,没有则丢弃,有则索引,直至weight tile buffer为空。
63.由于组合计算单元将同时负责m个节点的组合计算,因此除了非零元素的坐标以外,control unit还将从index buffer发送来的数据中解码出该非零元素所属的节点,以及该非零元素的具体值。根据索引值从权重切片中取出对应的数据后,将权重数据与非零元素的具体值一起送入乘法器中,并根据非零元素所属的节点号将乘法器结果累加到对应的中间结果寄存器中。当所有权重切片发送完成后,m个中间结果寄存器中的数据为组合计算最终结果。
64.图2为切片尺寸为128,合并数量m=3时的情况。假设节点特征向量的维度为l。节点0中非零元素的行内坐标为0,3,l-4,节点128中非零元素的行内坐标值为3,l-1,节点256中非零元素的行内坐标为5。将三条节点特征向量的非零元素合并,并按照行内元素坐标的顺序从小到大排列,得到右图,其排布为(0,0),(0.3),(128,3),(256,5),(0,l-4),(128.l-1)。之后,将其放入index buffer中。假设权重切片尺寸为4,共有t个切片,每个时钟周期有一个切片送入背压索引计算单元中。组合计算开始后,第一个时钟周期第一个权重切片被送入计算单元,该切片有0-3号数据,此时index buffer顶部的索引值为0,符合要求,将切片中第0个数据取出,并与index buffer顶部数据中的非零元素值相乘,并根据节点号累加到节点0对应的中间结果寄存器中。同时,index buffer顶部数据对应的索引任务完成,被弹出。此时,切片0还不能丢弃,因为当前index buffer顶部索引值为3,下个时钟周期仍然需要索引切片0。但是此时切片1已经到来,因此切片1被缓存至weight tile buffer中,当切片0中没有需要索引的数据时,control unit将从weight tile buffer中取出堆积的数据,进行计算。当t个时钟周期后,所有的权重切片都被发送完,由于网络第一层节点特征向量的稀疏性较高,此时大多数的计算单元都已完成计算任务。
65.实施例3
66.本实施例在实施例1和实施例2的基础上,继续公开一种基于fpga背压索引式组合计算系统,如图3所示,所述系统包括预处理模块、组合计算单元阵列和若干权重存储器,其中:
67.所述预处理模块对节点特征矩阵中非零元素进行编码和存储;
68.所述组合计算单元阵列包括m
×
n的如权利要求1至7任一项所述的基于fpga的背压索引式组合计算单元,每m个节点特征向量中非零元素构成的数据将被输入到一个组合计算单元中,同一列的组合计算单元中,每一个组合计算单元将负责m个节点特征向量的组合计算;
69.所述若干权重存储器存储权重矩阵的切片,且将权重矩阵的切片以广播的方式发送到组合计算单元阵列中同一列的每个组合计算单元,每个时钟单元发送一个权重矩阵切片,所述权重存储器的个数等于权重矩阵的列数,每个权重存储器存储一列权重矩阵的数据。
70.考虑到不同数据集的节点特征向量稀疏性不同,所述预处理模块还通过对节点特征矩阵进行静态统计得到节点特征矩阵的稀疏性,根据节点特征矩阵的稀疏性,确定节点特征向量的切片融合数量m和权重矩阵的切片尺寸。
71.由于节点特征向量非零元素的不规则分布,使得该计算方案存在两种特殊情况,1)个别计算单元的最后一个切片中有多个数据要索引,导致该计算单元无法在t个时钟周期内完成;2)当权重平铺缓冲器已经存满数据时,权重平铺缓冲器的full信号拉高,组合计算单元发送反压信号至权重存储器中,暂停权重矩阵切片数据的传送和系统后续模块的工作,等待当前组合计算单元的特殊情况得到解决,即最后一个权重矩阵切片的计算任务全部完成或者权重平铺缓冲器的full信号拉低。但根据实验,特殊情况出现可能性较低,大多数情况系统的流水都不会阻塞。
72.图4为使用该方法后,不同切片尺寸和合并数量m下,组合计算单元和聚合计算单元的利用率以及不同参数下使用该方法加速器的性能提升情况。
73.相同或相似的标号对应相同或相似的部件;
74.附图中描述位置关系的用语仅用于示例性说明,不能理解为对本专利的限制;
75.显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献