CN113076521A - 一种基于gpgpu可重构架构的方法及计算系统 - Google Patents
一种基于gpgpu可重构架构的方法及计算系统 Download PDFInfo
- Publication number
- CN113076521A CN113076521A CN202110616126.1A CN202110616126A CN113076521A CN 113076521 A CN113076521 A CN 113076521A CN 202110616126 A CN202110616126 A CN 202110616126A CN 113076521 A CN113076521 A CN 113076521A
- Authority
- CN
- China
- Prior art keywords
- matrix
- data
- mode
- row
- elements
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/15—Correlation function computation including computation of convolution operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
Abstract
本发明公开了一种基于GPGPU可重构架构的方法及计算系统,方法包括根据计算中矩阵乘法或卷积运算的参与程度,选择架构模式,其中,所述架构模式包括通用图形处理器模式和混合脉动阵列模式;当选择通用图形处理器模式时,计算系统中的寄存器被配置为以通用图形处理器的通用矩阵乘法方式进行数据存取与运算;当选择混合脉动阵列模式时,计算系统中的寄存器被配置为以混合脉动阵列的直接卷积方式进行数据存取与运算。计算系统包括寄存器,寄存器的架构模式使用上述方法进行配置。本发明公开的基于GPGPU可重构架构的方法及计算系统,对于不同场景的需要,能够进行灵活配置,既可以满足通用性需求,还弥补了专用加速器灵活性不足的缺点。
Description
技术领域
本发明涉及计算领域,更具体涉及一种基于GPGPU可重构架构的方法及计算系统。
背景技术
深度神经网络(DNN)是当前人工智能(AI)应用的基础,例如:语音识别、图像识别、视频处理、自动驾驶、癌症检测、游戏对抗等,而且在部分领域,DNN已经超过了人类的精确性。
图1显示了一个较为简单的神经网络计算过程:输入层的神经元将接收到的信息传递到神经网络中间层(也称为隐藏层),而隐藏层的“权重和”最终会传输到输出层,并最终呈现给用户。通常会把神经元的输入或输出称为“激活”(activation),而把突触称为“权重”(weight)。在本发明中,包括说明书及其附图中,后续会使用activation/weight、激活/权重、输入或输出/权重。本领域技术人员应该理解,这些术语是可以替换使用的。
图2展示了每层的计算:
Wij是权重,xi是输入激活,yj是输出激活,f(.)是一个非线性函数,b则是偏置。
一种常用的DNN形式被称为卷积神经网络(CNN),含有多个卷积(CONV)层。在这样的网络中,每层都会产生输入数据的高层次抽象,称为特征图(fmap或feature map)。一个典型的CNN模型如图3所示,会包含5到1000个CONV层,以及在CONV层之后包含1到3层的全连层。其余包含的非线性层、归一化层、池化层等,因为功耗极小不在本文讨论范围内。
一个2维卷积输入包括输入特征图(input fmap)和卷积核(filter或者称为weight),操作如下:
1)输入特征图是H * W的矩阵,比如28x28的图片像素,卷积核是R * S的矩阵,比如3x3核,如图4所示;
2)使用卷积核和输入特征图左上角对应大小的矩阵对应元素相乘并相加得到输出特征图最左上角的一个元素。对应相乘的操作,如图5所示;
3)滑动卷积核与输入特征图对应大小矩阵继续对应元素相乘并得到输出特征图下一个元素,如图6所示。
当输入特征图具有多个通道(channel),一个具体的实例就是图片从黑白图片变成了彩色图片,于是具有RGB三个通道,则卷积操作变成图7所示,每个通道都有独立的输入特征图和卷积核,不同通道之间最终进行加法合并操作。
当输入特征图具有多个(比如N个)图片,且拥有多个卷积核(比如M个)时,卷积操作则为图8所示。
如此,得到了最终多维卷积操作公式如下:
式中各个参数的含义如下:
O 输出特征图矩阵;
I 输入特征图矩阵;
W 卷积核矩阵;
B 偏置矩阵;
N 三维特征图批次大小;
M 三维卷积核数目/输出特征图通道数目;
C 输入特征图/卷积核通道数目;
H/W 输入特征图平面高度/宽度;
R/S 卷积核平面高度/宽度;
E/F 输出特征图平面高度/宽度;
U 切分窗口的步长。
一个典型的例子是AlexNet,如图9所示,其对应的卷积操作参数如下所示:
H/W R/S E/F C M U
CONV1 227 11 55 3 96 4
CONV2 21 5 27 48 256 1
CONV3 15 3 13 256 284 1
CONV4 15 3 13 192 284 1
CONV5 15 3 13 192 256 1
其中,CONV1 、CONV2、 CONV3、 CONV4和 CONV5表示卷积层;
H/W、R/S、E/F、C、M和U表示CNN形状参数。
现有的主流CPU难以高性能、高效能地完成卷积计算。相比一般的通用计算,卷积计算中存在的大量数据复用以及计算的规则性,在架构设计和计算优化有很大的优化空间,由此诞生众多针对卷积神经网络加速的芯片。
通用图形处理器(GPGPU)加速器会采用通用矩阵乘(GEMM)方式实现卷积加速。GEMM的应用在CNN之前已经非常广泛,很多线性代数库充分结合了矩阵计算中的数据复用关系和处理器缓存的层次设计结构,对GEMM乘法进行了充分的优化。C = AB + C的矩阵乘法可以表示为:
for i = 1 : m
for j = 1 : n
for k = 1 : t
C (i, j) = A(i, k) * B(k, j) + C(i, j)
而当前主流的GPGPU会针对矩阵乘做专门的硬件加速,如图10所示。通用矩阵乘法被广泛应用于卷积操作,具体实现方式如下图11所示。输入矩阵M*K和K*N,其中M为行数,N为列数,M=H*W,K=R*S*C,N=K。一个简单的实例如图12所示。而一个通用GPGPU架构如图13所示。
而如果将矩阵存储在内存中(DDR),直接按三层循环进行矩阵计算,那么每个周期需要访问a, b, c三个数,此时性能会受限于DDR带宽。将矩阵放在片上的高速缓存(Cache)中是一个好的选择,但是片上高速缓存的容量往往较小。解决这一个矛盾的方法是对大的矩阵进行分块,此时矩阵计算可以表示为
for i = 1 : MR : m // step MR
for j = 1 : NR : n // step NR
for k = 1 : KC : c // step KC
// block-dot product in cache
// Csub_{NR*MR} += Asub_{MR*KC}*B_sub(KC*NR)
// opt. mirco kernel
for ir = 1:MR
for jr = 1:NR
for kr = 1: KC
Csub(ir,jr) += Asub(ir,kr)*Bsub(kr,jr);
采用这一分块方式,假设矩阵存储在DDR,分块后的矩阵存储在片上高速缓存;完成MR×NR×NC次乘法计算只需要从DDR获取MR×NR+NR×NC+MR×NC个数据,合理的分块能降低对DDR的访问。
针对具有不同存储层次的GPGPU以及不同大小的矩阵计算而言,有不同的分块方式以达到峰值性能。这是一种简单,高效且相对灵活的选择,其优势包括:
1)简单,计算单元实现GEMM的微小内核(micro kernel)即可,易于集成;
2)灵活,支持所有可用GEMM加速的算法;
3)编译器设计和调度有很多参考实现。
另外一种实现矩阵乘法的方式被称为脉动阵列加速器,典型代表是Google TPU。其计算核心为一个256x256的二维脉动阵列,如图14所示,其中的每个运算单元(Cell)如图15所示。脉动阵列就是让数据在运算单元的阵列中进行流动,减少访存的次数,并且使得结构更加规整,布线更加统一,提高频率。图16显示了传统计算结构和脉动阵列结构的对比。图16左边是传统计算架构,可用于各种形式的计算,比如CPU,GPU就是这种架构,用寄存器存储数据,一个程序告诉ALU(算术逻辑单元)从寄存器中取数,然后执行一种操作(例如加法,乘法或者逻辑操作),然后再把结果写回指定寄存器中。脉动阵列则是,第一个ALU取数,经过处理后被传递到下一个ALU,同时第二个数据进入第一个ALU,依次类推。在第一个数据到最后一个ALU之后,每个周期都能得到一个结果。一个Y = X * W矩阵乘的TPU脉动阵列实现方式如图17所示。
这样,脉动阵列可以平衡IO读写与运算,在消耗较小内存(memory)带宽的情况下提高吞吐率,有效解决数据存取速度远远大于数据处理速度的结构。脉动阵列本身只是一个有数据流动的结构,根据不同的应用会有不同的数据进行流动以及不同的流动方向。
卷积神经网络(CNN)因为它的强大精确性广泛应用于现代AI系统,但是也带来了吞吐率和能耗效率的巨大挑战。这是因为,计算需要读取和写入大量的数据,以及芯片中和芯片之间的数据移动,而这些数据移动消耗的功耗甚至会超过计算本身。而在CNN中卷积计算占整个计算(包括推理,测试,训练)90%以上,因此对于任何大小的卷积计算,如何最大程度地减少数据移动对于吞吐率和功能性能的影响就变得至关重要。现有技术在解决此问题上存在以下问题:
GPU加速器,虽然矩阵计算进行了很好的优化,但对于卷积计算而言,依旧存在缺陷:
1.卷积转矩阵计算过程中针对Tensor进行了整形(Reshape)和复制(Duplicate),这会增加带宽的消耗;
2.时域的执行带来的是数据重复加载,不如脉动阵列的空域执行能效比高。
脉动阵列,虽然可以减少数据的重复,相比于GPU对卷积运算有明显的性能提升,但是依然存在以下问题:
1.失去了灵活性,当神经网络模型不断更新迭代时,无法灵活支持所有GEMM加速算法,无法支持除矩阵运算之外的通用运算,以及应用场景狭窄即带来市场需求缩小。
2.这里仍有一定的局限性,即它们都只利用了空域的累积特性,却完全放弃了GPGPU的时域累加特性,使得卷积仍然绕不开矩阵操作。而一旦卷积转换为矩阵则会增加大量的重复数据,使得输入/输出数据的移动无法继续减小从而优化能效。
发明内容
有鉴于此,本发明提出了一种基于GPGPU可重构架构的方法及计算系统,集时域和空域运算各自的优缺点于一身,既利用脉动阵列中空域累加特性,移动结果到相邻的运算单元(二维),也利用GPGPU中的时域累积特性,在单个运算单元中进行累加(一维),减少数据移动,直接实现卷积操作,实现一种高效的运算数据传输,从而达到超过普通脉动阵列的性能优势, 从而达到能效的最低。
本发明的架构区别于市场上脉动阵列技术在于:通常的脉动阵列只能实现矩阵操作,任何卷积都需要预先转换为矩阵乘加,无法最大程度地重复利用数据,损失部分能效。对GPGPU进行可重构配置使其直接进行卷积运算,应用于卷积神经网络加速,相对于脉动阵列的吞吐率和能耗效率有明显的提升,但同时保持GPGPU的灵活性,使其灵活适用于各种应用场景。本发明的方案支持从8位整型到32位浮点等各种混合精度计算,例如FP16、BF16、FP32等。同时,不同的神经网络层可以采用不同的精度实现实时切换精度。在具体实现过程中,可重构模式动态重组计算资源和带宽。根据精度需求,让计算资源和带宽接近满负荷进行计算,高效支持多种混合精度神经网络。
第一方面,本发明提供了一种基于GPGPU可重构架构的方法,包括:根据计算中矩阵乘法或卷积运算的参与程度,选择架构模式,其中,所述架构模式包括通用图形处理器模式和混合脉动阵列模式;当选择通用图形处理器模式时,计算系统中的寄存器被配置为以通用图形处理器的通用矩阵乘法方式进行数据存取与运算;当选择混合脉动阵列模式时,计算系统中的寄存器被配置为以混合脉动阵列的直接卷积方式进行数据存取与运算。
在第一方面的一种可能的实现方式中,当所选择的架构模式与计算系统当前所采用的架构模式不同时,对架构模式进行切换。
在第一方面的一种可能的实现方式中,等待之前未执行完的计算任务完成并刷新缓存完成后,将所述计算系统中的寄存器从当前所采用的架构模式重新配置为所选择的架构模式;模式重构完成后,开始接受新的计算任务。
在第一方面的一种可能的实现方式中,所述计算系统中的寄存器被配置为多个计算单元,每个计算单元被配置为同时完成一个或多个乘法运算并将乘法运算的结果相加得到每个计算单元的计算结果。
在第一方面的一种可能的实现方式中,每个计算单元被配置为同时完成最多8个乘法运算并将乘法运算的结果相加得到每个计算单元的计算结果。
在第一方面的一种可能的实现方式中,在所述通用图形处理器模式下,各个计算单元的计算结果通过指令进行组合或累加。
在第一方面的一种可能的实现方式中,在所述混合脉动阵列模式下,对于一维卷积操作:将卷积核数据的m个元素固定于计算单元中,使输入数据的n个元素按时钟周期依次滑动进入计算单元,其中,m、n为自然数且m≤n;在每个时钟周期,使卷积核数据的m个元素分别一一对应于输入数据的n个元素中的m个数据,使卷积核数据的m个元素与滑动到计算单元中对应位置上的输入数据的对应的m个元素分别进行乘法运算并将乘积相加,存为当前时钟周期的计算结果;依次输出每个时钟周期的计算结果,得到n-m+1个计算结果,作为输出数据的n-m+1个元素。
在第一方面的一种可能的实现方式中,在所述混合脉动阵列模式下,对于二维卷积操作:对于m行m列的卷积核矩阵和nr行nc列的输入矩阵,输出矩阵为nr-m+1行nc-m+1列的矩阵,nr、nc为自然数且m≤nr,m≤nc;使卷积核矩阵的m行元素的每一行分别与输入矩阵的第i到i+m行元素中的对应一行进行m次一维卷积操作,得到m个数据行,每个数据行有nc-m+1个元素,将m个数据行上的对应元素累加,得到输出矩阵的第i行的nc-m+1个元素,其中i=1, 2, ..., nr-m+1。
在第一方面的一种可能的实现方式中,在所述混合脉动阵列模式下,对于二维卷积操作:将计算单元组成计算单元阵列。
在第一方面的一种可能的实现方式中,在所述混合脉动阵列模式下,对于二维卷积操作:所述计算单元阵列为m行(nr-m+1)列的计算单元阵列,其中第i列计算单元用于得到输出矩阵的第i行的运算。
在第一方面的一种可能的实现方式中,在所述混合脉动阵列模式下,对于二维卷积操作:按时钟周期,卷积核矩阵的行在计算单元阵列上的一个方向上复用,输入矩阵的行沿计算单元阵列的对角线传播,计算单元阵列中各个计算单元的计算结果沿计算单元阵列上的另一个方向传播累加。
在第一方面的一种可能的实现方式中,在所述混合脉动阵列模式下,对于二维卷积操作:卷积核矩阵的m行分别对应于计算单元阵列的m行,按时钟周期横向复用,与输入矩阵的相应行进行一维卷积操作;输入矩阵从第i行起至第i+m-1行,按时钟周期,依次进入计算单元阵列的第i列中的m个计算单元;计算单元阵列的第i列中的m个计算单元将每个时钟周期的计算结果按时钟周期依次纵向传播到相邻的下一计算单元,从而在同一列的纵向上最后一个计算单元按时钟周期依次输出得到输出矩阵第i行的nc-m+1个元素。
在第一方面的一种可能的实现方式中,nr = nc。在此情况下,可以用n来代替nr和nc。
在第一方面的一种可能的实现方式中,在人工神经网络中,卷积核数据为网络权重数据,输入数据为输入特征图数据,输出数据为输出特征图数据。
在第一方面的一种可能的实现方式中,在人工神经网络中,卷积核矩阵为网络权重矩阵,输入矩阵为输入特征图矩阵,输出矩阵为输出特征图矩阵。
第二方面,本发明提供了一种计算系统,其包括寄存器。所述寄存器的架构模式被配置为根据计算中矩阵乘法或卷积运算的参与程度而进行切换,其中,所述架构模式包括通用图形处理器模式和混合脉动阵列模式;当切换到通用图形处理器模式时,所述寄存器被配置为以通用图形处理器的通用矩阵乘法方式进行数据存取与运算;当切换到混合脉动阵列模式时,所述寄存器被配置为以混合脉动阵列的直接卷积方式进行数据存取与运算。
在第二方面的一种可能的实现方式中,所述寄存器被配置为多个计算单元,每个计算单元被配置为同时完成一个或多个乘法运算并将乘法运算的结果相加得到每个计算单元的计算结果。
在第二方面的一种可能的实现方式中,每个计算单元被配置为同时完成最多8个乘法运算并将乘法运算的结果相加得到每个计算单元的计算结果。
在第二方面的一种可能的实现方式中,在所述通用图形处理器模式下,所述寄存器被配置为将各个计算单元的计算结果通过指令进行组合或累加。
在第二方面的一种可能的实现方式中,在所述混合脉动阵列模式下,所述寄存器被配置为,对于一维卷积操作:将卷积核数据的m个元素固定于计算单元中,使输入数据的n个元素按时钟周期依次滑动进入计算单元,其中,m、n为自然数且m≤n;在每个时钟周期,使卷积核数据的m个元素分别一一对应于输入数据的n个元素中的m个数据,使卷积核数据的m个元素与滑动到计算单元中对应位置上的输入数据的对应的m个元素分别进行乘法运算并将乘积相加,存为当前时钟周期的计算结果;依次输出每个时钟周期的计算结果,得到n-m+1个计算结果,作为输出数据的n-m+1个元素。
在第二方面的一种可能的实现方式中,在所述混合脉动阵列模式下,所述寄存器被配置为,对于二维卷积操作:对于m行m列的卷积核矩阵和nr行nc列的输入矩阵,输出矩阵为nr-m+1行nc-m+1列的矩阵,nr、nc为自然数且m≤nr,m≤nc;使卷积核矩阵的m行元素的每一行分别与输入矩阵的第i到i+m行元素中的对应一行进行m次一维卷积操作,得到m个数据行,每个数据行有nc-m+1个元素,将m个数据行上的对应元素累加,得到输出矩阵的第i行的nc-m+1个元素,其中i=1, 2, ..., nr-m+1。
在第二方面的一种可能的实现方式中,在所述混合脉动阵列模式下,所述寄存器被配置为,对于二维卷积操作:将计算单元组成计算单元阵列。
在第二方面的一种可能的实现方式中,在所述混合脉动阵列模式下,所述寄存器被配置为,对于二维卷积操作:所述计算单元阵列为m行(nr-m+1)列的计算单元阵列,其中第i列计算单元用于得到输出矩阵的第i行的运算。
在第二方面的一种可能的实现方式中,在所述混合脉动阵列模式下,所述寄存器被配置为,对于二维卷积操作:按时钟周期,卷积核矩阵的行在计算单元阵列上的一个方向上复用,输入矩阵的行沿计算单元阵列的对角线传播,计算单元阵列中各个计算单元的计算结果沿计算单元阵列上的另一个方向传播累加。
在第二方面的一种可能的实现方式中,在所述混合脉动阵列模式下,所述寄存器被配置为,对于二维卷积操作:卷积核矩阵的m行分别对应于计算单元阵列的m行,按时钟周期横向复用,与输入矩阵的相应行进行一维卷积操作;输入矩阵从第i行起至第i+m-1行,按时钟周期,依次进入计算单元阵列的第i列中的m个计算单元;计算单元阵列的第i列中的m个计算单元将每个时钟周期的计算结果按时钟周期依次纵向传播到相邻的下一计算单元,从而在同一列的纵向上最后一个计算单元按时钟周期依次输出得到输出矩阵第i行的nc-m+1个元素。
在第二方面的一种可能的实现方式中,nr = nc。在此情况下,可以用n来代替nr和nc。
在第二方面的一种可能的实现方式中,在人工神经网络中,卷积核数据为网络权重数据,输入数据为输入特征图数据,输出数据为输出特征图数据。
在第二方面的一种可能的实现方式中,在人工神经网络中,卷积核矩阵为网络权重矩阵,输入矩阵为输入特征图矩阵,输出矩阵为输出特征图矩阵。
第三方面,本发明提供了一种用于在计算系统中重构架构的装置,架构所述装置包括处理器和存储器。所述存储器中存储有计算机程序,当所述计算机程序由所述处理器执行时,使得所述处理器实现根据本发明的第一方面所提供的方法。
附图说明
本发明包括说明书附图,其应为视为包含在说明书中并且构成说明书的一部分,且与说明书一起示出了本发明的各种示例性实施例、特征和方面,并且用于解释本发明的原理。
图1示出了较为简单的神经网络计算过程。
图2示出了神经网络每层的计算。
图3示出了一个典型的CNN模型。
图4示出了单通道二维卷积操作示例。
图5示出了二维卷积对应相乘操作。
图6示出了二维卷积滑窗操作。
图7示出了多通道卷积操作示例。
图8示出了多维卷积操作示例。
图9示出了AlexNet中的卷积操作示例。
图10示出了主流的GPGPU中的矩阵乘操作。
图11示出了卷积操作转为矩阵乘操作的方式。
图12示出了卷积操作转为矩阵乘操作的示例。
图13示出了主流GPGPU架构。
图14示出了二维脉动阵列架构。
图15示出了二维脉动阵列中运算单元(Cell)的结构。
图16示出了传统计算结构和脉动阵列结构的对比。
图17示出了Y = X * W矩阵乘的TPU脉动阵列实现方式。
图18示出了混合脉动阵列架构的一维卷积操作。
图19示出了混合脉动阵列架构一维卷积操作的步骤一。
图20示出了混合脉动阵列架构一维卷积操作的步骤二。
图21示出了混合脉动阵列架构一维卷积操作的步骤三。
图22示出了混合脉动阵列架构二维卷积操作。
图23示出了针对5x5的卷积核,PE的内部操作。
图24示出了针对5x5的卷积核,混合脉动阵列架构实现一行卷积操作。
图25示出了PE阵列进行多行卷积操作。
图26示出了PE阵列卷积操作的示例 。
图27示出了基于GPGPU重构混合脉动阵列的架构。
图28示出了PE阵列针对AlexNet CONV2/CONV3直接进行卷积操作。
图29示出了PE阵列针对AlexNet CONV1直接进行卷积操作。
图30示出了GPGPU架构中的DOT8操作。
图31示出了配置成GPGPU架构的示例。
图32示出了5*5卷积操作在GPGPU架构上实现方式的示例。
图33示出了模式配置流程图。
具体实施方式
下面通过实施例,并结合附图,对本发明的技术方案作进一步详细的说明,但本发明不限于下面的实施例。
以下将参考附图详细说明本发明的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其他实施例。
另外,为了更好的说明本发明,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本发明同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本发明的主旨。
以下将根据本发明的实施例,引入一种基于GPGPU可重构架构的方法。
本发明的方法的主要目的在于,能够根据计算中矩阵乘法或卷积运算的参与程度,选择架构模式。在后文中,将给出几个实例,以便本领域技术人员理解在什么样的计算目标或计算环境中,可以选择相应的架构模式。而且,本领域技术人员应该明白,架构模式的选择可以是手动指定或更改的,也可以是通过程序控制的,甚至可以是自动判断选择的。
在本发明的示例中,架构模式实际上仅包括通用图形处理器模式和混合脉动阵列模式两种。但本领域技术人员应该理解,在本发明的教导下,架构模式的数目可以不限于两种。
在本发明的示例中,当选择通用图形处理器模式时,计算系统中的寄存器被配置为以通用图形处理器(General-Purpose computing on Graphics Processing Units,简称GPGPU)的通用矩阵乘法(GEneral Matrix Multiplication,简称GEMM)方式进行数据存取与运算。
而当选择混合脉动阵列模式时,计算系统中的寄存器被配置为以混合脉动阵列(HyBrid-SysTolic)的直接卷积方式进行数据存取与运算。
本领域技术人员应该理解,这里所说的卷积(convolution)或卷积运算,实际上与相关(correlation)运算或滑窗滤波(filtering)运算具有相同或相似的含义。在人工神经网络领域,本领域技术人员习惯于将这样的操作称为卷积运算,其具体操作方式可以参看下文更详细的示例。
架构模式的选择可能发生在计算系统正在运行之时。因此,当所选择的架构模式与计算系统当前所采用的架构模式不同时,需要对架构模式进行切换。
优选地,需要等待计算系统还未执行完的计算任务完成并刷新缓存完成后,再将计算系统中的寄存器从当前所采用的架构模式重新配置为所选择的架构模式。模式重构完成后,开始接受新的计算任务。
本领域技术人员应该明白,如前所述,在脉动阵列或本发明所提出的混合脉动阵列的架构中,第一个ALU取数,经过处理后被传递到下一个ALU,同时第二个数据进入第一个ALU,依次类推。在第一个数据到最后一个ALU之后,每个周期都能得到一个结果。这种情况下,每个计算单元既包含运算单元ALU,也包含寄存器,以便按照时钟周期的顺序暂存数据,部分求和,从而在某个时钟周期输出卷积运算的部分或全部结果。因此,可以把脉动阵列或混合脉动阵列中的每个计算单元(PE)看作带有寄存器的运算单元,或包含运算单元的寄存器。
根据本发明的实施例,计算系统中的寄存器被配置为多个PE,每个PE被配置为同时完成一个或多个乘法运算并将乘法运算的结果相加得到每个计算单元的计算结果。
在一种优选实现方式中,每个PE被配置为同时完成最多8个乘法运算并将乘法运算的结果相加得到每个计算单元的计算结果。例如,参见下文中示例的DOT8运算单元。由于本发明基于GPGPU的基础架构,因此可以利用DOT操作,即在一个运算单元中,一个时钟周期最多完成8次乘加操作,并移动结果到相邻的运算单元,大幅度提高脉动阵列的性能功能。相比之下,通常的脉动阵列只能利用空域累加特性,在一个运算单元中,一个时钟周期完成一次乘加操作,并移动结果到相邻的运算单元。现有技术中尽管提出了脉动阵列技术,但并没有提出利用GPGPU的DOT操作,以在一个运算单元中,一个时钟周期完成8次乘加操作。相比现有的脉动阵列技术,该优选方案大幅度提高了运算性能和效率。
在通用图形处理器模式下,各个计算单元之间是没有联系的,也不需要将一个计算单元的计算结果传递或传播到相邻或其他计算单元。实际上,各个计算结果可以通过指令进行组合或累加。
下面先来介绍本发明所引入的全新的混合脉动阵列的架构。
混合脉动阵列(HyBrid-SysTolic)架构
在人工神经网络的实施例中,为了示例混合脉动阵列的架构,在一维操作中,将网络权重数据表示为卷积核数据,输入特征图数据表示为输入数据,输出特征图数据则表示为输出数据。相应地,在二维操作中,卷积核矩阵为网络权重矩阵,输入矩阵为输入特征图矩阵,输出矩阵为输出特征图矩阵。
图18示出了HyBrid-SysTolic架构的一维卷积操作。
一维卷积操作实现方式如下。它会最大程度复用卷积运算,把一行权重(Weight)放在寄存器中,滑动输入数据(Activation),并保持“部分和”(Psum)在寄存器(计算单元)中,如图18所示。
下面通过图19-21来分步骤描述一维卷积操作。
步骤一:Weight值包括W00, W01, W02,移入PE之中。Activation数据包括X00,X01, X02,也移入PE。一个时钟周期(cycle)完成乘加操作,如图19所示得到Y00。
步骤二:Weight值仍为W00, W01, W02,移入PE之中。Activation数据滑动一格,包括X01, X02, X03,也移入PE。一个时钟周期(cycle)完成乘加操作,如图20所示得到Y01。
步骤三:Weight值仍为W00, W01, W02,移入PE之中。Activation数据滑动一格,包括X02, X03, X04,也移入PE。一个时钟周期(cycle)完成乘加操作,如图21所示得到Y02。
由此,图18-21示例了如何通过本发明所引入的混合脉动阵列实现卷积核W(W00,W01, W02,可看作一个向量)与输入数据X(X00, X01, X02, X03, X04,可看作另一个向量)之间的一维卷积运算,得到输出数据Y(Y00, Y01, Y02,输出向量)。
更一般地,一维卷积操作可以被描述为遵循如下规则:
1)将卷积核数据的m个元素固定于计算单元中,使输入数据的n个元素按时钟周期依次滑动进入计算单元,其中,m、n为自然数且m≤n。在图18-21的示例中,m=3,n=5。
2)在每个时钟周期,使卷积核数据的m个元素分别一一对应于输入数据的n个元素中的m个数据。例如,第一时钟周期,W00, W01, W02与X00, X01, X02一一对应;第二时钟周期,W00, W01, W02与X01, X02, X03一一对应;第三时钟周期,W00, W01, W02与X02, X03,X04一一对应。
3)使卷积核数据的m个元素与滑动到计算单元中对应位置上的输入数据的对应的m个元素分别进行乘法运算并将乘积相加,存为当前时钟周期的计算结果。如上示例中,W与X相应元素分别进行乘法运算并将乘积相加,分别得到Y00, Y01, Y02。
4)依次输出每个时钟周期的计算结果,得到n-m+1个计算结果,作为输出数据的n-m+1个元素。例如,在图18-21的示例中,n-m+1 = 5-3+1 = 3,即,输出数据为Y00, Y01, Y02三个元素。
图22示出了HyBrid-SysTolic架构二维卷积操作。
二维卷积操作实现方式是,Weight行在PE阵列上横向复用,Activation行在PE阵列上沿对角线传播,Psum沿纵向传播并累加。如图22所示,实现的二维卷积操作是,卷积核矩阵Weight是3x3的矩阵,输入矩阵Activation是5x5的矩阵,输出矩阵即部分和Psum是3x3的矩阵。尽管这里示例的输入矩阵的行数与列数相同,但本领域技术人员应该理解,输入矩阵的行数与列数可以不相同。
对二维卷积操作进行分解。实际上是针对不同的行,不断重复一维卷积操作,然后进行了求和。在图22的例子中,PE1会执行Weight的第一行(卷积运算符“*”左侧的Row 1)和Activation的第一行(卷积运算符“*”右侧的Row 1)的一维卷积操作,PE2会执行Weight的第二行(卷积运算符“*”左侧的Row 2)和Activation的第二行(卷积运算符“*”右侧的Row2)的一维卷积操作,PE3会执行Weight的第三行(卷积运算符“*”左侧的Row 3)和Activation的第三行(卷积运算符“*”右侧的Row 3)的一维卷积操作。再将卷积操作的计算结果进行累加,得到部分和的第一行(箭头表示部分和的传播方向,即累加到上方的Row1)。注意到,这里相当于卷积核矩阵Weight在输入矩阵Activation的第1-3行上滑动。
类似地,PE4会执行Weight的第一行(卷积运算符“*”左侧的Row 1)和Activation的第二行(卷积运算符“*”右侧的Row 2)的一维卷积操作,PE5会执行Weight的第二行(卷积运算符“*”左侧的Row 2)和Activation的第三行(卷积运算符“*”右侧的Row 3)的一维卷积操作,PE6会执行Weight的第三行(卷积运算符“*”左侧的Row 3)和Activation的第四行(卷积运算符“*”右侧的Row 4)的一维卷积操作。再将卷积操作的计算结果进行累加,得到部分和的第二行(箭头表示部分和的传播方向,即累加到上方的Row 2)。注意到,这里相当于卷积核矩阵Weight在输入矩阵Activation的第2-4行上滑动。
类似地,PE7会执行Weight的第一行(卷积运算符“*”左侧的Row 1)和Activation的第三行(卷积运算符“*”右侧的Row 3)的一维卷积操作,PE8会执行Weight的第二行(卷积运算符“*”左侧的Row 2)和Activation的第四行(卷积运算符“*”右侧的Row 4)的一维卷积操作,PE9会执行Weight的第三行(卷积运算符“*”左侧的Row 3)和Activation的第五行(卷积运算符“*”右侧的Row 5)的一维卷积操作。再将卷积操作的计算结果进行累加,得到部分和的第三行(箭头表示部分和的传播方向,即累加到上方的Row 3)。注意到,这里相当于卷积核矩阵Weight在输入矩阵Activation的第3-5行上滑动。
每个PE都会包括DOT8操作,即一个时钟周期内完成8个乘法和8个加法操作,针对5x5的卷积核,则只需其中的5个乘法和5个加法操作,如图23所示,即X00*W00 + X01 *W01+ X02*W02 + X03*W03 + X04*W04。
更一般地,上述的二维卷积操作可以被描述为遵循如下规则:
1)对于m行m列的卷积核矩阵和nr行nc列的输入矩阵,输出矩阵为nr-m+1行nc-m+1列的矩阵。例如,图22的例子中,m=3,nr = nc = n = 5,nr-m+1 = nc-m+1 = n-m+1 = 5-3+1 = 3。即,在nr = nc的情况下,可以用n一个变量来代替nr和nc。
2)使卷积核矩阵的m行元素的每一行分别与输入矩阵的第i到i+m行元素中的对应一行进行m次一维卷积操作,得到的m个数据行,每个数据行有nc-m+1个元素。也就是说,卷积核矩阵在输入矩阵的第i到i+m行上滑动。例如,卷积核矩阵Weight在输入矩阵Activation的第1-3行上滑动(PE1、PE2、PE3),卷积核矩阵Weight在输入矩阵Activation的第2-4行上滑动(PE4、PE5、PE6),卷积核矩阵Weight在输入矩阵Activation的第3-5行上滑动(PE7、PE8、PE9)。
3)将m个数据行上的对应元素累加,得到输出矩阵的第i行的nc-m+1个元素,其中i=1, 2, ..., nr-m+1。例如,卷积核矩阵Weight在输入矩阵Activation的第1-3行上滑动(PE1、PE2、PE3)得到Psum的第一行,卷积核矩阵Weight在输入矩阵Activation的第2-4行上滑动(PE4、PE5、PE6)得到Psum的第二行,卷积核矩阵Weight在输入矩阵Activation的第3-5行上滑动(PE7、PE8、PE9)得到Psum的第三行。
图24示出了针对5x5的卷积核,混合脉动阵列架构实现一行卷积操作。在图24的上侧,列出了矩阵卷积式。Weight表示卷积核矩阵,其每行数据分别标为1-5,且在图24下侧的每个PE中被复用。iFmap或ifmap表示输入特征图矩阵,其每行数据也分别标为1, 2, 3, 4,5, …(图24的例子中输入矩阵一行有31个元素)。图24的卷积式的等号右侧是输出特征图矩阵的一行(例如,第一行)。图24的下侧,每个PE中表示了三组数据,从上至下分别为Weight、ifmap和psum(或OFmap或ofmap,即输出特征图)。
针对5x5卷积核的卷积操作,如图24所示,PE5中在第一时钟周期(Cycle1)通过DOT8操作(见图30及其说明)得到输出特征图OFmap的元素1(PE5在Cycle1进行Weight第5行与图中iFmap第5行的前5个元素的相乘,乘积相加后得到OFmap元素1在PE5的部分和),纵向传播(PE间的传播如左侧箭头所示,计算结果的传播如虚线箭头所示)到PE4进行累加(PE4在Cycle2进行Weight第4行与图中iFmap第4行的前5个元素的相乘,乘积相加后,再与从PE5传播来的部分和累加,得到OFmap元素1在PE4的部分和),这里完成空域的累加,最终在第五时钟周期(Cycle5)在PE1中累加得到OFmap的元素1(等式右侧的“1”)。按照顺序,分别在第六时钟周期(Cycle6)在PE1中累加得到OFmap的元素2,在第七时钟周期(Cycle7)在PE7中累加得到OFmap的元素3。以此类推,最终得到OFmap的第一行的完整数据结果。
PE阵列如图25所示,阵列的每一列都可得到Psum的每一行:例如,ifmap为31x31的矩阵,weight为5x5的矩阵,步长为1,卷积结果为27x27,则需要5x27大小的PE阵列来完成卷积操作。PE第一列用来产生OFmap的第一行27个数据,PE第二列用来产生OFmap的第二行27个数据,依次类推,如图26所示。在图27所示的架构下,可以配置成2个16x32 PEs,在适当需求下组合成32x32 PEs,每个PE为DOT8。
此阵列可根据卷积操作的大小,进行硬件可重构,配置成最优的执行架构,例如针对AlexNet的CONV2层时,会选取5x27大小的PE阵列进行卷积操作,如图28中的上层框,针对AlexNet的CONV3层时,会选取3x13大小的PE阵列进行卷积操作,如图28中的下层框。其余的PE阵列可以用于其他卷积操作,如无操作则会被时钟屏蔽掉(Clock-Gated)。
当如果需要做比较大的卷积操作时,例如AlexNet的CONV1层时,则需要拼接2个16x32的PE阵列,以满足11x55的大小,如图29所示。
更一般地,在所述混合脉动阵列模式下,对于二维卷积操作:将计算单元组成计算单元阵列,如图25-29所示。其中,所述计算单元阵列可以为m行(nr-m+1)列的计算单元阵列,其中第i列计算单元用于得到输出矩阵的第i行的运算,如图26所示。
按时钟周期,卷积核矩阵的行在计算单元阵列上的一个方向(例如横向)上复用,输入矩阵的行沿计算单元阵列的对角线传播(所谓对角线传播,实际上是加入了时间的维度,即一方面,每行计算单元对应不同的输入矩阵行,另一方面,输入矩阵的同一行也按时钟时期依次滑动从而与Weight的相应行元素进行乘加,而且各个PE批次慢一拍,详见下文),计算单元阵列中各个计算单元的计算结果沿计算单元阵列上的另一个方向(例如纵向)传播累加,如图24所示。
二维卷积操作可以被描述为如下规则:
1)卷积核矩阵的m行分别对应于计算单元阵列的m行,按时钟周期横向复用,与输入矩阵的相应行进行一维卷积操作。
参见图24,m=5,卷积核Weight的第1-5行分别在PE5到PE1中复用。以PE5为例,从第一时钟周期开始,始终是Weight的第5行进行乘法运算。如图24所示,在计算输出矩阵第1行的情况下,Weight的第5行与输入矩阵的第5行进行一维卷积操作。同样地,在PE1到PE4中,分别是Weight的第1行到第4行与输入矩阵的第1行到第4行进行一维卷积操作。但是,从图24中可以看出,PE4的计算是从第二时钟周期开始的,以此类推,各个PE分别慢一拍。也就是说,输入矩阵的行沿计算单元阵列的对角线传播。
2)输入矩阵从第i行起至第i+m-1行,按时钟周期,依次进入计算单元阵列的第i列中的m个计算单元。
3)计算单元阵列的第i列中的m个计算单元将每个时钟周期的计算结果按时钟周期依次纵向传播到相邻的下一计算单元,从而在同一列的纵向上最后一个计算单元按时钟周期依次输出得到输出矩阵第i行的nc-m+1个元素。
如前所述,在图24的例子中,PE5在第一周期进行Weight第5行与图中iFmap第5行的前5个元素(1、2、3、4、5)的相乘,乘积相加后得到OFmap元素1在PE5的部分和,纵向传播到PE4。PE4在第二周期进行Weight第4行与图中iFmap第4行的前5个元素的相乘,乘积相加后,再与从PE5传播来的部分和累加,得到OFmap元素1在PE4的部分和,这里完成空域的累加。由此,再经过PE3、PE2。最终在第五时钟周期(Cycle5)在PE1中进行Weight第1行与图中iFmap第1行的前5个元素的相乘,乘积相加后,再与从PE2传播来的部分和累加,最终累加得到OFmap的元素1。即到第五时钟周期,完成输出矩阵行中第一个元素的累加结果。
另一方面,为了得到OFmap的元素2,PE5在第二周期进行Weight第5行与图中iFmap第5行滑动1位后的5个元素(第5行第2、3、4、5、6列)的相乘,乘积相加后得到OFmap元素2在PE5的部分和,纵向传播到PE4。PE4在第三周期进行Weight第4行与图中iFmap第4行的相应5个元素(第4行第2、3、4、5、6列)的相乘,乘积相加后,再与从PE5传播来的部分和累加,得到OFmap元素2在PE4的部分和,这里完成空域的累加。由此,再经过PE3、PE2。最终在第六时钟周期(Cycle6)在PE1中进行Weight第1行与图中iFmap第1行的相应5个元素(第1行第2、3、4、5、6列)的相乘,乘积相加后,再与从PE2传播来的部分和累加,最终累加得到OFmap的元素2。即到第六时钟周期,完成输出矩阵行中第二个元素的累加结果。
以此类推,后续每个时钟周期均完成输出矩阵行中的一个元素的累加结果;最终得到一行中所有元素的值。
这里需要注意的是,图24中所示iFmap的五行,并不一定是从输入矩阵的第1-5行,而有可能是任意连续五行,即可以看作是输入矩阵的第i行到第i+4行,由此得到的是输出矩阵的第i行上的元素。
从以上对混合脉动阵列的卷积操作的描述可以看出,混合脉动阵列中的卷积操作是直接卷积运算,而不是像脉动阵列中那样将卷积操作转化为矩阵乘操作,实际进行的是将卷积核和输入矩阵进行数据复制、矩阵扩展后的矩阵乘操作。
由于混合脉动阵列采用了直接卷积运算,避免了脉动阵列中对数据的复制、对矩阵的扩展,充分利用了时域与空域二者的累加特性。
通用图形处理器(GPGPU)架构:
矩阵乘(GEMM)的核心PE实现DOT8的功能:Y00 = X00 * W00 + X01 * W10 + X02* W20 + X03 * W30 + X04 * W40 + X05 * W50 + X06 * W60 + X07 * W70,如图30所示。
GPGPU中张量核(Tensor core)会大量例化PE(即DOT8)以完成GEMM,如图31所示。PE之间无任何连接,需要在编码中通过指令先后执行完成数据的累加,即时域的累加。图31左侧每若干行范围内称为计算工作组(Computing Work Group,简称CWG)。一个CWG可以完成openCL中一个工作组(work group)粒度的操作。一个5x5卷积操作可以按照图32所示方式转成GEMM,并分配到各个CWG上进行执行。
架构模式切换:
提供用户配置架构模式,例如使用参数arch_mode,其中模式0表示GPGPU架构模式,而模式1表示Hybrid-SysTolic架构模式。驱动器识别并传递此参数(arch_mode)到例如GPU芯片中的寄存器中。GPU一旦检测到arch_mode的切换(从0到1或从1到0),会等待之前的任务完成并刷新缓存完成后,配置内部各个寄存器接受新的arch_mode,完成后开始接受新的任务。针对神经网络部分和非神经网络进行计算效率考虑,针对神经网络处理逻辑,从算法数据流图进行空间映射,采用数据驱动下的空域执行模式,以超越脉动阵列等方式的效率和能耗,达到性能极限,如图33所示。
因此,根据本发明的实施例,本发明所教导的技术可以实现为一种包括寄存器的计算系统。寄存器的架构模式可以进行配置,例如,根据计算中矩阵乘法或卷积运算的参与程度,被配置为可以进行切换。架构模式包括通用图形处理器模式和混合脉动阵列模式。当切换到通用图形处理器模式时,寄存器被配置为以通用图形处理器的通用矩阵乘法方式进行数据存取与运算。当切换到混合脉动阵列模式时,寄存器被配置为以混合脉动阵列的直接卷积方式进行数据存取与运算。
寄存器的核心可以是多个计算单元。每个计算单元被配置为同时完成一个或多个乘法运算并将乘法运算的结果相加得到每个计算单元的计算结果。
优选地,每个计算单元被配置为同时完成最多8个乘法运算并将乘法运算的结果相加得到每个计算单元的计算结果。例如,如前所述的DOT8的PE结构。
在通用图形处理器模式下,所述寄存器被配置为将各个计算单元的计算结果通过指令进行组合或累加。
在混合脉动阵列模式下,寄存器被配置为,对于一维卷积操作:将卷积核数据的m个元素固定于计算单元中,使输入数据的n个元素按时钟周期依次滑动进入计算单元,其中,m、n为自然数且m≤n;在每个时钟周期,使卷积核数据的m个元素分别一一对应于输入数据的n个元素中的m个数据,使卷积核数据的m个元素与滑动到计算单元中对应位置上的输入数据的对应的m个元素分别进行乘法运算并将乘积相加,存为当前时钟周期的计算结果;依次输出每个时钟周期的计算结果,得到n-m+1个计算结果,作为输出数据的n-m+1个元素。前文已经详细描述过其具体示例,这里不再赘述。
对于二维卷积操作:对于m行m列的卷积核矩阵和nr行nc列的输入矩阵,输出矩阵为nr-m+1行nc-m+1列的矩阵,nr、nc为自然数且m≤nr,m≤nc;使卷积核矩阵的m行元素的每一行分别与输入矩阵的第i到i+m行元素中的对应一行进行m次一维卷积操作,得到m个数据行,每个数据行有nc-m+1个元素,将m个数据行上的对应元素累加,得到输出矩阵的第i行的nc-m+1个元素,其中i=1, 2, ..., nr-m+1。前文已经详细描述过其具体示例,这里不再赘述。
计算单元可以组成计算单元阵列。对于二维卷积操作,计算单元阵列为m行(nr-m+1)列的计算单元阵列,其中第i列计算单元用于得到输出矩阵的第i行的运算。
在混合脉动阵列模式下的二维卷积操作也可以被描述成如下:按时钟周期,卷积核矩阵的行在计算单元阵列上的一个方向上复用,输入矩阵的行沿计算单元阵列的对角线传播,计算单元阵列中各个计算单元的计算结果沿计算单元阵列上的另一个方向传播累加。
具体地,寄存器被配置为,对于二维卷积操作:卷积核矩阵的m行分别对应于计算单元阵列的m行,按时钟周期横向复用,与输入矩阵的相应行进行一维卷积操作;输入矩阵从第i行起至第i+m-1行,按时钟周期,依次进入计算单元阵列的第i列中的m个计算单元;计算单元阵列的第i列中的m个计算单元将每个时钟周期的计算结果按时钟周期依次纵向传播到相邻的下一计算单元,从而在同一列的纵向上最后一个计算单元按时钟周期依次输出得到输出矩阵第i行的nc-m+1个元素。
如前示例所述,优选地,nr = nc。即在此情况下,可以用n来代替nr和nc。
在人工神经网络中,一维操作的卷积核数据为网络权重数据,输入数据为输入特征图数据,输出数据为输出特征图数据。相应地,二维操作的卷积核矩阵为网络权重矩阵,输入矩阵为输入特征图矩阵,输出矩阵为输出特征图矩阵。
下面来看几个实例。
实例1:
在气象模拟中,表示状态迁移的矩阵乘运算是模拟计算的核心。因此,用户可以设置arch_mode参数为0,即将该计算系统中的寄存器配置成GPGPU架构,进行快速矩阵运算和数据读写。
实例2:
在DNN中,全连接(FC)运算等价于矩阵运算。因此,用户可以设置arch_mode参数为0,即将该计算系统中的寄存器配置成GPGPU架构,进行快速矩阵运算和数据读写。
实例3:
在信号处理中,图像滤波中广泛使用卷积(即滤波、滑窗、或所谓的相关或卷积操作)。用户可以设置arch_mode参数为1,将该计算系统中的寄存器配置成适用于CNN的混合脉动阵列架构,进行快速卷积运算。
实例4:
在卷积神经网络AlexNet中,有5个卷积层(卷积运算)和3个全连层(矩阵运算)。用户可以在编程中设置模式:对于卷积层设置arch_mode参数为1,进行快速卷积运算;对于全连层则设置arch_mode参数为0,进行快速矩阵运算和数据读写。
基于本发明的方案可以支持:
1)多种大小的卷积运算。当做卷积运算时,效率远高于转为GPGPU的GEMM方式;
2)任意大小的矩阵乘运算,各种通用SIMD运算,内存读写操作;
3)硬件架构的动态可变性及高效的架构变换能力;
4)软硬件可编程;
5)兼具高计算效率和高能耗效率。
本发明所教导的内容适用于各种计算系统、人工智能应用,特别适用于CPU、GPU、FPGA、AI芯片等应用。
此外,本领域普通技术人员应该认识到,本发明的方法可以实现为计算机程序。如上结合附图所述,通过一个或多个程序执行上述实施例的方法,包括指令来使得计算机或处理器执行结合附图所述的算法。这些程序可以使用各种类型的非瞬时计算机可读介质存储并提供给计算机或处理器。非瞬时计算机可读介质包括各种类型的有形存贮介质。非瞬时计算机可读介质的示例包括磁性记录介质(诸如软盘、磁带和硬盘驱动器)、磁光记录介质(诸如磁光盘)、CD-ROM(紧凑盘只读存储器)、CD-R、CD-R/W以及半导体存储器(诸如ROM、PROM(可编程ROM)、EPROM(可擦写PROM)、闪存ROM和RAM(随机存取存储器))。进一步,这些程序可以通过使用各种类型的瞬时计算机可读介质而提供给计算机。瞬时计算机可读介质的示例包括电信号、光信号和电磁波。瞬时计算机可读介质可以用于通过诸如电线和光纤的有线通信路径或无线通信路径提供程序给计算机。
例如,根据本发明的一个实施例,可以提供一种用于在计算系统中重构架构的装置。所述装置包括处理器和存储器。所述存储器中存储有计算机程序,当所述计算机程序由所述处理器执行时,可实现如前所述的在计算系统中重构架构的方法。
因此,根据本发明,还可以提议一种计算机程序或一种计算机可读介质,用于记录可由处理器执行的指令,所述指令在被处理器执行时,可实现如前所述的在计算系统中重构架构的方法。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的普通技术人员能理解本文披露的各实施例。
Claims (29)
1.一种基于GPGPU可重构架构的方法,其特征在于,包括:
根据计算中矩阵乘法或卷积运算的参与程度,选择架构模式,其中,所述架构模式包括通用图形处理器模式和混合脉动阵列模式;
当选择通用图形处理器模式时,计算系统中的寄存器被配置为以通用图形处理器的通用矩阵乘法方式进行数据存取与运算;
当选择混合脉动阵列模式时,计算系统中的寄存器被配置为以混合脉动阵列的直接卷积方式进行数据存取与运算。
2.根据权利要求1所述的方法,其特征在于,所述方法进一步包括:
当所选择的架构模式与计算系统当前所采用的架构模式不同时,对架构模式进行切换。
3.根据权利要求2所述的方法,其特征在于,所述的对架构模式进行切换进一步包括:
等待之前未执行完的计算任务完成并刷新缓存完成后,将所述计算系统中的寄存器从当前所采用的架构模式重新配置为所选择的架构模式;
模式重构完成后,开始接受新的计算任务。
4.根据权利要求1所述的方法,其特征在于,所述计算系统中的寄存器被配置为多个计算单元,每个计算单元被配置为同时完成一个或多个乘法运算并将乘法运算的结果相加得到每个计算单元的计算结果。
5.根据权利要求4所述的方法,其特征在于,每个计算单元被配置为同时完成最多8个乘法运算并将乘法运算的结果相加得到每个计算单元的计算结果。
6.根据权利要求4所述的方法,其特征在于,在所述通用图形处理器模式下,各个计算单元的计算结果通过指令进行组合或累加。
7.根据权利要求4所述的方法,其特征在于,在所述混合脉动阵列模式下,对于一维卷积操作:
将卷积核数据的m个元素固定于计算单元中,使输入数据的n个元素按时钟周期依次滑动进入计算单元,其中,m、n为自然数且m≤n;
在每个时钟周期,使卷积核数据的m个元素分别一一对应于输入数据的n个元素中的m个数据,使卷积核数据的m个元素与滑动到计算单元中对应位置上的输入数据的对应的m个元素分别进行乘法运算并将乘积相加,存为当前时钟周期的计算结果;
依次输出每个时钟周期的计算结果,得到n-m+1个计算结果,作为输出数据的n-m+1个元素。
8.根据权利要求7所述的方法,其特征在于,在所述混合脉动阵列模式下,对于二维卷积操作:
对于m行m列的卷积核矩阵和nr行nc列的输入矩阵,输出矩阵为nr-m+1行nc-m+1列的矩阵,nr、nc为自然数且m≤nr,m≤nc;
使卷积核矩阵的m行元素的每一行分别与输入矩阵的第i到i+m行元素中的对应一行进行m次一维卷积操作,得到m个数据行,每个数据行有nc-m+1个元素,将m个数据行上的对应元素累加,得到输出矩阵的第i行的nc-m+1个元素,其中i=1, 2, ..., nr-m+1。
9.根据权利要求8所述的方法,其特征在于,在所述混合脉动阵列模式下,对于二维卷积操作:
将计算单元组成计算单元阵列。
10.根据权利要求9所述的方法,其特征在于,在所述混合脉动阵列模式下,对于二维卷积操作:
所述计算单元阵列为m行(nr-m+1)列的计算单元阵列,其中第i列计算单元用于得到输出矩阵的第i行的运算。
11.根据权利要求9所述的方法,其特征在于,在所述混合脉动阵列模式下,对于二维卷积操作:
按时钟周期,卷积核矩阵的行在计算单元阵列上的一个方向上复用,输入矩阵的行沿计算单元阵列的对角线传播,计算单元阵列中各个计算单元的计算结果沿计算单元阵列上的另一个方向传播累加。
12.根据权利要求10所述的方法,其特征在于,在所述混合脉动阵列模式下,对于二维卷积操作:
卷积核矩阵的m行分别对应于计算单元阵列的m行,按时钟周期横向复用,与输入矩阵的相应行进行一维卷积操作;
输入矩阵从第i行起至第i+m-1行,按时钟周期,依次进入计算单元阵列的第i列中的m个计算单元;
计算单元阵列的第i列中的m个计算单元将每个时钟周期的计算结果按时钟周期依次纵向传播到相邻的下一计算单元,从而在同一列的纵向上最后一个计算单元按时钟周期依次输出得到输出矩阵第i行的nc-m+1个元素。
13.根据权利要求8所述的方法,其特征在于,nr = nc。
14.根据权利要求7所述的方法,其特征在于,在人工神经网络中,卷积核数据为网络权重数据,输入数据为输入特征图数据,输出数据为输出特征图数据。
15.根据权利要求8所述的方法,其特征在于,在人工神经网络中,卷积核矩阵为网络权重矩阵,输入矩阵为输入特征图矩阵,输出矩阵为输出特征图矩阵。
16.一种计算系统,包括寄存器,其特征在于,所述寄存器的架构模式被配置为根据计算中矩阵乘法或卷积运算的参与程度而进行切换,其中,所述架构模式包括通用图形处理器模式和混合脉动阵列模式;
当切换到通用图形处理器模式时,所述寄存器被配置为以通用图形处理器的通用矩阵乘法方式进行数据存取与运算;
当切换到混合脉动阵列模式时,所述寄存器被配置为以混合脉动阵列的直接卷积方式进行数据存取与运算。
17.根据权利要求16所述的计算系统,其特征在于,所述寄存器被配置为多个计算单元,每个计算单元被配置为同时完成一个或多个乘法运算并将乘法运算的结果相加得到每个计算单元的计算结果。
18.根据权利要求17所述的计算系统,其特征在于,每个计算单元被配置为同时完成最多8个乘法运算并将乘法运算的结果相加得到每个计算单元的计算结果。
19.根据权利要求17所述的计算系统,其特征在于,在所述通用图形处理器模式下,所述寄存器被配置为将各个计算单元的计算结果通过指令进行组合或累加。
20.根据权利要求17所述的计算系统,其特征在于,在所述混合脉动阵列模式下,所述寄存器被配置为,对于一维卷积操作:
将卷积核数据的m个元素固定于计算单元中,使输入数据的n个元素按时钟周期依次滑动进入计算单元,其中,m、n为自然数且m≤n;
在每个时钟周期,使卷积核数据的m个元素分别一一对应于输入数据的n个元素中的m个数据,使卷积核数据的m个元素与滑动到计算单元中对应位置上的输入数据的对应的m个元素分别进行乘法运算并将乘积相加,存为当前时钟周期的计算结果;
依次输出每个时钟周期的计算结果,得到n-m+1个计算结果,作为输出数据的n-m+1个元素。
21.根据权利要求20所述的计算系统,其特征在于,在所述混合脉动阵列模式下,所述寄存器被配置为,对于二维卷积操作:
对于m行m列的卷积核矩阵和nr行nc列的输入矩阵,输出矩阵为nr-m+1行nc-m+1列的矩阵,nr、nc为自然数且m≤nr,m≤nc;
使卷积核矩阵的m行元素的每一行分别与输入矩阵的第i到i+m行元素中的对应一行进行m次一维卷积操作,得到m个数据行,每个数据行有nc-m+1个元素,将m个数据行上的对应元素累加,得到输出矩阵的第i行的nc-m+1个元素,其中i=1, 2, ..., nr-m+1。
22.根据权利要求21所述的计算系统,其特征在于,在所述混合脉动阵列模式下,所述寄存器被配置为,对于二维卷积操作:
将计算单元组成计算单元阵列。
23.根据权利要求22所述的计算系统,其特征在于,在所述混合脉动阵列模式下,所述寄存器被配置为,对于二维卷积操作:
所述计算单元阵列为m行(nr-m+1)列的计算单元阵列,其中第i列计算单元用于得到输出矩阵的第i行的运算。
24.根据权利要求22所述的计算系统,其特征在于,在所述混合脉动阵列模式下,所述寄存器被配置为,对于二维卷积操作:
按时钟周期,卷积核矩阵的行在计算单元阵列上的一个方向上复用,输入矩阵的行沿计算单元阵列的对角线传播,计算单元阵列中各个计算单元的计算结果沿计算单元阵列上的另一个方向传播累加。
25.根据权利要求23所述的计算系统,其特征在于,在所述混合脉动阵列模式下,所述寄存器被配置为,对于二维卷积操作:
卷积核矩阵的m行分别对应于计算单元阵列的m行,按时钟周期横向复用,与输入矩阵的相应行进行一维卷积操作;
输入矩阵从第i行起至第i+m-1行,按时钟周期,依次进入计算单元阵列的第i列中的m个计算单元;
计算单元阵列的第i列中的m个计算单元将每个时钟周期的计算结果按时钟周期依次纵向传播到相邻的下一计算单元,从而在同一列的纵向上最后一个计算单元按时钟周期依次输出得到输出矩阵第i行的nc-m+1个元素。
26.根据权利要求21所述的计算系统,其特征在于,nr = nc。
27.根据权利要求20所述的计算系统,其特征在于,在人工神经网络中,卷积核数据为网络权重数据,输入数据为输入特征图数据,输出数据为输出特征图数据。
28.根据权利要求21所述的计算系统,其特征在于,在人工神经网络中,卷积核矩阵为网络权重矩阵,输入矩阵为输入特征图矩阵,输出矩阵为输出特征图矩阵。
29.一种用于在计算系统中重构架构的装置,其特征在于,所述装置包括处理器和存储器,所述存储器中存储有计算机程序,当所述计算机程序由所述处理器执行时,使得所述处理器实现根据权利要求1至15中任意一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110616126.1A CN113076521B (zh) | 2021-06-03 | 2021-06-03 | 一种基于gpgpu可重构架构的方法及计算系统 |
PCT/CN2021/139365 WO2022252568A1 (zh) | 2021-06-03 | 2021-12-17 | 一种基于gpgpu可重构架构的方法、计算系统及重构架构的装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110616126.1A CN113076521B (zh) | 2021-06-03 | 2021-06-03 | 一种基于gpgpu可重构架构的方法及计算系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113076521A true CN113076521A (zh) | 2021-07-06 |
CN113076521B CN113076521B (zh) | 2021-09-21 |
Family
ID=76616950
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110616126.1A Active CN113076521B (zh) | 2021-06-03 | 2021-06-03 | 一种基于gpgpu可重构架构的方法及计算系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN113076521B (zh) |
WO (1) | WO2022252568A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113705773A (zh) * | 2021-07-27 | 2021-11-26 | 西安交通大学 | 用于图神经网络推理的动态可重构pe单元及pe阵列 |
WO2022252568A1 (zh) * | 2021-06-03 | 2022-12-08 | 沐曦集成电路(上海)有限公司 | 一种基于gpgpu可重构架构的方法、计算系统及重构架构的装置 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116050474A (zh) * | 2022-12-29 | 2023-05-02 | 上海天数智芯半导体有限公司 | 一种卷积计算方法、soc芯片、电子设备及存储介质 |
CN116108902B (zh) * | 2023-02-22 | 2024-01-05 | 成都登临科技有限公司 | 采样操作实现系统、方法、电子设备及存储介质 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102375721A (zh) * | 2010-08-23 | 2012-03-14 | 联想(北京)有限公司 | 一种矩阵乘法运算方法、图形处理器和电子设备 |
US20160342893A1 (en) * | 2015-05-21 | 2016-11-24 | Google Inc. | Rotating data for neural network computations |
CN107315574A (zh) * | 2016-04-26 | 2017-11-03 | 北京中科寒武纪科技有限公司 | 一种用于执行矩阵乘运算的装置和方法 |
CN107578095A (zh) * | 2017-09-01 | 2018-01-12 | 中国科学院计算技术研究所 | 神经网络计算装置及包含该计算装置的处理器 |
CN107918794A (zh) * | 2017-11-15 | 2018-04-17 | 中国科学院计算技术研究所 | 基于计算阵列的神经网络处理器 |
CN108197705A (zh) * | 2017-12-29 | 2018-06-22 | 国民技术股份有限公司 | 卷积神经网络硬件加速装置及卷积计算方法及存储介质 |
CN108628799A (zh) * | 2018-04-17 | 2018-10-09 | 上海交通大学 | 可重构的单指令多数据脉动阵列结构、处理器及电子终端 |
CN108665059A (zh) * | 2018-05-22 | 2018-10-16 | 中国科学技术大学苏州研究院 | 基于现场可编程门阵列的卷积神经网络加速系统 |
WO2019057281A1 (en) * | 2017-09-21 | 2019-03-28 | Huawei Technologies Co., Ltd. | MULTI-WIRE SYSTOLIC NETWORK |
CN112534404A (zh) * | 2019-03-15 | 2021-03-19 | 英特尔公司 | 用于矩阵加速器架构的稀疏优化 |
US20210089316A1 (en) * | 2019-09-25 | 2021-03-25 | Intel Corporation | Deep learning implementations using systolic arrays and fused operations |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021067230A1 (en) * | 2019-09-30 | 2021-04-08 | Board Of Regents, The University Of Texas System | Field programmable gate array architecture optimized for machine learning applications |
CN111652360B (zh) * | 2020-05-25 | 2023-03-14 | 北京大学深圳研究生院 | 一种基于脉动阵列的卷积运算装置 |
CN113076521B (zh) * | 2021-06-03 | 2021-09-21 | 沐曦集成电路(上海)有限公司 | 一种基于gpgpu可重构架构的方法及计算系统 |
-
2021
- 2021-06-03 CN CN202110616126.1A patent/CN113076521B/zh active Active
- 2021-12-17 WO PCT/CN2021/139365 patent/WO2022252568A1/zh unknown
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102375721A (zh) * | 2010-08-23 | 2012-03-14 | 联想(北京)有限公司 | 一种矩阵乘法运算方法、图形处理器和电子设备 |
US20160342893A1 (en) * | 2015-05-21 | 2016-11-24 | Google Inc. | Rotating data for neural network computations |
CN107315574A (zh) * | 2016-04-26 | 2017-11-03 | 北京中科寒武纪科技有限公司 | 一种用于执行矩阵乘运算的装置和方法 |
CN107578095A (zh) * | 2017-09-01 | 2018-01-12 | 中国科学院计算技术研究所 | 神经网络计算装置及包含该计算装置的处理器 |
WO2019057281A1 (en) * | 2017-09-21 | 2019-03-28 | Huawei Technologies Co., Ltd. | MULTI-WIRE SYSTOLIC NETWORK |
CN107918794A (zh) * | 2017-11-15 | 2018-04-17 | 中国科学院计算技术研究所 | 基于计算阵列的神经网络处理器 |
CN108197705A (zh) * | 2017-12-29 | 2018-06-22 | 国民技术股份有限公司 | 卷积神经网络硬件加速装置及卷积计算方法及存储介质 |
CN108628799A (zh) * | 2018-04-17 | 2018-10-09 | 上海交通大学 | 可重构的单指令多数据脉动阵列结构、处理器及电子终端 |
CN108665059A (zh) * | 2018-05-22 | 2018-10-16 | 中国科学技术大学苏州研究院 | 基于现场可编程门阵列的卷积神经网络加速系统 |
CN112534404A (zh) * | 2019-03-15 | 2021-03-19 | 英特尔公司 | 用于矩阵加速器架构的稀疏优化 |
US20210089316A1 (en) * | 2019-09-25 | 2021-03-25 | Intel Corporation | Deep learning implementations using systolic arrays and fused operations |
Non-Patent Citations (3)
Title |
---|
XUECHAO WEI ET AL.: "Automated systolic array architecture synthesis for high throughput CNN inference on FPGAs", 《IEEE XPLORE》 * |
刘勤让 等: "基于线性脉动阵列的卷积神经网络计算优化与性能分析", 《网络与信息安全学报》 * |
韩栋 等: "智能芯片的评述和展望", 《计算机研究与发展》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022252568A1 (zh) * | 2021-06-03 | 2022-12-08 | 沐曦集成电路(上海)有限公司 | 一种基于gpgpu可重构架构的方法、计算系统及重构架构的装置 |
CN113705773A (zh) * | 2021-07-27 | 2021-11-26 | 西安交通大学 | 用于图神经网络推理的动态可重构pe单元及pe阵列 |
CN113705773B (zh) * | 2021-07-27 | 2023-09-19 | 西安交通大学 | 用于图神经网络推理的动态可重构pe单元及pe阵列 |
Also Published As
Publication number | Publication date |
---|---|
WO2022252568A1 (zh) | 2022-12-08 |
CN113076521B (zh) | 2021-09-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113076521B (zh) | 一种基于gpgpu可重构架构的方法及计算系统 | |
JP7166389B2 (ja) | ニューラルネットワークにおけるビット直列計算についてのシステム及び集積回路 | |
US11544559B2 (en) | System and method for executing convolution in a neural network | |
US10489703B2 (en) | Memory efficiency for convolutional neural networks operating on graphics processing units | |
US20200174749A1 (en) | Semiconductor memory device employing processing in memory (pim) and method of operating the semiconductor memory device | |
US20170236053A1 (en) | Configurable and Programmable Multi-Core Architecture with a Specialized Instruction Set for Embedded Application Based on Neural Networks | |
JP2018073402A (ja) | Dram基盤プロセシングユニット | |
Mittal | A survey of accelerator architectures for 3D convolution neural networks | |
CN110738308B (zh) | 一种神经网络加速器 | |
CN110766127B (zh) | 神经网络计算专用电路及其相关计算平台与实现方法 | |
CN108628799B (zh) | 可重构的单指令多数据脉动阵列结构、处理器及电子终端 | |
CN111105023B (zh) | 数据流重构方法及可重构数据流处理器 | |
CN110807170B (zh) | 多样本多通道卷积神经网络Same卷积向量化实现方法 | |
CN109472361B (zh) | 神经网络优化方法 | |
Liu et al. | WinoCNN: Kernel sharing Winograd systolic array for efficient convolutional neural network acceleration on FPGAs | |
Chen et al. | Tight compression: compressing CNN model tightly through unstructured pruning and simulated annealing based permutation | |
US20200226201A1 (en) | Methods and Apparatus for Constructing Digital Circuits for Performing Matrix Operations | |
US20200104669A1 (en) | Methods and Apparatus for Constructing Digital Circuits for Performing Matrix Operations | |
Huang et al. | IECA: An in-execution configuration CNN accelerator with 30.55 GOPS/mm² area efficiency | |
CN110377874B (zh) | 卷积运算方法及系统 | |
CN113344183B (zh) | 一种在计算系统中实现卷积运算的方法及计算系统 | |
Ando et al. | A multithreaded CGRA for convolutional neural network processing | |
CN116710912A (zh) | 一种矩阵乘法器及矩阵乘法器的控制方法 | |
CN113392959A (zh) | 一种在计算系统中重构架构的方法及计算系统 | |
Colleman et al. | Processor architecture optimization for spatially dynamic neural networks |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |