一种基于外积的矩阵乘法运算处理器、方法及介质

未命名 09-15 阅读:107 评论:0


1.本技术涉及通用处理器的技术领域,涉及一种基于外积的矩阵乘法运算处理器、方法及介质。


背景技术:

2.深度神经网络(dnn)在语音识别、图像识别、计算机视觉、推荐系统、自然语言处理、脑机接口等方面有许多应用。dnn需要执行大量的多维矩阵(或张量)计算。在卷积神经网络(cnn)中,例如alexnet、vggnet、resnet等模型,其主要计算消耗花费在多层卷积操作上。卷积计算有多种不同的计算方式,目前主流的方案有直接卷积,im2col-gemm卷积,winograd卷积以及fft卷积等几种。其中gpgpu常用的方案为im2col-gemm卷积计算方案,因为gpu的设计特性以及多年以来的发展,其对矩阵乘法运算的支持与优化有显著优势。
3.在gpgpu中,cnn中的卷积操作与transformer模型中的attention模块,都可以统一为gemm操作,因而深度学习模型在gpgpu上的计算重心即为如何优化gemm操作。在数学上,矩阵乘法计算有两种不同的方式,内积方式计算矩阵乘法和外积方式计算矩阵乘法。
4.gpu是深度学习计算的通用选择,因为它们相较于cpu提供了不同数量级的高性能。许多工作都专门致力于优化gpu硬件和软件,以加速dnn中的张量运算。现代gpu架构由一定数量的流式多处理器(sm)组成,它作为gpu的重要处理单元。这些sm进一步连接到所有sm共享的gpu设备内存/全局内存。每个sm都有其内部缓存、共享内存、寄存器文件、浮点运算核心、加载存储单元和其他特殊单元等。
5.在软件上,已经有许多优秀的并行算法设计针对矩阵乘法运算进行了优化,特别是nvidia公司的相关数学计算库,例如cublas、cudnn以及cutlass等。在硬件架构设计上,nvidia公司也提出了tensor core这种专门用来加速矩阵乘法运算的核心单元,相较于普通的浮点运算核心,tensor core的计算吞吐率得到了较大的提升。同时,tensor core也支持多种不同精度以及混合精度的运算,这使得其吞吐率得到了进一步提升。但这些软硬件的相关设计及计算,基本都基于内积矩阵乘法原理,在gpgpu中,尚未有针对于外积矩阵乘法的硬件架构设计。
6.在深度学习的研究发展之中,神经网络的稀疏性越来越作为一种常用的技术手段来加速计算。nvidia公司提出结构化的2:4sparse tensor core来加速计算,但由于其内积计算的限制,仅支持单边稀疏。外积的矩阵乘法则不同,由于其数学原理,对稀疏计算有更灵活的支持,包括单边稀疏与双边稀疏,故因而在gpgpu中,设计一种基于外积的矩阵乘法运算核心是十分有必要的。


技术实现要素:

7.本技术的目的在于提供一种基于外积的矩阵乘法运算处理器、方法及介质,用于解决现有技术在gpgpu中无法通过硬件设备进行矩阵外积运算的问题。
8.第一方面,本技术提供一种基于外积的矩阵乘法运算处理器,应用于gpgpu中,所
述处理器包括:寄存器堆、矩阵缓存器和计算单元;所述寄存器堆用于存储待处理矩阵;所述待处理矩阵包括:第一待处理矩阵、第二待处理矩阵和第三待处理矩阵;所述矩阵缓存器用于按照预设排布方式缓存各所述待处理矩阵;所述计算单元用于对不同类型的各所述待处理矩阵进行外积运算和累加运算,以获取目标矩阵,并将所述目标矩阵写回至所述矩阵缓存器中。
9.在第一方面的一种实现方式中,所述处理器包括多个线程束,任一线程束内的单次外积操作均由线程束内的所有线程共同完成;任一线程束内的各所述待处理矩阵的元素共享。
10.在第一方面的一种实现方式中,任一所述计算单元根据待处理矩阵的数据类型将所述第一待处理矩阵的行和所述第二待处理矩阵的列进行外积运算,以得到临时矩阵;将所述临时矩阵与所述第三待处理矩阵进行累加运算,以获取目标矩阵的行。
11.进一步地,任一所述计算单元包括多个mac单元;所述mac单元用于将不同数据类型的各所述待处理矩阵进行外积运算后进行单次或多次累加运算,以获取目标矩阵。
12.在第一方面的一种实现方式中,所述mac单元可适用于多精度的矩阵运算,所述mac单元基于通用计算模式dtype-stype-mnk-mul对各所述待处理矩阵进行外积运算和累加运算;其中,dtype表示不同数据类型,stype表示不同精度级别,mnk表示输入矩阵形状和大小,mul表示单个线程单次并行乘法次数。
13.在第一方面的一种实现方式中,任一所述mac单元包括:多精度乘法器和至少一个加法器;所述多精度乘法器用于根据各所述待处理矩阵的精度确定需要进行单次外积运算的各所述待处理矩阵的行数和列数;所述加法器用于将单次外积运算的结果直接写回所述矩阵缓存器或进行单次或多次累加运算后,写回所述矩阵缓存器。
14.进一步地,任一所述mac单元还包括一控制器,所述控制器用于根据各所述待处理矩阵的精度确定累加运算的次数。
15.第二方面,本技术提供一种基于外积的矩阵乘法运算方法,其应用于本技术第一方面任一项所述的基于外积的矩阵乘法运算处理器;其中,所述方法包括:获取并存储待处理矩阵,并将所述待处理矩阵按照预设排布方式缓存至矩阵缓存器中;根据待处理矩阵的数据类型,对所述待处理矩阵进行外积运算和累加运算,以获取目标矩阵,并将所述目标矩阵写回至所述矩阵缓存器中。
16.在第二方面的一种实现方式中,所述根据待处理矩阵的数据类型,对所述待处理矩阵进行外积运算和累加运算,包括:判断所述待处理矩阵的数据类型和数据精度;根据所述数据类型和数据精度确定进行单次外积运算的行数和列数,并进行外积运算;根据所述数据类型和数据精度确定进行加法运算的次数,将外积运算的结果直接写回矩阵缓存器或经过单次或多次加法运算后写回矩阵缓存器。
17.第三方面,本技术提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本技术第二方面任一项所述的基于外积的矩阵乘法运算方法。
18.如上所述,本技术所述的一种基于外积的矩阵乘法运算处理器、方法及介质,具有以下
19.有益效果:
20.第一,本技术提出了一种基于外积的矩阵乘法运算核心,在gpgpu中来加速矩阵乘
法的运算,通过在计算核心中增加片上存储和计算单元,来提升运算的效率。
21.第二,本技术针对神经网络计算中常采用的低精度运算方式,提出了通用的设计方案,可以支持不同精度和对应的大小的矩阵乘法运算操作。
附图说明
22.图1显示为本技术实施例所述的基于外积的矩阵乘法运算处理器的结构示意图。
23.图2显示为本技术实施例所述的矩阵缓存器的预设排布方式。
24.图3显示为本技术实施例所述的第一次外积运算的详细步骤图。
25.图4显示为本技术实施例所述的一个计算单元内的多个mac单元的结构示意图。
26.图5显示为本技术实施例所述的mac单元的结构示意图。
27.图6显示为本技术实施例所述的基于外积的矩阵乘法运算方法的流程图。
28.图7显示为本技术实施例所述的基于外积的矩阵乘法运算方法的流程图。
29.元件标号说明
30.10
ꢀꢀꢀꢀꢀꢀꢀꢀ
寄存器堆
31.20
ꢀꢀꢀꢀꢀꢀꢀꢀ
矩阵缓存器
32.201
ꢀꢀꢀꢀꢀꢀ
矩阵缓存器a
33.202
ꢀꢀꢀꢀꢀꢀ
矩阵缓存器b
34.203
ꢀꢀꢀꢀꢀꢀ
矩阵缓存器c
35.204
ꢀꢀꢀꢀꢀꢀ
矩阵缓存器d
36.30
ꢀꢀꢀꢀꢀꢀꢀꢀ
计算单元
37.301
ꢀꢀꢀꢀꢀꢀꢀ
mac单元
38.3011
ꢀꢀꢀꢀꢀꢀ
多精度乘法器
39.3012
ꢀꢀꢀꢀꢀꢀ
加法器
40.3013
ꢀꢀꢀꢀꢀꢀ
控制器
41.s1~s2 步骤
42.s21~s23 步骤
具体实施方式
43.以下通过特定的具体实例说明本技术的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本技术的其他优点与功效。本技术还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本技术的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
44.需要说明的是,以下实施例中所提供的图示仅以示意方式说明本技术的基本构想,遂图式中仅显示与本技术中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
45.本技术以下实施例提供了基于外积的矩阵乘法运算处理器、方法及介质,基于外积的矩阵乘法运算处理器应用于gpgpu中,处理器包括:寄存器堆、矩阵缓存器和计算单元;
寄存器堆用于存储待处理矩阵;待处理矩阵包括:第一待处理矩阵、第二待处理矩阵和第三待处理矩阵;矩阵缓存器用于按照预设排布方式缓存各待处理矩阵;计算单元用于对不同类型的各待处理矩阵进行外积运算和累加运算,以获取目标矩阵,并将目标矩阵写回至矩阵缓存器中。本技术解决了现有技术中gpgpu中无法通硬件设备进行矩阵外积运算的问题。
46.本技术以下实施例提供了一种基于外积的矩阵乘法运算的硬件架构,包括:寄存器堆、矩阵缓存器和计算单元。
47.其中,寄存器堆存储有第一待处理矩阵、第二待处理矩阵、第三待处理矩阵,需要进行矩阵乘法运算时,分别各矩阵缓存器的排布方式将第一待处理矩阵、第二待处理矩阵、第三待处理矩阵缓存到矩阵缓存器a、矩阵缓存器b、矩阵缓存器c中;按照各矩阵缓存器的排布方式,调用各矩阵缓存器中的数据以供计算单元进行外积运算以及加法运算,最后将运算结果写回到预设的矩阵缓存器d中,以获取目标矩阵。
48.其中,任一计算单元共享矩阵缓存器a、矩阵缓存器b、矩阵缓存器c内的待处理矩阵的各个元素。
49.需要说明的是,每次外积操作,都由线程束内的所有线程共同完成。
50.需要说明的是,在gpgpu的计算之中,有多个线程分布在sm中,并发执行各个线程独有的操作。从线程调度的角度来看,这些线程的执行,以线程束的粒度来统一执行。通常线程束的大小为32或64。需要指明的是,在线程执行过程中,使用omma core硬件资源之前和之后,都依旧保持原有的simt调度方式正常执行,但在调用omma core时,应以线程束完整的大小进行资源调度,而不应该存在线程束内的分支操作,否则会出现执行中的错误。
51.以下将结合附图详细阐述本实施例的一种基于外积的矩阵乘法运算处理器、方法及介质的原理及实施方式,使本领域技术人员不需要创造性劳动即可理解本实施例的基于外积的矩阵乘法运算处理器、方法及介质。
52.参考图1,显示为本技术实施例所述的基于外积的矩阵乘法运算处理器的结构示意图。处理器包括:寄存器堆10、矩阵缓存器和计算单元30。
53.具体地,寄存器堆10用于存储待处理矩阵;待处理矩阵包括:第一待处理矩阵、第二待处理矩阵和第三待处理矩阵;矩阵缓存器20用于按照预设排布方式缓存各待处理矩阵;计算单元30用于对不同类型的各待处理矩阵进行外积运算和累加运算,以获取目标矩阵,并将目标矩阵写回至矩阵缓存器20中。
54.其中,矩阵缓存器20包括:矩阵缓存器a 201、矩阵缓存器b 202、矩阵缓存器c 203和矩阵缓存器d 204;其中,矩阵缓存器a 201用于接收缓存第一待处理矩阵、矩阵缓存器b202用于接收缓存第二待处理矩阵、矩阵缓存器c 203用于接收缓存第三待处理矩阵和矩阵缓存器d 204用于接收缓存写回的目标矩阵。
55.于一实施例中,如图2所示,显示为本技术实施例所述的矩阵缓存器的预设排布方式。
56.具体地,按照预设排布方式,将第一待处理矩阵缓存到矩阵缓存器a 201中,将第二待处理矩阵缓存到矩阵缓存器b 202中,将第三待处理矩阵缓存到矩阵缓存器c 203中,其中,矩阵缓存器d 204用于缓存写回的目标矩阵。以将第一待处理矩阵缓存到矩阵缓存器a 201中为例,t0里的数值内容表示为第一待处理矩阵的第一行的前8个元素,t1表示为第一待处理矩阵的第一行的后8个元素;将第二待处理矩阵缓存到矩阵缓存器b 202中,其中,
t0里的数值内容表示为第二待处理矩阵的第一列的前8个元素,t2表示为第二待处理矩阵的第一列的后8个元素。
57.进一步地,处理器包括多个线程束,任一线程束内的单次外积操作均由线程束内的所有线程共同完成;任一线程束内的各待处理矩阵的元素共享。
58.进一步地,任一计算单元30根据待处理矩阵的数据类型将第一待处理矩阵的行和第二待处理矩阵的列进行外积运算,以得到临时矩阵;将临时矩阵与第三待处理矩阵进行累加运算,以获取目标矩阵的行。
59.于一实施例中,如图3所示,显示为本技术实施例所述的第一次外积运算的详细步骤图。
60.具体地,以数据类型为fp32的各待处理矩阵为例,该运算要取第一待处理矩阵a中的第一列v_a,和第二待处理矩阵b的第一行v_b。其中v_a有16个元素,v_a的每一个元素,都被2个线程所共享,例如v_a的第一个元素,被线程0和线程1共享,可以同时被线程0和线程1访问,v_a的第二个元素,被线程2和线程3共享,以此类推,v_a的第16个元素,被线程30和线程31共享。v_b有16个元素,前8个元素被偶数号线程(线程0、2、4、6、8

)共享,后8个元素被奇数号线程(线程1、3、5、7、9

)共享。
61.以线程0和线程1的计算为例,线程0和线程1同时取第一待处理矩阵a的第一个元素,以及v_b的完整一行,该行中,前8个元素属于线程0,后8个元素属于线程1。在获得运算所需输入之后,以线程0为例,v_a[0]与v_b[0]~v_b[7]的8个元素做并行乘法运算,得到temp矩阵中的第一行的前8个元素的结果,线程1同理,得到temp矩阵中的第一行的后8个元素的结果。以此类推,32个线程可以按照这种计算方式(例如线程2计算得到temp矩阵的第2行的前8个元素等等),得到一个temp矩阵的所有元素的值。
[0062]
在此之后,temp矩阵与第三待处理矩阵c相加,加法计算方式以线程0为例,即temp计算中线程0得到的八个元素与第三待处理矩阵c对应位置的8个元素进行并行加法运算,得到目标矩阵d_0矩阵的第1行的前8个元素,32个线程并行运算,得到最终的目标矩阵d_0的所有值。
[0063]
进一步地,任一计算单元30包括多个mac单元301;mac单元301用于将不同数据类型的各待处理矩阵进行外积运算后进行单次或多次累加运算,以获取目标矩阵。
[0064]
如图4所示,于一实施例中,显示为一个计算单元30内的多个mac单元301的结构示意图。
[0065]
具体地,以数据类型为fp32的各待处理矩阵为例,单个线程单次并行进行乘法运算的次数为8次。
[0066]
进一步地,mac单元301可适用于多精度的矩阵运算,mac单元301基于通用计算模式dtype-stype-mnk-mul对各待处理矩阵进行外积运算和累加运算;其中,dtype表示不同数据类型,stype表示不同精度级别,mnk表示输入矩阵形状和大小,mul表示单个线程单次并行乘法次数。
[0067]
如表1所示,显示为本技术实施例的多精度矩阵运算的通用计算方案。
[0068][0069]
具体地,以fp32为例,表示各待处理矩阵的数据类型为fp32,数据精度为fp16,则,各待处理矩阵的大小为16
×
16,单个线程单次并行进行乘法运算的次数为8次。
[0070]
进一步地,任一mac单元301包括:多精度乘法器3011和至少一个加法器3012。
[0071]
具体地,多精度乘法器3011用于根据各待处理矩阵的精度确定需要进行单次外积运算的各待处理矩阵的行数和列数;加法器3012用于将单次外积运算的结果直接写回矩阵缓存器或进行单次或多次累加运算后,写回矩阵缓存器。
[0072]
于一实施例中,如图5所示,显示为本技术实施例所述的mac单元的结构示意图。mac单元301包括:一个多精度乘法器3011和多个加法器3012。
[0073]
结合表1,于实施例中,在待处理矩阵为fp16精度下,选取第一待处理矩阵的一列和第二待处理矩阵一行进行计算,在int8精度下,选取第一待处理矩阵的两列和第二待处理矩阵的两行,同时进行计算,以此类推。无论输入的数据类型为哪一种,在进入mac单元301之前的第一待处理矩阵都为16bit,stype为fp16时,in_a表示第一待处理矩阵中的1个元素,in_b0表示第二待处理矩阵中的1个元素;stype为int8时,in_a表示第一待处理矩阵同一行中的2个连续的元素,in_b0表示第二待处理矩阵同一列中的2个连续的元素,这与上述的第一待处理矩阵的两列和第二待处理矩阵的两行相匹配;可以此类推stype为int4时的in_a和in_b0的排布方式。在经过多精度乘法器3011之后,可以得到1、2或者4个结果,由于他们在矩阵中是结果矩阵的同一个点的部分和,故可以进行累加。
[0074]
进一步地,于一实施例中,任一mac单元301还包括一控制器3013,控制器3013用于根据各待处理矩阵的精度确定累加运算的次数。
[0075]
具体地,如图5所示,根据本次计算的dtype和stype类型控制计算的方式,例如fp16配置下,将1个元素的结果直接下传,int8配置下,应将两个元素进行一次加法操作后,下传结果,以此类推。
[0076]
于一实施例中,本技术实施例还提供一种基于外积的矩阵乘法的指令集,如表2所示。
[0077]
[0078]
具体地,这组指令描述了不同的数据精度下omma core的计算方案,其中opma为opcode,说明本指令需要调用omma core进行计算,.dtype.stype表示本次计算的数据精度,rd为目的寄存器号,表示目标矩阵要存储到的位置,ra、rb以及rc为源寄存器号,分别表示第一待处理矩阵、第二待处理矩阵和第三待处理矩阵的对应位置的数据。每条指令都应以线程束的粒度并行执行,否则计算会出现错误。
[0079]
需要说明的是,应理解以上各个模块的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些模块可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分模块通过处理元件调用软件的形式实现,部分模块通过硬件的形式实现。例如,x模块可以为单独设立的处理元件,也可以集成在上述装置的某一个芯片中实现,此外,也可以以程序代码的形式存储于上述装置的存储器中,由上述装置的某一个处理元件调用并执行以上x模块的功能。其它模块的实现与之类似。此外这些模块全部或部分可以集成在一起,也可以独立实现。这里所述的处理元件可以是一种集成电路,具有信号的处理能力。在实现过程中,上述方法的各步骤或以上各个模块可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。
[0080]
例如,以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(application specific integrated circuit,简称asic),或,一个或多个微处理器(digital signal processor,简称dsp),或,一个或者多个现场可编程门阵列(field programmable gate array,简称fpga)等。再如,当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(central processing unit,简称cpu)或其它可以调用程序代码的处理器。再如,这些模块可以集成在一起,以片上系统(system-on-a-chip,简称soc)的形式实现。本技术所述的一种基于外积的矩阵乘法运算方法不限于上述实施例列举的步骤执行顺序,凡是根据本发明的原理所做的现有技术的步骤增减、步骤替换所实现的方案都包括在本发明的保护范围内。
[0081]
如图6所示,显示为本技术实施例所述的基于外积的矩阵乘法运算方法。
[0082]
具体地,应用于本技术任一实施例所述的基于外积的矩阵乘法运算处理器。基于外积的矩阵乘法运算方法包括:
[0083]
s1、获取并存储待处理矩阵,并将待处理矩阵按照预设排布方式缓存至矩阵缓存器中。
[0084]
具体地,寄存器从主存中获取待处理矩阵,并根据矩阵缓存器的预设排布方式,计算出每个待处理矩阵中的元素在矩阵缓存器中的位置,并通过指令将每个待处理矩阵中的元素加载到对应的矩阵缓存器中。
[0085]
需要说明的是,若待处理矩阵的大小超过了矩阵缓存器的容量,则需要将待处理矩阵划分为多个符合矩阵缓存器要求的基本块进行分别的读取和缓存。
[0086]
s2、根据待处理矩阵的数据类型,对待处理矩阵进行外积运算和累加运算,以获取目标矩阵,并将目标矩阵写回至矩阵缓存器中。
[0087]
具体地,待处理矩阵包括:第一待处理矩阵、第二待处理矩阵和第三待处理矩阵;矩阵缓存器包括:第一待处理矩阵缓存器、第二待处理矩阵缓存器、第三待处理矩阵缓存器
和目标矩阵缓存器。
[0088]
具体地,于一实施例中,如图7所示,步骤s2包括:
[0089]
s21、判断待处理矩阵的数据类型和数据精度。
[0090]
s22、根据数据类型和数据精度确定进行单次外积运算的行数和列数,并进行外积运算。
[0091]
具体地,待处理矩阵的数据类型包括:fp32、fp16、int32、uint32等。
[0092]
以待处理矩阵的数据类型为fp16为例,其数据精度为fp16,则第一次外积运算时,选取第一待处理矩阵的一列和第二待处理矩阵b一行进行外积运算,并将外积运算的结果返回至目标矩阵缓存器中的预设位置。
[0093]
需要说明的是,数据类型为fp16的待处理矩阵在进行外积运算时,单个线程单次并行进行乘法运算的次数为8次;单个线程需要进行16次并行乘法运算。
[0094]
s23、根据数据类型和数据精度确定进行加法运算的次数,将外积运算的结果直接写回矩阵缓存器或经过单次或多次加法运算后写回矩阵缓存器。
[0095]
具体地,无论输入的数据类型为哪一种,在进入mac单元301之前的第一待处理矩阵a都为16bit,stype为fp16时,in_a表示第一待处理矩阵a中的1个元素,in_b0表示第二待处理矩阵b中的1个元素;stype为int8时,in_a表示第一待处理矩阵同一行中的2个连续的元素,in_b0表示第二待处理矩阵同一列中的2个连续的元素,这与上述的第一待处理矩阵的两列和第二待处理矩阵的两行相匹配;可以此类推stype为int4时的in_a和in_b0的排布方式。在经过多精度乘法器3011之后,可以得到1、2或者4个结果,由于他们在矩阵中是结果矩阵的同一个点的部分和,故可以进行累加。
[0096]
本实施例提供一种电子设备,详细的,电子设备至少包括通过总线连接的:存储器、处理器,其中,存储器用于存储计算机程序,处理器用于执行存储器存储的计算机程序,以执行前述方法实施例中的全部或部分步骤。
[0097]
本技术实施例还提供了一种计算机可读存储介质。本领域普通技术人员可以理解实现上述实施例的方法中的全部或部分步骤是可以通过程序来指令处理器完成,所述的程序可以存储于计算机可读存储介质中,存储介质是非短暂性(non-transitory)介质,例如随机存取存储器,只读存储器,快闪存储器,硬盘,固态硬盘,磁带(magnetic tape),软盘(floppy disk),光盘(optical disc)及其任意组合。上述存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如数字视频光盘(digital video disc,dvd))、或者半导体介质(例如固态硬盘(solid state disk,ssd))等。
[0098]
本技术实施例还可以提供一种计算机程序产品,计算机程序产品包括一个或多个计算机指令。在计算设备上加载和执行计算机指令时,全部或部分地产生按照本技术实施例所述的流程或功能。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机或数据中心进行传输。
[0099]
计算机程序产品被计算机执行时,计算机执行前述方法实施例所述的方法。该计
算机程序产品可以为一个软件安装包,在需要使用前述方法的情况下,可以下载该计算机程序产品并在计算机上执行该计算机程序产品。
[0100]
综上所述,本技术的基于外积的矩阵乘法运算处理器、方法及介质,与现有技术相比,第一,本技术提出了一种基于外积的矩阵乘法运算核心,在gpgpu中来加速矩阵乘法的运算,通过在计算核心中增加片上存储和计算单元,来提升运算的效率。第二,本技术针对神经网络计算中常采用的低精度运算方式,提出了通用的设计方案,可以支持不同精度和对应的大小的矩阵乘法运算操作。故,本技术有效克服了现有技术中的种种缺点而具有高度产业利用价值。
[0101]
上述实施例仅例示性说明本技术的原理及其功效,而非用于限制本技术。任何熟悉此技术的人士皆可在不违背本技术的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本技术所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本技术的权利要求所涵盖。

技术特征:
1.一种基于外积的矩阵乘法运算处理器,应用于gpgpu中,其特征在于,所述处理器包括:寄存器堆、矩阵缓存器和计算单元;所述寄存器堆用于存储待处理矩阵;所述待处理矩阵包括:第一待处理矩阵、第二待处理矩阵和第三待处理矩阵;所述矩阵缓存器用于按照预设排布方式缓存各所述待处理矩阵;所述计算单元用于对不同类型的各所述待处理矩阵进行外积运算和累加运算,以获取目标矩阵,并将所述目标矩阵写回至所述矩阵缓存器中。2.根据权利要求1所述的基于外积的矩阵乘法运算处理器,其特征在于,所述处理器包括多个线程束,任一线程束内的单次外积操作均由线程束内的所有线程共同完成;任一线程束内的各所述待处理矩阵的元素共享。3.根据权利要求1所述的基于外积的矩阵乘法运算处理器,其特征在于,任一所述计算单元根据待处理矩阵的数据类型将所述第一待处理矩阵的行和所述第二待处理矩阵的列进行外积运算,以得到临时矩阵;将所述临时矩阵与所述第三待处理矩阵进行累加运算,以获取目标矩阵的行。4.根据权利要求3所述的基于外积的矩阵乘法运算处理器,其特征在于,任一所述计算单元包括多个mac单元;所述mac单元用于将不同数据类型的各所述待处理矩阵进行外积运算后进行单次或多次累加运算,以获取目标矩阵。5.根据权利要求4所述的基于外积的矩阵乘法运算处理器,其特征在于,所述mac单元可适用于多精度的矩阵运算,所述mac单元基于通用计算模式dtype-stype-mnk-mul对各所述待处理矩阵进行外积运算和累加运算;其中,dtype表示不同数据类型,stype表示不同精度级别,mnk表示输入矩阵形状和大小,mul表示单个线程单次并行乘法次数。6.根据权利要求4所述的基于外积的矩阵乘法运算处理器,其特征在于,任一所述mac单元包括:多精度乘法器和至少一个加法器;所述多精度乘法器用于根据各所述待处理矩阵的精度确定需要进行单次外积运算的各所述待处理矩阵的行数和列数;所述加法器用于将单次外积运算的结果直接写回所述矩阵缓存器或进行单次或多次累加运算后,写回所述矩阵缓存器。7.根据权利要求6所述的基于外积的矩阵乘法运算处理器,其特征在于,任一所述mac单元还包括一控制器,所述控制器用于根据各所述待处理矩阵的精度确定累加运算的次数。8.一种基于外积的矩阵乘法运算方法,其特征在于,应用于权利要求1-7任一项所述的基于外积的矩阵乘法运算处理器;其中,所述方法包括:获取并存储待处理矩阵,并将所述待处理矩阵按照预设排布方式缓存至矩阵缓存器中;根据待处理矩阵的数据类型,对所述待处理矩阵进行外积运算和累加运算,以获取目标矩阵,并将所述目标矩阵写回至所述矩阵缓存器中。9.根据权利要求8所述的基于外积的矩阵乘法运算方法,其特征在于,所述根据待处理矩阵的数据类型,对所述待处理矩阵进行外积运算和累加运算,包括:
判断所述待处理矩阵的数据类型和数据精度;根据所述数据类型和数据精度确定进行单次外积运算的行数和列数,并进行外积运算;根据所述数据类型和数据精度确定进行加法运算的次数,将外积运算的结果直接写回矩阵缓存器或经过单次或多次加法运算后写回矩阵缓存器。10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求8至9任一项所述的基于外积的矩阵乘法运算方法。

技术总结
本申请提供一种基于外积的矩阵乘法运算处理器、方法及介质,应用于GPGPU中,所述处理器包括:寄存器堆、矩阵缓存器和计算单元;所述寄存器堆用于存储不同数据类型的待处理矩阵;所述矩阵缓存器用于按照预设排布方式缓存各所述待处理矩阵;所述计算单元用于对不同数据类型的各所述待处理矩阵进行外积运算和累加运算,以获取目标矩阵,并将所述目标矩阵写回至所述矩阵缓存器中。本申请所述的基于外积的矩阵乘法运算处理器针对神经网络计算中常采用的低精度运算方式,提出了通用的设计方案,可以支持不同精度和对应的大小的矩阵乘法运算操作,同时在计算核心中增加片上存储以及计算单元,来提升运算的效率。来提升运算的效率。来提升运算的效率。


技术研发人员:李晗 梁晓峣 景乃锋 刘子钊 李钢
受保护的技术使用者:上海交通大学
技术研发日:2023.06.12
技术公布日:2023/9/14
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐