CN113298243A - 数据存储管理方法和装置以及卷积计算硬件加速器 - Google Patents
数据存储管理方法和装置以及卷积计算硬件加速器 Download PDFInfo
- Publication number
- CN113298243A CN113298243A CN202110136068.2A CN202110136068A CN113298243A CN 113298243 A CN113298243 A CN 113298243A CN 202110136068 A CN202110136068 A CN 202110136068A CN 113298243 A CN113298243 A CN 113298243A
- Authority
- CN
- China
- Prior art keywords
- level
- memory
- convolution
- data
- blocks
- 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.)
- Pending
Links
- 238000013500 data storage Methods 0.000 title claims abstract description 20
- 238000007726 management method Methods 0.000 title claims abstract description 18
- 230000015654 memory Effects 0.000 claims abstract description 196
- 238000004364 calculation method Methods 0.000 claims abstract description 93
- 230000001133 acceleration Effects 0.000 claims abstract description 11
- 238000012545 processing Methods 0.000 claims description 39
- 238000000034 method Methods 0.000 claims description 32
- 238000005192 partition Methods 0.000 claims description 19
- 238000010586 diagram Methods 0.000 claims description 15
- 230000008569 process Effects 0.000 claims description 12
- 238000013507 mapping Methods 0.000 claims 2
- 239000011159 matrix material Substances 0.000 description 11
- 238000013528 artificial neural network Methods 0.000 description 4
- 238000013473 artificial intelligence Methods 0.000 description 3
- 239000000872 buffer Substances 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000000638 solvent extraction Methods 0.000 description 3
- 238000013135 deep learning Methods 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- HPTJABJPZMULFH-UHFFFAOYSA-N 12-[(Cyclohexylcarbamoyl)amino]dodecanoic acid Chemical group OC(=O)CCCCCCCCCCCNC(=O)NC1CCCCC1 HPTJABJPZMULFH-UHFFFAOYSA-N 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
Images
Classifications
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
Abstract
公开了一种用于卷积计算的数据存储管理方法和装置以及卷积计算硬件加速器。将特征图的较低层级分块存储到较低层级存储器。从较低层级存储器中的较低层级分块中读取较高层级分块,并将较高层级分块存储到较高层级存储器。较高层级分块是所述较低层级分块的一部分较高层级存储器的存储层级高于较低层级存储器的存储层级。由此,在针对卷积计算的硬件加速中,显著降低了数据访存开销和存储空间需求。
Description
技术领域
本公开涉及深度神经网络计算,特别涉及用于卷积计算的数据存储管理。
背景技术
卷积是当今深度神经网络中的核心运算。近年来,人们期望基于芯片进行高效的卷积运算,以提升人工智能(AI)运算性能。
目前多数AI芯片加速卷积运算的方法是,将卷积计算转换为矩阵乘法,用专门计算矩阵乘法的芯片(IP)硬件进行高速运算。
矩阵乘法运算方便快捷,且容易在芯片上实现。然而,将卷积转换为矩阵乘法,需要进行数据展开(im2col)操作。
图1示意性地示出了特征图(featuremap)的im2col数据展开操作。
如图1左图所示,假设特征图(featuremap)的尺寸为4×4,各行数据分别为:
0,1,2,3;
4,5,6,7;
8,9,A,B;
C,D,E,F。
原始数据量为4×4=16。
在卷积核尺寸为3×3的3×3卷积计算中,需要进行4次卷积计算。每次卷积计算中用到的数据分别为:
0,1,2,4,5,6,8,9,A;
1,2,3,5,6,7,9,A,B;
4,5,6,8,9,A,C,D,E;
5,6,7,9,A,B,D,E,F。
对上述原始数据进行im2col展开,每一列中包括一次卷积计算所需要用到的9个数据,得到分别对应于4次卷积计算的4列数据,如图1右图所示。这样,可以将特征图与卷积核的卷积计算转换为展开矩阵与改写为1×9行矩阵的卷积核之间的矩阵乘法计算。
然而,数据量从4×4=16扩展为9×4=36。这样,需要耗用更多的数据存储空间,数据访存开销也相应提升。特别是在卷积核较大,例如7×7卷积乃至更大卷积核的卷积运算的情况下,会导致巨大的数据访存开销和存储空间需求。
虽然目前在神经网络运算中,1×1卷积和3×3卷积更为普遍,但是在某些特定模型中,7×7卷积乃至更大的卷积在计算上也占有不可忽视的比重。在一些场景中,7×7卷积计算占比已超过25%。
因此,亟需一种卷积计算硬件加速方案,避免上述巨大的数据访存开销和存储空间需求。
发明内容
本公开要解决的一个技术问题是提供一种用于卷积计算的硬件加速方案,其可以降低数据访存开销和存储空间需求。
根据本公开的第一个方面,提供了一种用于卷积计算的数据存储管理方法,包括:将特征图的较低层级分块存储到较低层级存储器;从较低层级存储器中的所述较低层级分块中读取较高层级分块,并将所述较高层级分块存储到较高层级存储器,所述较高层级分块是所述较低层级分块的一部分,较高层级存储器的存储层级高于较低层级存储器的存储层级。
可选地,将特征图逐级划分为多级分块,分别存储到相应存储层级的存储器,其中,更高层级的分块存储到更高存储层级的存储器中。
可选地,更高存储层级的存储器具有更短的访存延迟。
可选地,该方法还可以包括:对于每一级分块,当完成其所对应的全部卷积计算处理之后,从存储层级较低的上一级分块所在的上一级存储器中读取新的本级分块数据,并将新的本级分块数据存储到对应的本级存储器中。
可选地,该方法还可以包括:使用最高层级存储器中存储的最高层级分块执行卷积计算处理。
可选地,最高层级分块的数据数量大于卷积核行数或列数;并且/或者次高层级分块的行数和列数大于卷积核的行数和列数。
可选地,最高层级分块包括特征图中一行或一列数据中的多个数据,以用于当前的卷积计算处理;并且/或者次高层级分块映射到图形处理单元的线程块,以用于执行卷积计算。
可选地,该方法还可以包括:基于图形处理单元的处理能力和/或各级存储器的性能和/或特征图的尺寸,确定各级分块的尺寸。
可选地,该方法还可以包括:将较低层级分块划分为多个子块,其中,较高层级分块包括一个子块以及一个子块周围的若干行及若干列。
可选地,该方法还可以包括:将卷积核存储在次高层级存储器中;以及将卷积核中当前卷积计算处理所需的一行或一列存储在最高层级存储器中。
根据本公开的第二个方面,提供了一种一种卷积计算硬件加速方法,包括:使用根据上述第一个方面的方法存储特征图和/或卷积核;以及使用最高层级存储器中存储的卷积核的一行或一列数据和最高层级存储器中存储的特征图中一行或一列数据中的多个数据,进行卷积计算。
根据本公开的第三个方面,提供了一种卷积计算硬件加速器,包括:多级存储系统,包括多个存储层级的存储器,在较低层级存储器中存储特征图的较低层级分块,在较高层级存储器中存储从较低层级存储器中的较低层级分块中读取的较高层级分块,较高层级分块是较低层级分块的一部分;以及计算单元,使用存储层级最高的最高层级存储器中存储的最高层级分块执行卷积计算处理。
可选地,特征图被逐级划分为多级分块,分别存储到相应存储层级的存储器,其中,更高层级的分块存储到更高存储层级的存储器中。
可选地,更高存储层级的存储器具有更短的访存延迟。
可选地,对于每一级分块,当完成其所对应的全部卷积计算处理之后,从存储层级较低的上一级分块所在的上一级存储器中读取新的本级分块数据,并将新的本级分块数据存储到对应的本级存储器中。
可选地,在最高层级存储器中存储的最高层级分块包括特征图中一行或一列数据中的多个数据,以用于当前的卷积计算处理;并且/或者在次高层级存储器中存储的次高层级分块映射到图形处理单元的线程块,以用于执行卷积计算;并且/或者在次高层级存储器中存储卷积核;并且/或者在最高层级存储器中存储卷积核中当前卷积计算处理所需的一行或一列。
根据本公开的第四个方面,提供了一种用于卷积计算的数据存储管理装置,包括写入装置和读取装置,写入装置将特征图的较低层级分块存储到较低层级存储器;读取装置从较低层级存储器中的较低层级分块中读取较高层级分块,并由写入装置将较高层级分块存储到较高层级存储器,较高层级分块是较低层级分块的一部分,较高层级存储器的存储层级高于较低层级存储器的存储层级。
可选地,特征图被逐级划分为多级分块,分别存储到相应存储层级的存储器,其中,更高层级的分块存储到更高存储层级的存储器中。
可选地,更高存储层级的存储器具有更短的访存延迟。
可选地,对于每一级分块,当完成其所对应的全部卷积计算处理之后,读取装置从存储层级较低的上一级分块所在的上一级存储器中读取新的本级分块数据,并由写入装置将新的本级分块数据存储到对应的本级存储器中。
可选地,在最高层级存储器中存储的最高层级分块包括特征图中一行或一列数据中的多个数据,以用于当前的卷积计算处理;并且/或者在次高层级存储器中存储的次高层级分块映射到图形处理单元的线程块,以用于执行卷积计算;并且/或者在次高层级存储器中存储卷积核;并且/或者在最高层级存储器中存储卷积核中当前卷积计算处理所需的一行或一列。
由此,在根据本公开的卷积计算的硬件加速中,显著降低数据访存开销和存储空间需求。
另外,本公开的实施例通过发掘卷积的内在数据复用性(特别是7×7卷积乃至更大的卷积),结合例如GPU芯片的多级存储特性,能够更加充分地发挥芯片的运算能力,实现高效快速的卷积运算,从而缩短神经网络模型训练和推理的端到端耗时,促进AI产业的普及与发展。
附图说明
通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
图1示意性地示出了特征图(featuremap)的im2col数据展开操作。
图2示意性地示出了在卷积计算中的二维复用情况。
图3是根据本公开用于卷积计算的数据存储管理方法的示意性流程图。
图4是根据本公开用于卷积计算的数据存储管理装置的示意性框图。
图5示意性地示出了特征图的多级划分。
图6是根据本公开的卷积计算硬件加速器的示意性框图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
在深度神经网络中,例如在深度学习领域,需要执行大量卷积运算。
在卷积运算中,卷积核在特征图上滑动以执行一次次卷积计算,从而得到对应于每个元素的卷积计算结果。应当理解,卷积运算固有两个数据复用层级。
1.二维复用
图2示意性地示出了在卷积计算中的二维复用情况。
如图2所示,若不讨论边界元素,那么在7×7卷积中,每个元素,例如图2中用粗线框示出的元素,将在针对其周围7×7个元素(包括其自身,图2中用方形框示出)的卷积计算中被使用到,即存在48次复用(额外重复使用48次)。这里,可以称之为“二维复用”。
二维复用的复用次数多,若能配合芯片架构应用起来收益会非常显著,但相应的存储资源需求也较大。
2.一维复用
若单论卷积中的某一行或某一列的计算,那么在7×7卷积中,每个元素会被复用6次,可以称之为“一维复用”。
一维复用的存储资源需求对比二维复用降低了一个数量级,比较适合在访存最快的存储单元采用,例如图形处理单元(GPU)的寄存器(register)。
本公开的技术方案结合芯片架构,利用上述两层卷积复用,力求充分发挥芯片的运算性能。
如目前卷积计算的各种硬件加速方案一样,本公开的硬件加速方案也可以在图形处理单元(GPU)中实现,或结合图形处理单元(GPU)实现。
本公开的硬件加速方案充分利用例如GPU中的多级存储/缓存系统。在计算机体系结构中,往往存在多个存储层级。不同存储层级的存储器/存储器的存储空间尺寸和访存延迟均不在一个量级。基于空间局部性和时间局部性原则,可以将最近可能会访问的数据存储到更高一级存储中。
时间局部性是指,如果某个数据被访问,那么在不久的将来它很有可能会被再次访问。空间局部性是指,如果某个数据被访问,那么与它相邻的数据很快也可能被访问。
应当理解,本公开的技术方案不但可以应用于深度学习领域,而且还可以应用于任何需要执行卷积计算、涉及卷积计算数据复用的场景。
图3是根据本公开用于卷积计算的数据存储管理方法的示意性流程图。图4是根据本公开用于卷积计算的数据存储管理装置的示意性框图。图3所示的数据存储管理方法可以通过图4所示的数据存储管理装置来执行。
如图4所示,数据存储管理装置400可以包括读取装置410和写入装置420。相应地,多级存储系统450可以包括最低层级存储器、次低层级存储器、……、次高层级存储器、最高层级存储器,存储层级逐级升高。更高存储层级的存储器具有更短的访存延迟。
应当理解,这里的“最低”、“次低”、“次高”、“最高”是在根据本公开的缓存方案所采用的多级存储系统450内部评价的。延迟时间相差不大的不同类型存储器也可以视为同一层级的存储器。
另外,当芯片的多级存储系统中的某些存储器/缓存器不参与根据本公开的卷积计算中的数据缓存时,这些存储器/缓存器可以不在上述存储层级考虑范围之内。例如,如果芯片中访存延迟最短的存储器不用于根据本公开的卷积计算数据缓存的情况下,不将该存储器视为本公开的最高层级存储器,而是将用于本公开的卷积计算数据缓存的各存储器中,访存延迟最短的存储器视为最高层级存储器。
读取装置410用于从各存储器中读取数据,写入装置420用于向各存储器中写入数据。
在步骤S310,例如可以通过写入装置420,将特征图(featuremap)的较低层级分块存储到较低层级存储器。
然后在步骤S320,例如可以通过读取装置410,从较低层级存储器中的较低层级分块中读取较高层级分块,再例如通过写入装置420,将较高层级分块存储到较高层级存储器。
这里,较高层级分块是较低层级分块的一部分。较高层级存储器的存储层级高于较低层级存储器的存储层级。
应当理解,这里的“较高”、“较低”是两个存储层级的存储器之间比较的结果。
这样,可以将特征图逐级划分为多级分块,分别存储到相应存储层级的存储器。更高层级的分块可以存储到更高存储层级的存储器中。
图5示意性地示出了特征图的多级划分。
将较低层级存储器中存储的较低层级分块510进行分块,并将其中一个较高层级分块520加载到相应的较高层级存储器中。
然后,基于芯片架构(例如图形处理单元的处理能力和/或各级存储器的性能)和/或特征图的尺寸等,判断较高层级分块520是否还可以进一步分块。
如果可以,则在下一轮分块加载处理中,将较高层级分块520视为较低层级分块510,对其进行进一步分块,并将再次分块得到的更高一级的分块加载到相应更高层级的存储器中。
这样,只需要将较低层级分块的较小的一部分进一步存储(加载)到较高层级分块中。与图1所示im2col数据展开以转换为矩阵乘法的方案相比,数据存储量大幅降低,显著降低了对存储/缓存空间的需求。
各级分块的尺寸可以基于图形处理单元的处理能力和/或各级存储器的性能和/或特征图的尺寸来确定。
次高层级分块的行数和列数可以设置为大于卷积核的行数和列数。
例如,可以将次高层级分块映射到图形处理单元的线程块,以用于执行卷积计算。
最高层级分块的数据数量大于卷积核行数或列数。
例如,最高层级分块可以包括特征图中一行或一列数据中的多个数据,以用于当前的卷积计算处理。在卷积核尺寸为n×n的情况下,最高层级分块中可以包括n+x个数据。x可以称为复用数,即,使用该n+x个数据,可以执行x+1次卷积计算。这里,n和x均为正整数。
在一些实施例中,可以预先配置好各级分块数据量设置值。
另外,还可以向用户(例如相关处理人员)输出预先配置好的各级分块数据量设置值。
另外,还可以接收用户对所输出的至少一级分块的数据量设置值的调整指令,以调整该至少一级分块的数据量设置值。
或者,还可以接收用户对至少一级分块的数据量设置值,以配置该至少一级分块的数据量设置值。
如图5所示,将较低层级分块划分为多个子块(使用粗框线示出)。为了便于进行卷积计算,存储到较高层级存储器中的较高层级分块除了包括一个子块,还可以进一步包括该子块周围的若干行及若干列。例如,设子块尺寸为m×m,卷积核尺寸为2y+1,较高层级分块的尺寸可以为(m+2y)×(m+2y)。即以该子块为中心,周围各增加y行、y列的数据。这里,m和y均为正整数。
这个过程相当于进行填充(padding)处理。
类似地,在开始进行卷积计算之前,也会对整个特征图(featuremap)进行填充(padding)处理,在其周围填充若干行列的数据,以便于执行卷积计算。
上面描述了对特征图的分块分级存储。
类似地,对卷积核也可以进行这样的分级存储。即将卷积核逐级划分为多级分块,分别存储到相应存储层级的存储器中。
鉴于与特征图相比,卷积核的数据量相对较少,例如7×7卷积核共49个数据,所以可以是仅对卷积核进行两级分块分级存储。
例如,可以将卷积核存储在次高层级存储器中。
又例如,可以将卷积核中当前卷积计算处理所需的一行或一列存储在最高层级存储器中。
这样,例如GPU中的计算单元,可以使用特征图的存储在最高层级存储器中的最高层级分块(例如一行或一列数据中的多个数据)和卷积核的存储在最高层级存储器中的一行或一列,执行卷积计算处理。
由于最高层级存储器的访存延迟最短,可以以低访存延迟执行卷积计算。
在最高层级存储器中存储了特征图的一行或一列中多于卷积核行数或列数的数据(例如上面示例中提到的n+x个数据)的情况下,可以对这些数据进行复用,例如可以执行x+1次卷积计算。
对于每一级分块,当完成其所对应的全部卷积计算处理之后,可以是从存储层级较低的上一级分块所在的上一级存储器中读取新的本级分块数据,并将新的本级分块数据存储到对应的本级存储器中。
例如,在完成卷积核的一行或一列对特征图的存储在最高层级存储器中的一行或一列中的多个数据的各次卷积计算之后,可以从存储卷积核的次高层级存储器中读取下一行或下一列,加载/写入到相应的最高层级存储器中。
在完成特征图的存储在最高层级存储器中的一行或一列中的多个数据与卷积核的各行或各列的卷积计算之后,该多个数据对应的全部卷积计算处理完成。于是,可以从特征图的存储在次高层级存储器中的次高层级分块中读取新的数据,例如可以是同一行或同一列的另外多个数据,或不同行或不同列的多个数据。然后,可以将新读取的数据加载/写入到相应的最高层级存储器中。
同样地,在完成特征图中存储在次高层级存储器中的所有数据的卷积计算之后,可以从再低一级的存储器中读取新的数据,加载/写入到次高层级存储器中。
以此类推。
应当明白,也可以进行动态加载/写入。即,在本级分块中的部分数据,例如一行或一列,或比本级分块高两级的分块,已经完成卷积计算的情况下,可以动态加载更新本级分块的数据。换言之,不需要等到本级分块完全完成卷积计算,即可以对其中已经完成卷积计算的部分进行更新,从更低一级的存储器中读取并写入新的数据。
图6是根据本公开的卷积计算硬件加速器的示意性框图。
如图6所示,该卷积计算硬件加速器600可以包括多级存储系统和计算单元610。
如上文所述,多级存储系统可以包括多个存储层级的存储器。在较低层级存储器中存储特征图的较低层级分块,在较高层级存储器中存储从较低层级存储器中的所述较低层级分块中读取的较高层级分块。较高层级分块是所述较低层级分块的一部分。
于是,计算单元610可以使用存储层级最高的最高层级存储器中存储的最高层级分块执行卷积计算处理。
该硬件加速器600例如可以是GPU。
该硬件加速器600的数据分级分块存储加载策略可以与上文中参考图3至图5所描述的相同,在此不再赘述。
下面描述本公开的卷积计算方案的示例。
关于输入的特征图(feature map),可以首先进行填充(padding)处理。该步骤也可融入到卷积计算之前的步骤中,以减少访存读写操作。
原始的特征图可以存储在GPU芯片外部,也可以存储在GPU芯片上存储层级较低的存储器中。
然后,可以根据GPU芯片的存储层级和(计算)特性,对特征图进行合理分块,并将分块好的特征图中的一个分块加载到更高一级存储器中。
如果可以采用多个存储层级,可重复执行逐级分块和逐级加载,使得各级存储器均得到高效利用。
一般芯片的最内层存储(最高层级存储器,例如寄存器(register))是非常宝贵的。而二维复用的数据量较大,例如7×7卷积参与单个值计算的数据量至少为7×7×2=98。所以,在存储资源受限的情况下,在最高层级存储器中采用一维复用,即加载连续一行或者一列中的部分元素到最高层级存储器(最内层存储单元,如寄存器)。
关于卷积核,可以进行相同的分级分块存储处理。例如,在最高层级存储器中存储一行或一列,而在次高层级存储器中存储整个卷积核。
如此,进行循环计算和访存,完成卷积计算。
下面,以在GPU进行7×7卷积为例,进行描述。
卷积核数据量相对较小且无需从外部存储器换入换出,可以全部存放到时延较低的存储单元,例如常量存储器(constant memory),可以视为次高层级存储器。
然后,在卷积计算前读取一行或一列数据到寄存器(最高层级存储器)中备用,此时需要7个数据存储空间。
特征图可以进行两级划分。一级分块的尺寸可以根据具体的GPU型号来确定,例如64×64、32×64、32×32等。此外,还可以进一步考虑边界数据加载,或填充(padding)。每个分块可以对应于GPU的线程块的运算,或者说,映射到GPU的线程块以用于执行卷积计算。
将特征图的上述一级分块加载到共享存储器(shared memory)中并同步,即在共享存储器层进行二维数据复用。共享存储器的访存延迟与上述常量存储器相当,可以视为次高层级存储器。
在寄存器(最高层级存储器)中进行一维数据复用。即,将上述一级中的一行或一列的多个数据(例如,7+x个数据,其中x为复用数,可根据具体型号进行调试选择)加载到寄存器中。
然后,CUDA Core可以从寄存器读取数据进行卷积计算。
如上文所述,通过将卷积固有的二维复用和一维复用结合到具体的芯片架构上的多级存储系统来。充分挖掘了卷积的双重复用性:对于大数据量存储采用二维复用,而对于小数据量存储则采用一维复用。可以避免im2col展开成矩阵乘法运算,规避了im2col过程中涉及的巨大访存消耗及存储容量需求。
另外,专门的矩阵乘法运算单元对卷积的尺寸对齐还有特定要求。例如在NVIDIA的GPU中,通道(channel)数必须为8的倍数,才能使用矩阵乘法计算单元(tensor core)来加速卷积计算。
而采用根据本公开的方案,也不必强制通道数为8的倍数。
通过实验测试,下表罗列了NVIDIA的TensorRT/cuDNN库和本发明方案在处理pix2pixHD的7×7卷积时的耗时对比(NVIDIA T4 GPU)。表中数据显示,根据本发明方案实现的代码对比NVIDIA的TensorRT库可加速2.7倍。
尺寸 | 768×1024 | 512×1024 | 576×768 |
TensorRT(μs) | 9214.09 | 6148.33 | 5168.66 |
本方案(μs) | 3424.90 | 2309.81 | 1967.29 |
加速(倍) | 2.7 | 2.7 | 2.6 |
上文中已经参考附图详细描述了根据本发明的用于卷积计算的数据缓存管理方案和卷积计算硬件加速方案。
本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。
附图中的流程图和框图显示了根据本发明的多个实施例的系统和方法的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标记的功能也可以以不同于附图中所标记的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (16)
1.一种用于卷积计算的数据存储管理方法,包括:
将特征图的较低层级分块存储到较低层级存储器;
从较低层级存储器中的所述较低层级分块中读取较高层级分块,并将所述较高层级分块存储到较高层级存储器,所述较高层级分块是所述较低层级分块的一部分,较高层级存储器的存储层级高于较低层级存储器的存储层级。
2.根据权利要求1所述的方法,其中,
将特征图逐级划分为多级分块,分别存储到相应存储层级的存储器,其中,更高层级的分块存储到更高存储层级的存储器中,并且/或者
更高存储层级的存储器具有更短的访存延迟。
3.根据权利要求2所述的方法,还包括:
对于每一级分块,当完成其所对应的全部卷积计算处理之后,从存储层级较低的上一级分块所在的上一级存储器中读取新的本级分块数据,并将新的本级分块数据存储到对应的本级存储器中。
4.根据权利要求2所述的方法,还包括:
使用最高层级存储器中存储的最高层级分块执行卷积计算处理。
5.根据权利要求4所述的方法,其中,
最高层级分块的数据数量大于卷积核行数或列数;并且/或者
次高层级分块的行数和列数大于卷积核的行数和列数。
6.根据权利要求5所述的方法,其中,
最高层级分块包括特征图中一行或一列数据中的多个数据,以用于当前的卷积计算处理;并且/或者
次高层级分块映射到图形处理单元的线程块,以用于执行卷积计算。
7.根据权利要求1所述的方法,还包括:
基于图形处理单元的处理能力和/或各级存储器的性能和/或特征图的尺寸,确定各级分块的尺寸。
8.根据权利要求1所述的方法,还包括:
将所述较低层级分块划分为多个子块,
其中,所述较高层级分块包括一个子块以及所述一个子块周围的若干行及若干列。
9.根据权利要求1所述的方法,还包括:
将卷积核存储在次高层级存储器中;以及
将卷积核中当前卷积计算处理所需的一行或一列存储在最高层级存储器中。
10.一种卷积计算硬件加速方法,包括:
使用根据权利要求1至9中任何一项所述的方法存储特征图和/或卷积核;以及
使用最高层级存储器中存储的卷积核的一行或一列数据和最高层级存储器中存储的特征图中一行或一列数据中的多个数据,进行卷积计算。
11.一种卷积计算硬件加速器,包括:
多级存储系统,包括多个存储层级的存储器,在较低层级存储器中存储特征图的较低层级分块,在较高层级存储器中存储从较低层级存储器中的所述较低层级分块中读取的较高层级分块,所述较高层级分块是所述较低层级分块的一部分;以及
计算单元,使用存储层级最高的最高层级存储器中存储的最高层级分块执行卷积计算处理。
12.根据权利要求11所述的卷积计算硬件加速器,其中,
特征图被逐级划分为多级分块,分别存储到相应存储层级的存储器,其中,更高层级的分块存储到更高存储层级的存储器中,并且/或者
更高存储层级的存储器具有更短的访存延迟;并且/或者
对于每一级分块,当完成其所对应的全部卷积计算处理之后,从存储层级较低的上一级分块所在的上一级存储器中读取新的本级分块数据,并将新的本级分块数据存储到对应的本级存储器中。
13.根据权利要求11所述的卷积计算硬件加速器,其中,
在最高层级存储器中存储的最高层级分块包括特征图中一行或一列数据中的多个数据,以用于当前的卷积计算处理;并且/或者
在次高层级存储器中存储的次高层级分块映射到图形处理单元的线程块,以用于执行卷积计算;并且/或者
在次高层级存储器中存储卷积核;并且/或者
在最高层级存储器中存储卷积核中当前卷积计算处理所需的一行或一列。
14.一种用于卷积计算的数据存储管理装置,包括写入装置和读取装置,
写入装置将特征图的较低层级分块存储到较低层级存储器;
读取装置从较低层级存储器中的所述较低层级分块中读取较高层级分块,并由写入装置将所述较高层级分块存储到较高层级存储器,
所述较高层级分块是所述较低层级分块的一部分,较高层级存储器的存储层级高于较低层级存储器的存储层级。
15.根据权利要求14所述的数据存储管理装置,其中,
特征图被逐级划分为多级分块,分别存储到相应存储层级的存储器,其中,更高层级的分块存储到更高存储层级的存储器中,并且/或者
更高存储层级的存储器具有更短的访存延迟;并且/或者
对于每一级分块,当完成其所对应的全部卷积计算处理之后,读取装置从存储层级较低的上一级分块所在的上一级存储器中读取新的本级分块数据,并由写入装置将新的本级分块数据存储到对应的本级存储器中。
16.根据权利要求14所述的数据存储管理装置,其中,
在最高层级存储器中存储的最高层级分块包括特征图中一行或一列数据中的多个数据,以用于当前的卷积计算处理;并且/或者
在次高层级存储器中存储的次高层级分块映射到图形处理单元的线程块,以用于执行卷积计算;并且/或者
在次高层级存储器中存储卷积核;并且/或者
在最高层级存储器中存储卷积核中当前卷积计算处理所需的一行或一列。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110136068.2A CN113298243A (zh) | 2021-02-01 | 2021-02-01 | 数据存储管理方法和装置以及卷积计算硬件加速器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110136068.2A CN113298243A (zh) | 2021-02-01 | 2021-02-01 | 数据存储管理方法和装置以及卷积计算硬件加速器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113298243A true CN113298243A (zh) | 2021-08-24 |
Family
ID=77318886
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110136068.2A Pending CN113298243A (zh) | 2021-02-01 | 2021-02-01 | 数据存储管理方法和装置以及卷积计算硬件加速器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113298243A (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108595379A (zh) * | 2018-05-08 | 2018-09-28 | 济南浪潮高新科技投资发展有限公司 | 一种基于多级缓存的并行化卷积运算方法及系统 |
DE102018119225A1 (de) * | 2017-08-07 | 2019-02-07 | Intel Corporation | System und Verfahren für einen optimierten Winograd-Faltungsbeschleuniger |
CN110321997A (zh) * | 2018-03-31 | 2019-10-11 | 北京深鉴智能科技有限公司 | 高并行度计算平台、系统及计算实现方法 |
CN111859797A (zh) * | 2020-07-14 | 2020-10-30 | Oppo广东移动通信有限公司 | 一种数据处理方法及装置、存储介质 |
CN112288082A (zh) * | 2020-11-23 | 2021-01-29 | 天津大学 | 一种基于hls的可重构通用标准卷积加速器设计方法 |
-
2021
- 2021-02-01 CN CN202110136068.2A patent/CN113298243A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102018119225A1 (de) * | 2017-08-07 | 2019-02-07 | Intel Corporation | System und Verfahren für einen optimierten Winograd-Faltungsbeschleuniger |
CN110321997A (zh) * | 2018-03-31 | 2019-10-11 | 北京深鉴智能科技有限公司 | 高并行度计算平台、系统及计算实现方法 |
CN108595379A (zh) * | 2018-05-08 | 2018-09-28 | 济南浪潮高新科技投资发展有限公司 | 一种基于多级缓存的并行化卷积运算方法及系统 |
CN111859797A (zh) * | 2020-07-14 | 2020-10-30 | Oppo广东移动通信有限公司 | 一种数据处理方法及装置、存储介质 |
CN112288082A (zh) * | 2020-11-23 | 2021-01-29 | 天津大学 | 一种基于hls的可重构通用标准卷积加速器设计方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220051087A1 (en) | Neural Network Architecture Using Convolution Engine Filter Weight Buffers | |
CN109919311B (zh) | 生成指令序列的方法、执行神经网络运算的方法和装置 | |
KR102168960B1 (ko) | 이레이저 코드 데이터 보호 및 복구 계산 시스템 및 방법 | |
KR102572757B1 (ko) | 집약성을 개선하기 위한 머신 학습 모델들의 수정 | |
WO2017156968A1 (zh) | 神经网络的计算方法、系统及其装置 | |
US8533432B2 (en) | Cache and/or socket sensitive multi-processor cores breadth-first traversal | |
CN113139648B (zh) | 执行神经网络模型的pim架构的数据布局优化 | |
CN105843775A (zh) | 片上数据划分读写方法、系统及其装置 | |
JP7201802B2 (ja) | 3次元画像処理におけるデータの読み書き方法とシステム、記憶媒体及び端末 | |
US20220179823A1 (en) | Reconfigurable reduced instruction set computer processor architecture with fractured cores | |
CN114565501B (zh) | 用于卷积运算的数据加载方法及其装置 | |
CN111931909B (zh) | 一种基于fpga的轻量卷积神经网络可重构部署方法 | |
US20230131251A1 (en) | System and method for memory compression for deep learning networks | |
CN112396072B (zh) | 基于asic与vgg16的图像分类加速方法及装置 | |
US11663454B2 (en) | Digital integrated circuit with embedded memory for neural network inferring | |
US11500962B1 (en) | Emulating fine-grained sparsity in a systolic array | |
CN117271136A (zh) | 数据处理方法、装置、设备和存储介质 | |
CN113298243A (zh) | 数据存储管理方法和装置以及卷积计算硬件加速器 | |
CN113986816B (zh) | 可重构计算芯片 | |
US11803736B1 (en) | Fine-grained sparsity computations in systolic array | |
CN112906877A (zh) | 用于执行神经网络模型的存储器架构中的数据布局有意识处理 | |
US11442643B2 (en) | System and method for efficiently converting low-locality data into high-locality data | |
US11748251B2 (en) | Storing tensors in memory based on depth | |
CN117973468A (zh) | 基于存算架构的神经网络推理方法及相关设备 | |
CN117786298A (zh) | 一种用于arm架构的通用矩阵乘法计算方法及系统 |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40057565 Country of ref document: HK |