基于FPGA的时空图神经网络加速器结构的制作方法

文档序号:30217797发布日期:2022-05-31 18:59阅读:179来源:国知局
基于FPGA的时空图神经网络加速器结构的制作方法
基于fpga的时空图神经网络加速器结构
技术领域
1.本发明涉及时空图数据处理领域,尤其涉及一种基于fpga的时空图神经网络加速器结构。


背景技术:

2.时空图是一种具有时间和空间的三维网络数据结构,属于动态图的一种。它广泛存在于社交网络和传感器网络等包含时间信息的图数据中。不同于静态图中每个节点和连接的信息不随时间改变,动态图具有额外的时间维度,它的节点和连接可能随时间发生变化。时空图在推荐系统、交通预测、流行病传播预测等多个方面有重要的应用和研究价值。随着数据量的不断增长,人工智能ai算法获得了极大的发展,在图像、语音、网络等多个领域被广泛应用。将ai技术与时空图结合构造时空图神经网络可以提高对动态图的高效率高性能的数据处理与分析。时空图神经网络在广泛的场景中获得应用。在城市电网中,发电站与用户通过输电线组成了复杂的传输网络,发电站的输电量需要匹配用户实时变化的耗电量,这是一个动态平衡问题。在交通网络中,城市道路也构成了复杂的网络,实时车流量的监控和预测,对于疏解道路交通拥堵具有重要意义。在社交网络中,系统需要实时应对频繁的用户与联系的创建和变化关系,捕捉用户频繁变化的关注内容,是构造高效精准的推荐系统的关键。目前常用的时空图神经网络模型有:tgcn网络,是应用于精准城市交通预测的网络模型,并结合了图卷积神经网络(gcn)和门控递归单元(gru)构造基础的单元;dcrnn网络,采用了编码解码器架构,并分别利用gcn和gru来分别提取动态图的空间和时间维度的特征信息。可见,时空图神经网络中多数采用了gcn和gru来分别处理空间和时间维度的数据,属于混合架构的神经网络模型。
3.神经网络存在计算开销大长,延迟高的问题。基于gpu的加速技术虽然可以大幅加速计算速度,但却面临着功耗大的缺陷。现有的基于fpga的加速器架构设计一般针对其中具体的一种网络结构做优化,比如:针对cnn,加速器架构设计需要处理图像识别应用中庞大的矩阵乘法运算,常见的架构设计包括构造二维脉动阵列、一维的simd向量模块、或若干处理单元pe并行的方式做计算加速;针对gru和lstm这类广泛应用于时间序列数据处理的网络模型,考虑到其中存在大量的复杂函数运算以及逐元素运算,目前尚没有统一的设计模式,常见的设计为构造若干并行pe处理单元,并构造查找表,加法树等结构对特殊函数实现加速;针对gcn,因为gcn主要用于静态图的分析,它是稠密矩阵运算和稀疏矩阵运算的混合形式,一般采用双模块并行加速的架构设计,其中稠密矩阵运算多采用二维脉动阵列做计算,而对稀疏矩阵运算会设计一维的向量模块做加速。因此,现有技术一般针对某一种神经网络结构做加速,难以适应包含多种计算样式的网络模型。而时空图神经网络作为同时包含了图卷积神经网络gcn和循环神经网络gru两种结构的模型,其计算函数包括稠密矩阵运算、稀疏矩阵运算、逐元素乘加法、多种激活函数集成等,其复杂的计算特征使得它难以在现有架构的加速器上获得良好的性能。


技术实现要素:

4.本发明要解决的技术问题在于,针对现有技术的上述只能针对某一种神经网络结构做加速,难以适应包含多种计算样式的网络模型的缺陷,提供一种基于fpga的时空图神经网络加速器结构,适用于包含了gcn和gru网络,该加速器在简洁的架构下实现高效能的稠密矩阵运算、稀疏矩阵运算、逐元素乘加法以及多种激活函数计算。
5.本发明解决其技术问题所采用的技术方案是:构造一种基于fpga的时空图神经网络加速器结构,所述时空图神经网络每层输出的计算过程是多种网络结构的融合,所述加速器结构包括:
6.向量加速模块:内部保存有所述融合函数中的稀疏矩阵,用于执行稀疏矩阵相乘或者执行逐元素乘加运算;
7.张量加速模块:可与向量加速模块并行计算,内部保存有所述融合函数中的权重参数、偏置参数、激活函数,用于顺次执行稠密矩阵相乘、偏置项相加以及不同激活函数的运算;
8.数据流控制模块:包括存储所述张量加速模块和所述向量加速模块的输出数据的数据缓存,用于基于所述数据缓存实现所述张量加速模块和所述向量加速模块之间的数据流向以便循环完成计算;
9.系统控制模块:用于控制所述张量加速模块和向量加速模块按照设定的计算时序完成与所述计算时序对应的计算。
10.优选地,所述张量加速模块包括:
11.权重存储模块和偏置存储模块,用于分别保存所述融合函数中的权重参数、偏置参数;
12.由m行n列第一计算单元构成的二维脉动矩阵乘法运算模块,用于从所述权重存储模块中获取权重参数构成的稠密矩阵,以及从所数据流控制模块的数据缓存中获取稀疏矩阵相乘得到的稠密矩阵,执行稠密矩阵相乘运算;
13.偏置相加模块,与每一行最后一个所述计算单元相接,用于将稠密矩阵相乘运算的结果加上从所述偏置存储模块中获取的对应的偏置后输出;
14.激活函数模块,与偏置相加模块相接,用于输出与所述偏置相加模块输出的结果所对应的激活函数的计算结果至所述数据流控制模块的数据缓存中。
15.优选地,所述第一计算单元包括:
16.第一寄存器和第二寄存器,均是用于将输入的数据缓存一个时钟后输出,同一行所述第一计算单元的第一寄存器共享输入,所述第一寄存器的输入来自于所述向量加速模块之前输出到所数据流控制模块的数据缓存中的数据,同一列所述第一计算单元的第二寄存器共享输入,所述第二寄存器的输入来自于所述权重存储模块;
17.第一乘法器,其两个输入分别与所述第一寄存器和所述第二寄存器的输出连接,用于将输入的两个数据相乘后输出;
18.累加器,与所述第一乘法器的输出连接,用于将不同时钟输入的数据累加;
19.实现多路输入到单路输出的第一选通器,其第一路输入连接所述累加器的输出,每一行所述第一计算单元对应的一行第一选通器中:后一个第一选通器的第二路输入与前一个第一选通器的输出连接,第一个第一选通器的第二路输入为0,最后一个第一选通器的
输出连接至所述偏置相加模块的输入。
20.优选地,在所述张量加速模块完成与所述计算时序对应的计算的过程中:第一选通器交替工作于计算阶段和输出阶段:在计算阶段,第一选通器选择第二路输入的数据输出;在输出阶段,第一选通器首先选择第一路输入的数据输出,以把所述累加器的计算结果加载到输出数据线上,然后选择第二路输入的数据输出,使得各个累加器的计算结果沿输出数据线依次传递到所述偏置相加模块。
21.优选地,所述激活函数模块内存储了各种可能的输入所对应的激活函数值,所述激活函数模块以输入作为地址直接读出激活函数值作为输出。
22.优选地,所述向量加速模块包括:
23.稀疏矩阵存储模块,用于保存所述融合函数中的稀疏矩阵;
24.由k个第二计算单元构成的并联同构计算模块,用于从所述稀疏矩阵存储模块获取的稀疏矩阵,从所述数据流控制模块的数据缓存中获取的图层输入信息、激活函数的运算结果、之前通过逐元素乘加运算得到的结果,执行稀疏矩阵相乘或者执行逐元素乘加运算,并将计算结果输出至所述数据流控制模块的数据缓存中。
25.优选地,所述第二计算单元包括:
26.实现多路输入到单路输出的第二选通器,其第一路输入的数据来自于所述稀疏矩阵存储模块,其第二路输入为1;
27.实现单路输入到多路输出的第三选通器,其输入的数据来自于所述数据流控制模块的数据缓存;
28.第三寄存器、第四寄存器和第五寄存器,均是用于将输入的数据缓存一个时钟后输出;
29.第二乘法器和第三乘法器,均用于将输入的两个数据相乘后输出,所述第三选通器的第一路输出经由所述第五寄存器连接所述第二乘法器的一个输入,所述第三选通器的第二路输出连接所述第二乘法器的另一个输入,所述第二选通器的输出顺次经由第三寄存器和第四寄存器连接到所述第三乘法器的一个输入,第二乘法器的输出连接所述第三乘法器的另一个输入;
30.累加/减器,其输入连接所述第三乘法器的输出,用于将不同时钟输入的数据累加/减后输出到所述数据流控制模块的数据缓存。
31.优选地,所述第二计算单元用于执行如下三种运算:
32.第一种运算:计算ab,a、b被同时钟分别输入所述第二选通器的第一路输入、第三选通器的输入,第二选通器选择第一路输入给到输出,第三选通器将输入选择从第一路输出通过且第二路输出为1;
33.第二种运算:计算a(c

d),数据流以c、d按照排列顺序依次交替输入第三选通器的输入中,第三选通器选择将输入从第一路输出和第二路输出交替通过,a输入所述第二选通器的第一路输入,a与c是同时钟输入,第二选通器选择第一路输入给到输出;
34.第三种运算:计算f

e+(1-f)

g,数据流以e、f、g按照排列顺序依次交替输入第三选通器的输入中,第二选通器选择第二路输入给到输出,第三选通器以三个时钟为周期重复一次如下操作:先将输入选择从第一路输出通过,再将输入切换到同时从第一路和第二路通过,继续将输入选择同时从第一路和第二路通过;
35.其中,a、b、c、d、e、f都是向量格式的数据,且a是存储为csr格式的稀疏矩阵。
36.优选地,所述时空图神经网络包括gcn、gru两种网络结构,两种网络结构的融合函数是:
[0037][0038][0039][0040][0041]
是时空图的稀疏矩阵,表示在网络t时刻的图层输入信息,是网络两个相邻时刻的图层输出信息,σ、tanh是不同的激活函数,θr、θz、是权重参数,br、bz、是偏置参数,l代表图层,t、t-1代表两个相邻时刻中的后一个时刻和前一个时刻;
[0042]
所述向量加速模块负责的计算,所述张量加速模块负责的计算,所述系统控制模块针对每一个图层l的每一个时刻t的数据,控制所述张量加速模块和向量加速模块按照如下时序执行如下的一轮计算:先计算和再计算再同步并行计算和再计算再计算
[0043]
本发明的基于fpga的时空图神经网络加速器结构,具有以下有益效果:本发明设计了张量和向量双加速模块并行处理的方式,向量加速模块执行稀疏矩阵相乘或者执行逐元素乘加运算,张量加速模块执行稠密矩阵相乘、偏置项相加以及不同激活函数的运算,而且系统控制模块控制所述张量加速模块和向量加速模块按照设定的计算时序完成与所述计算时序对应的计算,数据流控制模块控制张量加速模块和所述向量加速模块之间的数据流向以便循环完成计算,整个架构的设计实现了对三维时空图神经网络的高效处理,以简洁的方式实现了多功能函数的计算;由于可以实现多种神经网络模式的加速计算,本发明在应用时空图神经网络计算的同时,可以向下兼容图卷积神经网络gcn和门控递归单元gru等多种网络模型的加速,具备了更强的普适性。
附图说明
[0044]
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图:
[0045]
图1是本发明基于fpga的时空图神经网络加速器结构的结构示意图;
[0046]
图2是第二计算单元的结构示意图;
[0047]
图3是向量加速模块在执行第一种计算时输入输出示意图;
[0048]
图4是执行第一种计算时第二计算单元内部的工作过程示意图;
[0049]
图5是向量加速模块在执行第二种计算时输入输出示意图;
[0050]
图6是执行第二种计算时第二计算单元内部的工作过程示意图;
[0051]
图7是执行第三种计算时第二计算单元内部的工作过程示意图;
[0052]
图8是第一计算单元的结构示意图;
[0053]
图9是张量加速模块在执行计算时输入输出示意图;
[0054]
图10是执行稠密矩阵相乘运算的过程示意图;
[0055]
图11是执行计算时第一行的第一计算单元内部的工作过程示意图。
具体实施方式
[0056]
为了解决既有的现有技术的只能针对某一种神经网络结构做加速,难以适应包含多种计算样式的网络模型的缺陷,本发明设计了基于fpga的时空图神经网络加速器结构,设计了张量和向量双加速模块并行处理的方式,向量加速模块执行稀疏矩阵相乘或者执行逐元素乘加运算,张量加速模块执行稠密矩阵相乘、偏置项相加以及不同激活函数的运算,而且系统控制模块控制所述张量加速模块和向量加速模块按照设定的计算时序完成与所述计算时序对应的计算,数据流控制模块控制张量加速模块和所述向量加速模块之间的数据流向以便循环完成计算,整个架构的设计实现了对三维时空图神经网络的高效处理,以简洁的方式实现了多功能函数的计算;由于可以实现多种神经网络模式的加速计算,本发明在应用时空图神经网络计算的同时,可以向下兼容图卷积神经网络gcn和门控递归单元gru等多种网络模型的加速,具备了更强的普适性。
[0057]
为了便于理解本发明,下面将参照相关附图对本发明进行更全面的描述。附图中给出了本发明的典型实施例。但是,本发明可以以许多不同的形式来实现,并不限于本文所描述的实施例。相反地,提供这些实施例的目的是使对本发明的公开内容更加透彻全面。应当理解本发明实施例以及实施例中的具体特征是对本技术技术方案的详细的说明,而不是对本技术技术方案的限定,在不冲突的情况下,本发明实施例以及实施例中的技术特征可以相互组合。
[0058]
参考图1,是本发明基于fpga的时空图神经网络加速器结构的结构示意图,比如所述时空图神经网络包括gcn、gru两种网络结构。所述时空图神经网络每层输出的计算过程是多种网络结构的融合,比如gcn、gru两种网络结构的融合函数是:
[0059][0060]
其中,是时空图的稀疏矩阵,表示在网络t时刻的图层输入信息,是网络两个相邻时刻的图层输出信息,σ、tanh是不同的激活函数,θr、θz、是权重参数,br、bz、是偏置参数,l代表图层,假设图层总共有l层,则l的取值可以是1~l,t、t-1代表两个相邻时刻中的后一个时刻和前一个时刻,假设每一个图层有y个时刻的数据,则t的取值可以是1~y。
[0061]
本发明基于fpga的半可定制化的优势,对以上时空图神经网络模型设计加速器结构,包括:向量加速模块100、张量加速模块200、数据流控制模块300、系统控制模块400、数
据传输管理模块500。
[0062]
向量加速模块100:内部保存有所述融合函数中的稀疏矩阵,用于基于所述稀疏矩阵、图层输入信息、张量加速模块200的输出,执行稀疏矩阵相乘或者执行逐元素乘加(这里的加,指的是广义上的加,实际包括狭义上的加法、减法运算)运算;
[0063]
张量加速模块200:可与向量加速模块100并行计算,内部保存有所述融合函数中的权重参数、偏置参数、激活函数,用于基于所述权重参数、偏置参数、激活函数以及所述向量加速模块100的输出,顺次执行稠密矩阵相乘、偏置项相加以及不同激活函数的运算;
[0064]
数据流控制模块300:包括存储所述张量加速模块200和所述向量加速模块100的输出数据的数据缓存,用于基于所述数据缓存实现所述张量加速模块200和所述向量加速模块100之间的数据流向以便循环完成计算;
[0065]
系统控制模块400:用于控制所述张量加速模块200和向量加速模块100按照设定的计算时序完成与所述计算时序对应的计算。
[0066]
数据传输管理模块500,用于实现与外部的数据通信,包括获取外部下发的所述稀疏矩阵、权重参数、偏置参数、激活函数、图层输入信息,并通过所述数据流控制模块300发放到对应的位置保存,以及通过所述数据流控制模块300获取将最终的计算结果发给外部。
[0067]
下面对各个模块进行详细介绍。
[0068]
1)向量加速模块100,其主要包括:
[0069]
稀疏矩阵存储模块,用于保存所述融合函数中的稀疏矩阵,即公式(1)中的优选以使用片上ram以csr格式保存。
[0070]
由k个第二计算单元构成的并联同构计算模块,用于从所述稀疏矩阵存储模块获取的稀疏矩阵从所述数据流控制模块300的数据缓存中获取的图层输入信息激活函数σ、tanh的运算结果、之前通过逐元素乘加运算得到的结果执行稀疏矩阵相乘或者执行逐元素乘加运算,并将计算结果输出至所述数据流控制模块300的数据缓存中。
[0071]
比如本实施例中所述向量加速模块100负责比如本实施例中所述向量加速模块100负责的四个计算,其中的由张量加速度计算模块的计算结果提供。属于稀疏矩阵相乘运算,属于稀疏矩阵相乘运算,包含两个逐元素乘法运算,一个逐元素加法和一个减法运算,涉及一个稀疏矩阵相乘运算和一个逐元素乘法运算。
[0072]
以上的四个计算实际上可以归类为如下三种运算:
[0073]
第一种运算:计算ab,比如x取来自于图层输入信息或者之前通过第三种运算得到的结果a取则可以实现要实现的计算。
[0074]
第二种运算:计算a(c

d),比如如果a取c取d取则可以实现的计算。
[0075]
第三种运算:计算f

e+(1-f)

g,比如如果f取e取d取则可以实现的计算。
[0076]
参考图2,为了实现一种结构可以同时兼顾以上三种计算,本实施例特意设计了图2所示的第二计算单元,图中ai表示输入向量a的一个元素,bi表示输入向量b的一个元素,oi表示ab的输出结果。具体来说,第二计算单元包括:
[0077]
实现多路输入到单路输出的第二选通器11a,其第一路输入的数据即a,本实施例中具体是来自于所述稀疏矩阵存储模块,其第二路输入为1。在计算第一种和第二种运算时,第二选通器11a都是选择第一路输入输出,即都是输出a,在计算第三种运算时第二选通器11a都是选择第二路输入输出,即都是输出1。
[0078]
实现单路输入到多路输出的第三选通器11b,其输入的数据即b,本实施例中具体是来自于所述数据流控制模块300的数据缓存。在计算第一种运算时,第三选通器11b始终将输入从第一路输出通过,第二路输出为1。
[0079]
第三寄存器12a、第四寄存器13a和第五寄存器12b,均是用于将输入的数据缓存一个时钟后输出;
[0080]
第二乘法器13b和第三乘法器14,均用于将输入的两个数据相乘后输出,所述第三选通器11b的第一路输出经由所述第五寄存器12b连接所述第二乘法器13b的一个输入,所述第三选通器11b的第二路输出连接所述第二乘法器13b的另一个输入,所述第二选通器11a的输出顺次经由第三寄存器12a和第四寄存器13a连接到所述第三乘法器14的一个输入,第二乘法器13b的输出连接所述第三乘法器14的另一个输入;
[0081]
累加/减器15,其输入连接所述第三乘法器14的输出,用于将不同时钟输入的数据累加/减后输出到所述数据流控制模块300的数据缓存,具体是累加还是累减,要看执行的是哪一种运算,比如第一种和第二种运算都是累加,而第三种运算既有累加也有累减。
[0082]
下面结合以上结构具体描述以上三种运算的计算过程:
[0083]
第一种运算:计算ab,a、b被同时钟分别输入所述第二选通器11a的第一路输入、第三选通器11b的输入,第二选通器11a选择第一路输入给到输出,第三选通器11b将输入选择从第一路输出通过且第二路输出为1。
[0084]
比如说,以a取b取为例,为了方便展示,假设是一个1x5的稀疏矩阵,只有前三列为非零元素,即假设只有前三列为非零元素,即假设则此时向量加速模块100的输入输出如图3,向量中的非零元素按顺序依次喂入,零元素直接过滤掉不喂入,相应的,向量中与中非零元素位置对应的元素被喂入,即(a1,a2,a3),(f1,f2,f3)和(h1,h2,h3)均是一个时钟喂入一个。我们单独以的计算为例进行说明:参考图4,此时属于第一种运算,第二选通器11a始终输出第一路输入(所以另一路输入省略),第三选通器11b的输入始终从第一路输出通过,第二路输出始终为1,
的第一个元素a1、h1被同时钟分别喂入所述第二选通器11a、第三选通器11b;下一个时钟到来时,第二选通器11a将a1输出到第三寄存器12a,第三选通器11b将h1输出到第五寄存器12b,第二选通器11a、第三选通器11b被分别喂入a2、h2;下一个时钟到来时,第三寄存器12a内的a1输出到第四寄存器13a,第三寄存器12a内被喂入a2,第五寄存器12b内的h1输到第二乘法器13b,第五寄存器12b内的被喂入h2,第二选通器11a、第三选通器11b被分别喂入a3、h3;再下一个时钟到来时,第四寄存器13a的a1输出到第三乘法器14,第三寄存器12a内的a2输出到第四寄存器13a,第三寄存器12a内被喂入a3,同时第二乘法器13b将h1输出到第三乘法器14,第五寄存器12b内的h2输到第二乘法器13b,第五寄存器12b内的被喂入h3,第三乘法器14将输入的a1和h1相乘;以此类推,参考图4,最终累加/减器15会将a1h1、a2h2、a3h3累加起来输出到数据缓存。
[0085]
第二种运算:计算a(c

d),数据流以c、d按照排列顺序依次交替输入第三选通器11b的输入中,第三选通器11b选择将输入从第一路输出和第二路输出交替通过,a输入到所述第二选通器11a的第一路输入,同理,a将非零元素顺次输入,零元素直接过滤掉不喂入,c、d中与a中非零元素位置对应的元素才被喂入,与a中零元素对应位置对应的元素也是直接过滤。a是间隔一个时钟喂入一个,且a与c是同时钟输入。第二选通器11a选择第一路输入给到输出;
[0086]
比如说,以a取c取d取为例,简单起见,假设是一个1x4的稀疏矩阵,且后两位为零,即假设则此时向量加速模块100的输入输出如图5,向量中的非零元素是按照顺序每隔一个时钟喂入一个,中与中非零元素位置对应的元素被交替喂入。参考图6,此时属于第二种运算,第二选通器11a始终输出第一路输入(所以另一路输入省略),与r的元素总是同时钟输入所述第二选通器11a的第一路输入,即a1是与r1同步喂入的,a2是与r2同步喂入的。在喂入a1、r1到第二选通器11a、第三选通器11b后,下一个时钟到来时,第二选通器11a将a1输出到第三寄存器12a,第三选通器11b将r1输出到第五寄存器12b,第三选通器11b被喂入h1,因为与r的元素总是同时钟输入,所以第二选通器11a此时没有喂入什么数据;下一个时钟到来时,第三寄存器12a将a1输出到第四寄存器13a,第五寄存器12b将r1输出到第二乘法器13b,同时第三选通器11b的输出被切换到第二路,即第三选通器11b内的h1直接输出到第二乘法器13b,第二乘法器13b即可计算r1h1,第三选通器11b被喂入r2,同时第二选通器11a被喂入a2;下一个时钟到来时,第四寄存器13a内的a1输出到第三乘法器14,同时第二乘法器13b的r1h1也输出到第三乘法器14,第三乘法器14即可计算a1r1h1,第三选通器11b的输出又切换回第一路,即r2输出到第五寄存器12b,第三选通器11b被喂入h2,同时第二选通器11a的a2输出到第三寄存器12a;依次类推,最终累加/减器15会将a1r1h1、a2r2h2累加起来输出到数据缓存。
[0087]
第三种运算:计算f

e+(1-f)

g,数据流以e、f、g按照排列顺序依次交替输入第
三选通器11b的输入中,第二选通器11a选择第二路输入给到输出,第三选通器11b以三个时钟为周期重复一次如下操作:先将输入选择从第一路输出通过,再将输入切换到同时从第一路和第二路通过,继续将输入选择同时从第一路和第二路通过;
[0088]
比如说,以f取e取d取为例。假设为例。假设此时属于第三种运算,参考图7,第二选通器11a始终输出第二路输入(所以另一路输入省略),即第二选通器11a始终输出1。在喂入h1到第三选通器11b后,下一个时钟到来时,h1仅从第一路输出到第五寄存器12b,第三选通器11b被喂入z1;下一个时钟到来时,第五寄存器12b输出h1到第二乘法器13b,第三选通器11b两路输出同时有效,即同时输出z1,一路送入第二乘法器13b,一路放入第五寄存器12b,第二乘法器13b即可计算z1h1,第三选通器11b被喂入hh1;下一个时钟到来时,z1h1往后送入第三乘法器14,第三选通器11b还是维持两路输出同时有效,因此第五寄存器12b内放的是hh1,第二乘法器13b计算hh1z1
……
参考图7,最后h1z1率先到达累加/减器15,待hh1z1到达时,累加/减器15会计算h1z1-hh1z1,待下一个hh1到达时,再加上hh1得到h1z1-hh1z1+hh1=h1z1+(1-z1)hh1,以此类推,最后计算得到h1z1+(1-z1)hh1+h2z2+(1-z2)hh2,后续部分因为篇幅受限,附图7未继续展开。
[0089]
2)张量加速模块200,其包括:
[0090]
权重存储模块和偏置存储模块,用于分别保存所述融合函数中的权重参数、偏置参数;
[0091]
由m行n列第一计算单元构成的二维脉动矩阵乘法运算模块,用于从所述权重存储模块中获取权重参数构成的稠密矩阵,以及从所数据流控制模块300的数据缓存中获取稀疏矩阵相乘得到的稠密矩阵,执行稠密矩阵相乘运算;
[0092]
偏置相加模块,与每一行最后一个所述计算单元相接,用于将稠密矩阵相乘运算的结果加上从所述偏置存储模块中获取的对应的偏置后输出;
[0093]
激活函数模块,与偏置相加模块相接,用于输出与所述偏置相加模块输出的结果所对应的激活函数的计算结果至所述数据流控制模块300的数据缓存中。
[0094]
比如本实施例中所述张量加速模块200负责比如本实施例中所述张量加速模块200负责的运算,这三个计算都是属于同一种运算:f(qw+b),q、w表示两个稠密矩阵,qw属于稠密矩阵相乘计算,b表示偏置参数,f()表示激活函数。q的取值中的算,b表示偏置参数,f()表示激活函数。q的取值中的都是来自向量加速度模块的计算结果。w的取值是br、bz、中的一个,f()的取值有σ、tanh。qw由大量的第一计算单元完成,输出的结果在输入偏置相加模块加上对应的偏置参数br、bz、中的一个后输出到激活函数模块,激活函数模块根据在输入上选择对应的激活函数σ、tanh中的一个得到结果,放入数据缓存中。显然,具体加哪个偏置参数、选哪个激活函数是看张量加速模块200当前所执行的具体是哪两个稠密矩阵相乘。
[0095]
参考图8,图中yi表示稠密矩阵q的一个元素,wi表示稠密矩阵w的一个元素,oi表
示前一个第一计算单元的输出,oi+1表示当前第一计算单元的输出。具体来说,第二计算单元包括:
[0096]
所述第一计算单元包括:
[0097]
第一寄存器21a和第二寄存器21b,均是用于将输入的数据缓存一个时钟后输出,同一行所述第一计算单元的第一寄存器21a共享输入,所述第一寄存器21a的输入来自于所述向量加速模块100之前输出到所数据流控制模块300的数据缓存中的数据,同一列所述第一计算单元的第二寄存器21b共享输入,所述第二寄存器21b的输入来自于所述权重存储模块。q矩阵的第i行送入第i行第二计算单元的第一寄存器21a,w矩阵的第i列送入第i列第二计算单元的第二寄存器21b。
[0098]
第一乘法器22,其两个输入分别与所述第一寄存器21a和所述第二寄存器21b的输出连接,用于将输入的两个数据相乘后输出;
[0099]
累加器23,与所述第一乘法器22的输出连接,用于将不同时钟输入的数据累加;
[0100]
实现多路输入到单路输出的第一选通器24,其第一路输入连接所述累加器23的输出,每一行所述第一计算单元对应的一行第一选通器24中:后一个第一选通器24的第二路输入与前一个第一选通器24的输出连接,第一个第一选通器24的第二路输入为0,最后一个第一选通器24的输出连接至所述偏置相加模块的输入。
[0101]
其中,在所述张量加速模块200完成与所述计算时序对应的计算的过程中:第一选通器24交替工作于计算阶段和输出阶段:在计算阶段,第一选通器24选择第二路输入的数据输出;在输出阶段,第一选通器24首先选择第一路输入的数据输出,以把所述累加器23的计算结果加载到输出数据线上,然后选择第二路输入的数据输出,使得各个累加器23的计算结果沿输出数据线依次传递到所述偏置相加模块。
[0102]
下面以q取wr取br,f()取σ为例,即以为例,结合上述的结构描述第一计算单元的计算过程:假设向量加速度模块之前算出的则意味着假设则此时张量加速模块200的输入输出如图9。参考图10,每一个框代表一个第一计算单元,一个时钟到来时,a11同时输入第一行的两个第一计算单元,a21同时输入第二行的两个第一计算单元,w11同时输入第一列的两个第一计算单元,w12同时输入第二列的两个第一计算单元,具体输入过程参考图10,不再赘述。参考图11单独以第一行的两个第一计算单元为例详细示意了第一计算单元内部的工作过程,在计算阶段,因为第一选通器24选择第二路输入的数据输出,所以累加器23内的数据一直在累加,当累加完毕时,在输出阶段第一选通器24首先选择第一路输入的数据输出,以把所述累加器23的计算结果加载到输出数据线上,然后选择第二路输入的数据输出,使得各个累加器23的计算结果沿输出数据线依次往右传递。
[0103]
优选地,本实施例的所述激活函数模块内存储了各种可能的输入所对应的激活函数值,所述激活函数模块以输入作为地址直接读出激活函数值作为输出,也就是说,不是临时通过激活函数去计算,而是直接从输入所对应的地址中取结果,因此节约计算资源和减少延迟。
[0104]
3)数据流控制模块300:
[0105]
其具有存储所述张量加速模块200和所述向量加速模块100的输出数据的数据缓存,用于基于所述数据缓存实现所述张量加速模块200和所述向量加速模块100之间的数据流向以便循环完成计算。
[0106]
为了便于理解,图1中为所述张量加速模块200和所述向量加速模块100分别配置了一个数据流控制模块300。左边的数据流控制模块300,主要负责向量加速模块100的数据流入流出的控制,其对应的数据缓存主要负责向量加速模块100的输出数据到张量加速度模块的过渡,以便于张量加速模块200可以接下来拿来参与计算。同理,右边的数据流控制模块300,主要负责张量加速模块200的数据流入流出的控制,其对应的数据缓存主要负责张量加速模块200的输出数据到向量加速度模块的过渡,以便于向量加速模块100可以接下来拿来参与计算。
[0107]
4)系统控制模块400:用于控制所述张量加速模块200和向量加速模块100按照设定的计算时序完成与所述计算时序对应的计算。
[0108]
每一个数据有两个维度的标志:一个是时刻,我们先按照时刻顺序计算,即先计算第一时刻的数据,在计算下一个时刻的数据;另一个是图层,因为图层有多层,每一图层的数据都是包含多个时刻的数据,所以,在计算每一个时刻的数据时,我们还要按照图层顺序计算,比如说计算第一个时刻的数据过程是:先取第一个图层第一个时刻的数据执行一轮计算,再取第二个图层第一个时刻的数据执行一轮计算,依次类推;当所有图层第一个时刻的数据都分别执行一轮计算后,再取第一个图层第二个时刻的数据执行一轮计算,再取第二个图层第二个时刻的数据执行一轮计算,以此类推。
[0109]
比如说,本实施例中设定的计算时序如下表1:
[0110]
表1计算时序表
[0111][0112]
结合表1,所述系统控制模块400针对每一个图层l的每一个时刻t的数据,控制所述张量加速模块200和向量加速模块100按照如下时序执行如下的一轮计算:
[0113]
1)先利用向量加速模块100同时计算和
[0114]
2)再利用张量加速模块200计算和是上步骤1)中向量加速模块100计算所得,被放入数据缓存中,在数据流控制模块300的控制下会将缓存中的和喂入张量加速模块200,同时θr也会被喂入张量加速模块200;
[0115]
3)再利用张量加速模块200计算利用向量加速模块100同步并行计算
[0116]
4)再利用张量加速模块200计算
[0117]
5)最后利用向量加速模块
[0118]
优选的,为了进一步提高计算效率,可以将后一轮计算过程中的与前一轮计算过程中的同步并行计算,如表2:
[0119]
表2改进的计算时序表
[0120][0121]
需要注意的是,本文每一轮的l、t不是完全相同的,比如对于总共有l=10个图层,y=100个时刻,当某一轮计算的是l=5时、t=55时,则下一轮的l是6,t还是55。同理,某一轮l=l=10时,则下一轮t会加一、l也从头开始。
[0122]
5)数据传输管理模块500:
[0123]
其可通过pcie总线实现与外部的数据通信,包括获取外部下发的所述稀疏矩阵权重参数(θr、θz、)、偏置参数(br、bz、)、激活函数(σ、tanh)、图层输入信息并通过所述数据流控制模块300发放到对应的位置保存,以及通过所述数据流控制模块300获取将最终的计算结果发给外部。最终的计算输出结果是返回到输出的数据缓存中,并由数据传输管理模块500控制通过pcie总线发送中断信号,传输回主机端获得结果。
[0124]
本发明在计算时,将图层输入信息通过pcie发送到数据缓存中,进入fpga片内数据流循环,张量加速模块200、向量加速模块100并行执行计算任务,其计算流程图展示在表1或2中,张量加速模块200完成时空图神经网络中r,z,h的计算,向量加速模块100完成最终输出结果h和中间稀疏乘法的运算等,数据通过数据流控制模块300和缓存在两模块之间循环完成计算,两模块并行的计算方式极大提高了片上资源的利用效率,两个模块计算时的数据都是一个一个喂入,无需等待计算结果,即通过全流水线技术实现数据和任务并行,提高实时计算的吞吐量。特别是向量加速模块100,设计了兼顾多种计算的结构,控制多路选通器,能够实现在稀疏矩阵和逐元素乘加的多种运算间自由切换的目的,能够以这种简洁的架构设计达到多种复杂函数的计算。总而言之,本发明设计了多功能的并联同构向量加速模块100,在简洁的架构设计下以全流水线的方式实现了稀疏矩阵乘法,逐元素乘加法等多种函数运算的集成,设计了向量加速模块100和张量加速模块200并行处理的架构,实现了三维时空图神经网络计算的加速,由于可以实现多种神经网络模式的加速计算,本发明在应用时空图神经网络计算的同时,可以向下兼容图卷积神经网络gcn和门控递归单元gru等多种网络模型的加速,具备了更强的普适性。
[0125]
本发明已经基于fpga板卡完成了模型移植,实验结果证明了方案的可行性。通过对交通数据集metra-la进行测试,本发明的实时计算峰值为124gflops,运行时功耗为12.9w。与cpu和gpu进行对比,速度比cpu快了1.47倍,功耗比相比cpu,gpu分别提高6.5倍、
3.8倍,实现了对时空图神经网络高效能低功耗的加速目标。
[0126]
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。
[0127]
本说明书中使用的“第一”、“第二”等包含序数的术语可用于说明各种构成要素,但是这些构成要素不受这些术语的限定。使用这些术语的目的仅在于将一个构成要素区别于其他构成要素。例如,在不脱离本发明的权利范围的前提下,第一构成要素可被命名为第二构成要素,类似地,第二构成要素也可以被命名为第一构成要素。
[0128]
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1