混合精度稀疏矩阵加速计算脉动阵列架构及数据处理方法
未命名
09-03
阅读:105
评论:0

1.本发明涉及计算机微体系结构领域,更具体的说是涉及一种混合精度稀疏矩阵加速计算脉动阵列架构及数据处理方法。
背景技术:
2.目前,在深度学习领域,由于网络参数量非常大、数据依赖关系复杂以及计算方式多样,对硬件的数据存储、数据传输以及数据计算能力有相当高的要求。为了能够在硬件平台上部署深度神经网络,往往采用数据压缩的方式来表示稀疏矩阵,而后对压缩后的稀疏矩阵进行计算。
3.稀疏矩阵计算随着矩阵的稀疏度下降,排布更加没有规律。理想中的稀疏计算,是随着稀疏度降低,所需要进行的计算也会变少,从而计算数据的时间也会相应降低。但是目前的硬件结构,对于稀疏矩阵计算的适应性较差,往往会出现随着矩阵稀疏度无规律地降低,硬件计算延迟下降较低以及部分硬件计算延迟增高的问题,而且由于硬件利用率不高会产生边际效应递减。
4.虽然采用脉动阵列进行矩阵运算能够有效的减少数据流动带来的存储访问,最大限度地利用流水线进行计算。但是以前的脉动阵列对于稀疏矩阵不支持或者是支持不够好,导致性能受限。
5.而且目前的计算结构往往按照传统的数据结构,仅支持单双精度浮点数和8、16、32bit定点数,对于低bit数据和混合bit数据的支持能力很差,在实际计算过程中,造成了很大冗余存储空间和计算单元的浪费,从而很难部署较大参数量模型,且在实际部署混合bit模型的时候,很难达到算法推导的存储资源消耗量和计算资源使用量,产生大量的存储资源和计算资源浪费。
6.因此,如何对脉动阵列进行改进,以克服上述缺陷,是本领域技术人员亟需解决的问题。
技术实现要素:
7.有鉴于此,本发明提供了一种混合精度稀疏矩阵加速计算脉动阵列架构及数据处理方法,在兼容多精度数据处理的同时减少稀疏矩阵数据在脉动阵列上的传输延迟,提高混合精度稀疏矩阵的处理速度。
8.为了实现上述目的,本发明采用如下技术方案:
9.一方面,本发明公开了一种混合精度稀疏矩阵加速计算脉动阵列架构,包含网状连接的处理单元,所述处理单元包括依次相连的动态数据匹配和驱动模块、混合精度乘加模块和结果输出模块,
10.所述动态数据匹配和驱动模块,具有两个数据输入通道和多个数据输出通道,用于接收数据流进行匹配,以及将接收的数据流在脉动阵列架构内进行传输;其中所述数据流端部具有行/列标识;
11.所述混合精度乘加模块,用于接收并对匹配完成的数据进行乘累加,得到乘累加结果,并根据所述数据流的行/列标识得到累加结果地址,将所述累加结果地址和所述乘累加结果拼接后传输至结果输出模块;
12.所述结果输出模块,用于根据所述累加结果地址输出所述乘累加结果。
13.作为优选,传输驱动包括将匹配好的数据传输至混合精度乘加模块,以及将接收的数据流通过数据输出通道传出。
14.作为优选,数据流在输入前先进行压缩,包括:
15.提取数据流中非0数据,并确定所述非0数据的值、偏移地址和位置标识;
16.所述偏移地址为所述非0数据在数据流中的位置序号,所述位置标识包括:eof_pack,所述eof_pack为1时,表示所述数据为数据流中最后一个非0数据。
17.作为优选,还包括根据所述动态数据匹配和驱动模块的缓存区大小,对所述非0数据进行分组,并将每组中最后一个非0数据的eof_group位置置为1,其余置为0。
18.作为优选,数据流的匹配过程包括:
19.当数据流一中数据的偏移地址等于数据流二中数据的偏移地址时,将两个数据共同传输至所述混合精度乘加模块进行乘累加计算;
20.当数据流一中数据的偏移地址小于数据流二中数据的偏移地址时,则保留数据流二中数据的偏移地址,获取数据流一中下一个数据的偏移地址进行比较;
21.当数据流一中数据的偏移地址大于数据流二中数据的偏移地址时,则保留数据流一中数据的偏移地址,获取数据流二中下一个数据的偏移地址进行比较。
22.作为优选,所述混合精度乘加模块,用于对匹配完成的数据流元素进行乘加计算,其中:
23.当eof_group为0,eof_pack为0时,判定为组内数据进行运算;
24.当eof_group为0,eof_pack为1时,判定为数据流的行/列标识;
25.当eof_group为1,eof_pack为0时,判定本组运算结束,切换至下一组继续进行乘累加运算;
26.当eof_group为1,eof_pack为1时,判定数据流的运算结束。
27.作为优选,对匹配完成的数据进行乘累加时,根据数据中元素的位宽和数据处理通路结构,确定同时载入的匹配完成的数据中元素数量,并将载入的元素进行拼接后通过混合精度乘加模块进行计算。
28.另一方面,本发明还公开了一种混合精度稀疏矩阵加速计算数据处理方法,其特征在于,包括:
29.s1、获取并对待处理的矩阵数据流一和矩阵数据流二进行压缩,包括提取数据流中非0数据,并确定所述非0数据的值、偏移地址和位置标识;
30.s2、根据所述偏移地址,对所述矩阵数据流一和矩阵数据流二中的数据进行匹配,
31.s3、对匹配完成的数据经乘累加计算,根据所述位置标识确定计算是否结束,同时,根据数据流的行/列标识得到累加结果地址,将所得结果与所述累加结果地址进行拼接;
32.s4、根据所述累加结果地址,输出所述计算结果。
33.该脉动阵列结构是由多个结构相同的处理单元pe组成的网络,每一个pe为网络中
的一个节点,每一个节点都能够与多个下一级节点传输压缩后的稀疏数据,已经完成向下一级节点数据传输但是未完成匹配和处理的数据缓存在当前节点用于后续的运算,得到上一级节点传输的数据进入当前pe自己的数据缓冲区。处理单元pe通过匹配参与计算的稀疏数据偏移地址信息来选取需要计算的数据进行计算,并在计算完成后根据数据的配置信息来决定是否对数据进行累加,在累加过程完成后,该阵列能够自动地将计算结果从脉动阵列中转发出来。该脉动阵列在内部传输数据时采用数据传输优先的规则,而非数据匹配优先的规则,能够在上级节点计算数据的同时,完成向下级节点分发数据的任务,从而减少了数据在脉动阵列中流动的延时,提高了资源利用率,提高了整体的计算速度。
34.所述脉动阵列架构,处理单元pe可以为一维脉动阵列,二维脉动阵列或者三维脉动阵列。
35.所述的网络节点处理单元pe包括动态数据匹配和驱动模块dmd、混合精度乘加模块mpmac、结果输出模块ro;
36.所述动态数据匹配和驱动模块,用于将压缩后的稀疏数据流在脉动阵列架构中的数据匹配和数据传输驱动,对尚未完成数据匹配操作的输入数据进行缓存等待数据匹配计算;
37.所述混合精度乘加模块,接收数据匹配模块中成功匹配的数据,识别匹配的计算数据位宽,送入相应的计算通路中进行乘法和累加操作,并在计算结束后将累加结果输出到结果输出模块;
38.所述结果输出模块,根据当前行列数据流所对应的地址计算累加结果地址,将混合精度的乘加模块计算的结果按照设定的数据流排布规则输出到阵列之外,生成结果数据流,存回缓存用于下一步计算。
39.所述处理单元pe,可为同步时序电路,也可为异步时序电路。
40.所述处理单元pe,有两个数据输入通道和三个数据输出通道;
41.两个数据输入通道分别为待处理的稀疏矩阵压缩重排后的数据流,用于稀疏矩阵运算的加速,所述的稀疏矩阵运算加速的脉动阵列结构同样适用于稠密矩阵的运算;
42.三个数据输出通道分别为两个数据流向相邻pe的数据流通通道和一个计算结果输出通道,倘若是一维脉动阵列,则只有一个数据流通通道,倘若是三维脉动阵列,则有三个数据流通通道。
43.所述的稀疏矩阵压缩重排后的数据流运算包括稀疏向量与稀疏向量压缩的运算、稀疏矩阵与稀疏向量的运算、稀疏矩阵与稀疏矩阵的运算。
44.所述的稠密矩阵运算包括稀疏矩阵和稠密矩阵的运算,稠密矩阵与稠密矩阵的运算,稀疏向量与稠密向量的运算。
45.所述的处理单元pe,输入的数据流是统一精度的,但是能够适用于多种精度数据的计算。
46.所述的处理单元pe,能够用于定点数据的计算。
47.所述的处理单元pe,能够用于浮点数据的计算。
48.所述的处理单元pe,能够用于1bit-16bit混合精度数据的计算。
49.所述的处理单元pe,能够用于混合定点精度数据的计算。
50.所述的处理单元pe,能够用于混合浮点精度数据的计算。
51.所述的处理混合精度数据,不同精度的数据使用相同结构pe内统一的数据通路。
52.经由上述的技术方案可知,本发明公开提供了一种混合精度稀疏矩阵加速计算脉动阵列架构及数据处理方法,与现有技术相比,本发明实现的有益效果包括:
53.1、本发明公开的脉动阵列架构,优化了阵列内数据传输方式,大幅度提升了压缩存储的稀疏矩阵在阵列内的传输速度、计算速度以及能耗比,通过复用行输入数据和列输入数据,减少存储的访问,提高数据传输效率,降低访存功耗;通过数据优先的阵列内数据流通规则加速计算数据在阵列内的流通速度,提高数据匹配效率,实现稀疏矩阵的计算加速。本发明中脉动阵列架构可用于在fpga上实现稀疏矩阵计算加速器,从而在fpga上实现神经网络推理计算加速器。该结构同样也能适用于芯片的矩阵计算单元,以及数据流量大的加速计算单元,包括但不限于ai加速引擎单元、芯片核心矩阵计算单元、卷积加速计算单元等。
54.2、本发明中对数据流的预处理方法,可使压缩后的矩阵或向量通过简单的地址偏移信息和配置信息,高效地送入处理单元中对数据进行匹配并进行计算,降低了解码的复杂度,减少了存储稀疏矩阵地址信息的存储空间资源使用,提高了资源利用率,提高了能耗比。
55.3、本发明通过使用同一结构下的数据通路对不同精度矩阵数据进行运算,能够提高计算模块的资源利用率,从而在有限的硬件资源的条件下,部署并行度更高的阵列。且通过上述方法,能够大规模减少输入输出数据通路的数量,降低计算和存储资源的空闲,提高数据存储的速度,节省存储开销。
附图说明
56.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
57.图1是本发明一个二维脉动阵列实施例的一种pe的结构示意图;
58.图2是本发明输入数据流需要的数据压缩方式以及数据编码方式;
59.图3是本发明一个pe实施例的内部模块控制信号逻辑和数据处理流程示意图;
60.图4是是本发明处理一个稀疏矩阵与一个稀疏向量乘法的运算示意图;
61.图5是本发明的一种用于计算稀疏矩阵和稀疏向量乘法计算的一维脉动阵列结构的实施例示意图;
62.图6是本发明处理的一个稀疏矩阵和一个稀疏矩阵乘法的运算示意图;
63.图7是本发明的一种用于计算稀疏矩阵与稀疏矩阵乘法计算的二维脉动阵列结构的实施例示意图;
64.图8是发明处理的一个稀疏矩阵与两个稀疏矩阵乘法的运算示意图;
65.图9是本发明的一种用于计算稀疏矩阵与多个稀疏矩阵乘法计算的三维脉动阵列结构的实施例示意图;
66.图10是本发明处理混合精度向量之间乘法占用通道情况示意图;
67.图11是本发明处理不同精度数据计算的数据排布方式;
68.图12是本发明提出的多级存储结构的实施例示意图,说明了计算阵列整体数据输入缓存、中间数据缓存和数据输出缓存实现的方式;
69.图13是本发明的一个实施例pe内数据流匹配和输入输出机制;
70.图14是本发明的一个二维脉动阵列实施例中数据匹配优先的pe间数据流动方式;
71.图15是本发明的一个二维脉动阵列实施例中数据流动优先的pe间数据流动方式;
72.图16是基于本发明提出的脉动阵列架构在fpga上设计的神经网络加速器,本发明提出的架构用于计算神经网络中的稀疏矩阵运算。
具体实施方式
73.随着深度学习网络模型的发展,网络规模和参数数量剧增,为了能够加速神经网络的推理速度,会采用模型压缩的方式以减少推理任务的计算量。模型压缩会致使权重产生大量的稀疏矩阵,因此在硬件平台上部署神经网络推理任务的时候,需要进行大量的稀疏矩阵运算。
74.不同的硬件结构对稀疏矩阵运算支持的方式不同,结果也相差较大。在算法部署的过程中,由于稀疏矩阵元素排布无规律,现有的计算方法难以在硬件上对稀疏矩阵运算实现优化。
75.对此,本技术提出了一种混合精度稀疏矩阵加速计算脉动阵列架构及数据处理方法。需要说明的是,虽然本发明是在稀疏矩阵处理背景下提出,但不能视为其为本发明应用对象的限制,相应的,本发明所提出的处理单元及脉动阵列架构,同样适用于稠密矩阵的运算。
76.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
77.实施例一
78.本发明实施例公开了一种混合精度稀疏矩阵加速计算脉动阵列架构,包含网状连接的处理单元,用于减少数据流动的延时,减少矩阵运算随着稀疏度提高在性能提升方面的边际效应,提高资源利用率,提高整体的计算速度。
79.其中,处理单元具体包括依次相连的动态数据匹配和驱动模块、混合精度乘加模块和结果输出模块,
80.动态数据匹配和驱动模块,所述动态数据匹配和驱动模块,具有两个数据输入通道和多个数据输出通道,用于接收数据流进行匹配,以及将接收的数据流在脉动阵列架构内进行传输;其中所述数据流端部具有行/列标识;且传输驱动为将匹配好的数据传输至混合精度乘加模块,以及将匹配前的数据通过数据输出通道传出。
81.一种实施例中,两个数据输入通道用于接收待处理的稀疏矩阵压缩重排后的数据流;其中,稀疏矩阵压缩重排后的数据流包括稀疏向量和稀疏矩阵。
82.对于数据输出通道的数量,可根据需要进行设置;用于将输入的数据优先输出,以减少延迟。
83.本实施例中,如图1所示,动态数据匹配和驱动模块包括两个数据输入通道,即数
据流1和数据流2,用于输入待处理的稀疏矩阵压缩重排后的数据流,以及2个数据输出通道,数据流3和数据流4,用于将输入的待处理的稀疏矩阵优先输出至处理单元以外;
84.本发明中,为动态数据匹配和驱动模块配置了数据缓冲区,用于存储尚未完成匹配的数据流。
85.其中,本发明在数据匹配前先对数据流进行压缩,包括:
86.提取数据流中非0数据,并确定所述非0数据的值、偏移地址和位置标识;
87.偏移地址为所述非0数据在数据流中的位置序号,位置标识包括:eof_pack,eof_pack为1时,表示所述数据为数据流中最后一个非0数据,其余为0。
88.一种实施例中,当数据流中非0数据较多时,根据所述动态数据匹配和驱动模块的缓存区大小,对所述非0数据进行分组,并将每组中最后一个非0数据的eof_group位置置为1,其余为0。
89.一般情况下,动态数据匹配和驱动模块的缓存区只能同时存储8个数据,故可设定每8个数据为一组,当一数据流中非0数据超过8个时,可将第一组填充后,其余的顺延至第二组。
90.其中,图2展示了本发明输入的数据流格式。即首先对稀疏矩阵中数据进行分组,将每8个数据分为一小组,对8个数据中非0元素提取出来进行地址编码,包括确定所述非0数据的值、偏移地址和位置标识;
91.即根据非0数据在数据流中的位置序号确定偏移地址,并将8个数据中最后一个非0数据的eof_group位置为1,其余为0;如果这8个数据均为0,则只存储一个0数据,并将其eof_group位置为1;同时将最后一组中最后一个非0数据的eof_group位和eof_pack位均置为1。
92.进一步,对数据流进行处理时,可依据偏移地址进行匹配,具体参照图3,匹配过程包括:
93.若数据流一中数据的偏移地址等于数据流二中数据的偏移地址,则将两个数据共同传输至所述混合精度乘加模块;
94.若数据流一中数据的偏移地址小于数据流二中数据的偏移地址,则保留数据流二中数据的偏移地址,获取数据流一中下一个数据的偏移地址进行比较;
95.若数据流一中数据的偏移地址大于数据流二中数据的偏移地址,则保留数据流一中数据的偏移地址,获取数据流二中下一个数据的偏移地址进行比较。
96.进一步,动态数据匹配和驱动模块将匹配完成的数据传输至混合精度乘加模块进行乘加计算。
97.混合精度乘加模块,用于接收并对匹配完成的数据进行乘累加,得到乘累加结果,并根据所述数据流的行/列标识得到累加结果地址,将所述累加结果地址和所述乘累加结果拼接后传输至结果输出模块;
98.当匹配完成的数据元素进入混合精度乘加模块后,根据eof_group和eof_pack来确定乘累加哪些数据。当数据的eof_group位均为1时,说明本组数据的乘累加运算结束,此时为了数据不超域,需要对结果进行一次量化,量化方案可根据算法精度要求采用不同的方法,通过替代量化模块实现修改。
99.当数据进行匹配时,eof_pack位均为1时,结束本次累加,生成存储的结果,并将pe
的可输出标志位置为1,将结果缓存到pe输出模块的待发射区,累加结果下一个时钟周期到来时置为当前时钟周期乘法结果,当阵列中所有可输出标志位为1时按顺序输出。
100.具体的,判断方法为:
101.当eof_group为0,eof_pack为0时,判定组内数据元素的运算;
102.当eof_group为1,eof_pack为0时,判定本组运算结束,切换至下一组继续进行乘加运算;
103.当eof_group为1,eof_pack为1时,判定数据流的运算结束;
104.当eof_group为0,eof_pack为1时,判定为数据流的行/列标识;即该数据位里面存放的是数据流的地址信息(行/列标识),将其输入到pe的特定地址寄器中,等待最终与计算结果拼接进行输出。
105.计算完成后,生成存储的结果,将pe的可输出标志位置为1,根据数据流的行/列标识得到累加结果地址,并将累加结果地址和计算结果拼接组成输出数据传输至结果输出模块。
106.结果输出模块,用于根据所述累加结果地址输出所述乘累加结果。
107.本实施例中,将输出数据输入中间数据缓存区,待阵列内数据均计算完成后,按照累加结果地址的顺序将计算结果存入片上bram缓存中。
108.本发明提出的数据流压缩方法,是将一个待计算数据流计算结果的地址放在数据流的开头,而后排列着按照格式压缩好的稀疏数据流。
109.本发明处理单元整体的数据处理流程为:
110.参照图1,数据流1和数据流2分别通过a和b两个端口进入pe后,输入到dmd模块,缓存到dmd模块中相应的缓存区,而后在下一次时钟上升沿到来之时,通过输出端口c和d,以数据流3和数据流4的方式输出到处理单元以外。dmd模块缓存区内的数据根据偏移地址的信息进行匹配,匹配完成后输入到mpmac模块中进行乘加,mpmac模块中的乘加结果根据参与乘加计算的操作数的配置信息来确定本次乘加是否结束,如果配置信息确定本次乘累加操作结束,则将结果输出到ro模块中并将乘累加寄存器清零,重置的初始值为mpmac模块中当前时钟下的乘法结果。在接受到阵列均完成结果计算的信号之后,计算结果通过端口e按照阵列顺序将结果转发到脉动阵列之外。
111.进一步,图4列举了本发明处理的一个稀疏矩阵与稀疏向量相乘的例子。
112.图5展示了本发明一个一维脉动阵列架构的实施例,用于稀疏矩阵和稀疏向量相乘。
113.图6列举了本发明处理的一个稀疏矩阵与稀疏矩阵向量相乘的例子。
114.图7展示了本发明一个二维脉动阵列架构的实施例,用于稀疏矩阵与稀疏矩阵相乘。
115.图8展示了一个稀疏矩阵与两个稀疏矩阵向量相乘的例子,例如c=a*b,e=a*d,输入a、b、d,输出c、e,可以用三维脉动阵列架构来实现。
116.图9展示了本发明一个三维脉动阵列架构的实施例,用于一个稀疏矩阵与两个稀疏矩阵相乘,其中一个稀疏矩阵的所有值被复用。
117.需要说明的是如果处理的矩阵过大,需要对矩阵按照计算结果进行分块,每块最大为尺寸为64*64的矩阵。不同块的矩阵需要通过调度器对编译时产生的矩阵分块信息来
分配不同的数据输入和输出地址区域,再按照本发明的数据输入方式从数据输入内存区域内读出,并按照累加结果地址存入到对应的区域。
118.存储区域的块号与偏移地址能够计算出该数据真实的索引信息。上述矩阵分块、存储地址分配需要在硬件编译时实现。计算后矩阵需要结合存储区域块号和偏移地址计算出真实地址,再按照本发明的数据流排列方式进行重排,而后作为输入进行下一轮的矩阵计算,该过程是处于硬件实时处理过程中在硬件的cpu上进行数据重排。
119.此外,神经网络在混合精度量化后,不同层计算数据的位宽是不同的,神经网络每一层的数据位宽记录在网路参数文件中关于每一层描述的标签中,在硬件后端编译的过程中,会识别该标签并在保存在运行时文件中,运行时该数据会写入fpga中特定的位宽寄存器中,架构根据寄存器中的数据选择相应的输入和输出通路。目前的体系结构一般来说能够适配int8,int16,int32等位宽,但是对于1-16bit的其他位宽是不能够支持的,对此,本发明提供了一种能够适配1-16bit位宽的矩阵计算方法。
120.具体的,对匹配完成的数据进行乘累加时,根据数据中元素的位宽和数据处理通路结构,确定同时载入的元素数量,并将载入的元素进行拼接后通过混合精度乘加模块进行计算。
121.一种实施例中,匹配完成的数据中,具有多位元素,本发明将对多位元素进行拼接,使其输入到同一个数据流通道内,从而与同一列中同一个数据进行计算。
122.例如,匹配完成的数据a
11
和b1,其中,数据a
11
中包括元素a1,a2,数据b1中包括元素b,如图10所示,即a1,a2同时要与b进行相乘,
123.则本发明将8bit的a1,a2拼接输入到一个数据流通道内,由于进行拼接的时候可能会存在一行数据的数据量不同的情况,此时要对数据量较少的数据流进行补0操作,完成多行数据流的对齐。
124.进一步,将元素b输入至另一通道内,以实现元素a1,a2与b的计算。当计算完成时,将所得结果放入对应的寄存器中等待累加或者输出。
125.本发明处理的时候采用的是先匹配后计算的方式,将多行匹配成功需要计算的数据输入到待计算的寄存器内,对于低精度位宽的数据需要按照本发明提出的数据通路中数据排布方式进行拼接组合,完成拼接后输入到乘加模块中进行计算。
126.对于低精度位宽的数据,可以按照需要拼接的个数提高匹配结构的部分时钟倍数,从而保证进入乘加模块的数据通路部分的时钟保持不变。
127.本实施例中,参照图10,图中以8bit*8bit以及2bit*2bit的实例对数据排布和计算方式进行展示,图11进一步展示了单个pe一个数据通道内在不同的计算阶段输入不同位宽数据的计算示意图,使用图示的结构能够使用同一个结构适配不同位宽的混合精度数据的计算。但实际实现时不限于这两种精度,可对多种精度的数据进行乘累加计算,且两个被乘数的精度允许不相同。
128.显然,图10和图11以不同精度向量举例,同时能够适用于在一维、二维或三维脉动阵列中的混合精度矩阵运算。通过使用同一结构下的数据通路对不同精度矩阵数据进行运算,能够提高计算模块的资源利用率,从而在有限的硬件资源的条件下,部署并行度更高的阵列。且通过上述方法,能够大规模减少输入输出数据通路的数量,降低计算和存储资源的空闲,提高数据存储的速度,节省存储开销。
129.本发明混合精度稀疏矩阵加速计算脉动阵列架构,能够适用于多种精度数据的计算,即不同精度的数据使用相同结构pe内统一的数据通路。其中,多种精度数据包括定点数据、浮点数据、混合定点精度数据、混合浮点精度数据、以及1bit-16bit混合精度数据。并且能够使用统一的数据通路支持不同类型不同位宽的数据计算,在能够支持不同数据精度的算法模型的前提下,减少了结构占用的硬件物理资源,避免了在某一种精度计算模式下其他计算资源闲置浪费,能够在硬件资源有限的情况下,设计更大的数据处理模块,部署混合比特位宽的算法模型,提高了混合比特算法模型的计算速度和资源利用率。
130.同时,本发明中混合精度稀疏矩阵加速计算脉动阵列架构,可为同步时序电路,也可为异步时序电路。
131.本发明脉动阵列结构中,每一个pe为网络中的一个节点,每一个节点都能够与多个下一级节点传输压缩后的稀疏数据,已经完成向下一级节点数据传输但是未完成匹配和处理的数据缓存在当前节点用于后续的运算,得到上一级节点传输的数据进入当前pe自己的数据缓冲区。处理单元pe通过匹配参与计算的稀疏数据偏移地址信息来选取需要计算的数据进行计算,并在计算完成后根据数据的配置信息来决定是否对数据进行累加,在累加过程完成后,该阵列能够自动地将计算结果从脉动阵列中转发出来。
132.脉动阵列在内部传输数据时采用数据传输优先的规则,而非数据匹配优先的规则,能够在上级节点计算数据的同时,完成向下级节点分发数据的任务,从而减少了数据在脉动阵列中流动的延时,提高了资源利用率,提高了整体的计算速度。
133.一种实施例中,本发明脉动阵列架构包括如下存储器:
134.cache0和cache01,分别对应脉动阵列架构中处理单元的数据输入通道,用于获取待处理数据流,输入至所述处理单元中;
135.cache2,与多个处理单元的结果输出模块相连,用于存储中间计算结果;
136.cache3,与存储器cache2相连,用于当所有处理单元计算完成后,接收所述存储cache2中的计算结果进行分类,并按所需顺序输出。
137.具体参照图12,图12为本发明提出的多级存储结构的实施例示意图,说明了计算阵列整体数据输入缓存、中间数据缓存和数据输出缓存实现的方式。
138.cache0和cache1缓存由相互独立的片上块ram组成。由于fpga的工作主频较低,而ddr的工作主频较高,本技术通过乒乓轮转机制来对ram进行操作,从而更加快速的将数据更新到块ram中。块ram在得到块数据传输结束信号后,查询脉动阵列是否处于可输入状态。如果处于可输入状态,则将数据流按照脉动阵列数据输入的时序要求进行输入。脉动阵列在对输入的数据流进行乘累加的计算时,会将结果暂时缓存在为阵列每个计算单元配置的寄存器缓存区cache2中。当一组数据在计算阵列所有pe计算均完成后,产生阵列可输入信号,并且将寄存器缓存中的计算结果按照下层数据输入顺序进行分组,并按照不同的组别存入cache3中的不同块ram中。在cache2中采用乒乓轮转方式,一组缓存用于向外输出,一组用于计算中间数据累加。cache2计算结果完全写入cache3后,将cache3按照算子编译后的存放地址存入到ddr中的不同区域,从而实现分块的组合,组合后的数据用于下一层的数据计算。
139.所述脉动阵列结构多维阵列,根据阵列的维度确定动态数据匹配和驱动模块数据输出通道的数量。即倘若是一维脉动阵列,则只有一个数据流通通道,倘若是三维脉动阵
列,则有三个数据流通通道。
140.本发明提供的用于混合比特输入的稀疏矩阵加速运算的脉动阵列结构,具有规则及功能简单的物理设计、高并行度、高访存效率以及高数据复用的特点,避免了稀疏矩阵运算中有0参与的无意义操作,通过数据传输优先的规则驱动数据在脉动阵列中的流通,优化了数据匹配流程,减少了由于数据不匹配导致的传输延迟,从而提升了脉动阵列对稀疏矩阵运算的处理速度和能耗比。
141.图13展示了dmd模块中数据匹配的规则,数据流动的方式以及数据缓存的规则。以二维脉动阵列为例,每个时钟周期数据从两个输入端口流入,进入pe中的数据缓存区,并将上一个时钟周期流入当前pe的两个数据,分别通过两个输出端口派发给下两个pe。与此同时,将两个数据流缓冲区的先进先出的数据缓存器(fifo,first in first out)出口数据a和b的偏移地址进行匹配。如果a的偏移地址等于b的偏移地址,则将两个数据a和b传输到mpmac模块,并控制两个fifo读出下一个数据。当a和b均不为0且偏移地址不均为1时,如果a的偏移地址小于b的偏移地址,则控制fifoa读出下一个数据作为新的数据a;如果a的偏移地址大于b的偏移地址,则控制fifob读出下一个数据作为新的数据b。当a和b的偏移地址均为1时,且a和b的偏移地址不相等,则控制两个fifo读出下一个数据。
142.本发明优化后的结构能够避免数据无法匹配导致的数据滞留阻碍数据流入后续pe,减少了层层pe的时延导致的过长结构性等待延迟。本发明提出的数据流动优先的脉动阵列内数据传输方法,能够节省数据传输时间,节省计算资源,提高资源利用率。
143.为了验证本发明能实现的有益效果,下面通过数据匹配优先和数据流动优先进行对比说明。
144.图14展示了在pe中的脉动阵列间,以数据匹配优先的数据流动机制。图15展示了在pe中的脉动阵列间,以数据流动优先的数据流动机制。对比图14和图15中展示的数据流动机制,显然可知以数据流动优先进行数据流动能够避免节点间通信阻塞,能够更快地在阵列的节点上传输数据。存储的结果需要按照下一层的计算需要的顺序进行存储,因此需要计算数据的行列地址计算出结果所对应的行列地址为计算出来的结果进行分组,确定eof_group标志位,而后附上对应的偏移地址表示数据,数据的eof_pack位暂时先不定义,待下一次计算前根据算法对数据进行重新排序的时候再进行定义。
145.本发明所公开的用于混合精度稀疏矩阵计算的自适应脉动阵列架构,数据在进入脉动阵列进行计算之前,需要按照数据压缩格式的要求对数据进行压缩,通过去除向量或矩阵中的非0数据,节省矩阵的存储空间和矩阵计算次数。需要对输入的数据流的顺序进行重排并对eof_pack位进行赋值,结束位置的数据eof_pack位置为1,其余为0。经过压缩、地址编码和配置信息编码的矩阵变为适用于本发明公开的脉动阵列结构的数据流,能够方便地进入pe进行传输和计算,极大地节省了计算开销,加速了混合精度稀疏矩阵的计算。
146.实施例二
147.本技术进一步公开了一种加速器架构,其中的混合比特稀疏矩阵脉动阵列加速模块基于本发明实施例一进行设计。
148.本实例基于cpu+fpga架构实现,用于展示本实例的实际使用场景,本发明的脉动阵列结构同样能够用于芯片设计,能够用于设计数据流量大的加速计算单元(包括但不限于ai加速引擎单元、芯片核心矩阵计算单元、卷积加速计算单元等)。
149.本发明在fpga上的实施例的目的在于保护脉动阵列结构,基于该结构实现了神经网络fpga加速器,如图16所示,该加速器的包括:cpu侧(ps):模型部署控制驱动,pga侧(pl),数据/控制信号-输入/输出总线,控制模块,片上缓存区,数据输入缓存,混合比特稀疏矩阵脉动阵列加速模块,其他计算模块(包括pool模块,relu模块,softmax模块,norm模块)。
150.所述模型部署控制驱动,用于接收和缓存像素数据和权重数据,根据卷积神经网络描述信息生成每一层的数据调度和计算控制配置参数,与所述fpga侧加速器相连,用于控制信号和配置信息的传输。
151.所述数据/控制信号-输入/输出总线,连接fpga上的控制模块、计算模块、片内缓存区、片外ddr内存,用于数据传输。
152.所述片上缓存区,用于存储模型部署驱动传输来的数据调度和计算控制配置参数、计算模块中间缓存、ddr输入数据。具体分为cache0、cache 1、cache2和cache3。cache0和cache1主要由片上双口ram实现的fifo组成,用于存储ddr中需要进行矩阵计算的两个矩阵的具体数值信息,能够在一边输出数据流1和2到脉动阵列,一边从ddr中接受输入写入新的需要计算的数据。cache 2由寄存器构成,用于存储中间计算结果。cache3由片上ram组成,用于存放乘累加后的结果,由于计算结果的产生并不具备连续性,因此需要等阵列中所有的计算结束后,对所有的结果进行输出。
153.所述混合比特稀疏矩阵脉动阵列加速模块,是基于本发明架构设计的加速计算模块,能够用于加速计算混合比特的稀疏矩阵,通过cpu侧将各种计算密集型计算方式转换为矩阵操作(如卷积操作、转置卷积操作、多头注意力机制操作、全连接操作等),而后通过该模块进行加速计算,从而支持对神经网络中多种神经网络计算。
154.所述其他计算模块,包括pool模块、relu模块、softmax模块、norm模块,用于完成神经网络中的非矩阵计算密集型的计算。其中,卷积神经网络的主要计算在于卷积模块,使用基于本发明的矩阵计算单元。transfomer神经网络的主要计算在于自注意力机制模块,使用基于本发明的矩阵计算单元以及softmax计算单元。
155.本发明提供了一种面向fpga的稀疏深度学习神经网络的多级存储结构,能够有效地降低不同模块以及同一模块不同通道间的数据冲突,保证数据安全;能够充分地利用数据复用的特性,同时扇出多个通道数据流,提高访存效率;配合本发明提出的脉动阵列,能够有效地降低缓存访存次数以及片外存储访存次数(如ddr、sd卡等),降低整体运行功耗。
156.实施例三
157.本技术进一步公开了一种用于混合精度稀疏矩阵加速计算的处理方法,包括如下步骤:
158.s1、获取并对待处理的矩阵数据流一和矩阵数据流二进行压缩,包括提取数据流中非0数据,并确定所述非0数据的值、偏移地址和位置标识;
159.s2、根据所述偏移地址,对所述矩阵数据流一和矩阵数据流二中的数据进行匹配,
160.s3、对匹配完成的数据经乘累加计算,根据所述位置标识确定计算是否结束,同时,根据数据流的行/列标识得到累加结果地址,将所得结果与所述累加结果地址进行拼接;
161.s4、根据所述累加结果地址,输出所述计算结果。
162.其中,步骤s1对应实施例一中的数据压缩处理过程,s2对应实施例一中的动态数据匹配和驱动模块所实现的功能,步骤s2对应混合精度乘加模块实现的功能,步骤s3对应结果输出模块实现的功能。
163.需要说明的是,本发明处理方法中涉及的处理细节,如数据流获取过程,地址编码过程,数据匹配过程,乘累加计算过程以及计算结果输出过程均与实施例一中一致,因此,此处不再赘述,详细内容参照实施例一即可。
164.本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
165.对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
技术特征:
1.一种混合精度稀疏矩阵加速计算脉动阵列架构,其特征在于,包含网状连接的处理单元,所述处理单元包括依次相连的动态数据匹配和驱动模块、混合精度乘加模块和结果输出模块,所述动态数据匹配和驱动模块,具有两个数据输入通道和多个数据输出通道,用于接收数据流进行匹配,以及将接收的数据流在脉动阵列架构内进行传输;其中所述数据流具有行/列标识;所述混合精度乘加模块,用于接收并对匹配完成的数据进行乘累加,得到乘累加结果,并根据所述数据流的行/列标识得到累加结果地址,将所述累加结果地址和所述乘累加结果拼接后传输至结果输出模块;所述结果输出模块,用于根据所述累加结果地址输出所述乘累加结果。2.根据权利要求1所述的一种混合精度稀疏矩阵加速计算脉动阵列架构,其特征在于,传输驱动包括将匹配好的数据传输至混合精度乘加模块,以及将接收的数据流通过数据输出通道传出。3.根据权利要求1所述的一种混合精度稀疏矩阵加速计算脉动阵列架构,其特征在于,数据流在输入前先进行压缩,包括:提取数据流中非0数据,对所述非0数据进行分组,并确定所述非0数据的值、偏移地址和位置标识;所述偏移地址为所述非0数据在数据流中的位置序号,所述位置标识包括:eof_group和eof_pack,所述eof_group为1时,表示数据为当前组中最后一个非0数据;所述eof_pack为1时,表示数据为数据流中最后一个非0数据。4.根据权利要求3所述的一种混合精度稀疏矩阵加速计算脉动阵列架构,其特征在于,数据流的匹配过程包括:当数据流一中数据的偏移地址等于数据流二中数据的偏移地址时,将两个数据共同传输至所述混合精度乘加模块进行乘累加计算;当数据流一中数据的偏移地址小于数据流二中数据的偏移地址时,则保留数据流二中数据的偏移地址,获取数据流一中下一个数据的偏移地址进行比较;当数据流一中数据的偏移地址大于数据流二中数据的偏移地址时,则保留数据流一中数据的偏移地址,获取数据流二中下一个数据的偏移地址进行比较。5.根据权利要求3所述的一种混合精度稀疏矩阵加速计算脉动阵列架构,其特征在于,所述混合精度乘加模块,用于对匹配完成的数据流元素进行乘加计算,其中:当eof_group为0,eof_pack为0时,判定为组内数据进行运算;当eof_group为0,eof_pack为1时,判定为数据流的行/列标识;当eof_group为1,eof_pack为0时,判定本组运算结束,切换至下一组继续进行乘累加运算;当eof_group为1,eof_pack为1时,判定数据流的运算结束。6.根据权利要求1所述的一种混合精度稀疏矩阵加速计算脉动阵列架构,其特征在于,对匹配完成的数据进行乘累加时,根据数据中元素的位宽和数据处理通路结构,确定同时载入的匹配完成的数据中元素数量,并将载入的元素进行拼接后通过混合精度乘加模块进行计算。
7.一种混合精度稀疏矩阵加速计算数据处理方法,其特征在于,包括:s1、获取并对待处理的矩阵数据流一和矩阵数据流二进行压缩,包括提取数据流中非0数据,并确定所述非0数据的值、偏移地址和位置标识;s2、根据所述偏移地址,对所述矩阵数据流一和矩阵数据流二中的数据进行匹配,s3、对匹配完成的数据经乘累加计算,根据所述位置标识确定计算是否结束,同时,根据数据流的行/列标识得到累加结果地址,将所得结果与所述累加结果地址进行拼接;s4、根据所述累加结果地址,输出所述结果。
技术总结
本发明公开了一种混合精度稀疏矩阵加速计算脉动阵列架构及数据处理方法。其中脉动阵列结构包含网状连接的处理单元,处理单元包括依次相连的动态数据匹配和驱动模块、混合精度乘加模块和结果输出模块,分别用于数据的匹配、计算和输出。本发明公开了一种脉动阵列架构内,数据流优先传输的数据流动方法,能够有效避免数据因没有匹配导致的数据传输延迟,能够显著地提高稀疏矩阵计算的处理速度;同时,规定了一种稀疏矩阵数据流压缩方法,使压缩后的矩阵或向量通过简单的地址偏移信息和配置信息,高效地送入处理单元中对数据进行匹配计算,降低了解码的复杂度,减少了存储稀疏矩阵地址信息的存储空间资源使用,提高了资源利用率,提高了能耗比。提高了能耗比。提高了能耗比。
技术研发人员:曹咏翔 姜宏旭 赵国程
受保护的技术使用者:北京航空航天大学
技术研发日:2023.06.21
技术公布日:2023/8/31
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/
上一篇:低析出EPE封装胶膜及其制备方法与流程 下一篇:分层持久存储器分配的制作方法