CN110309912A - 数据存取方法、装置、硬件加速器、计算设备、存储介质 - Google Patents
数据存取方法、装置、硬件加速器、计算设备、存储介质 Download PDFInfo
- Publication number
- CN110309912A CN110309912A CN201810260777.XA CN201810260777A CN110309912A CN 110309912 A CN110309912 A CN 110309912A CN 201810260777 A CN201810260777 A CN 201810260777A CN 110309912 A CN110309912 A CN 110309912A
- Authority
- CN
- China
- Prior art keywords
- data
- cache blocks
- address
- storage
- input
- 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
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/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
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)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了一种数据存取方法、装置、硬件加速器、计算设备、存储介质。根据本发明的一种数据存取方法,包括:在输入数据是按特征向量为单位接收和存储的情况下,将第i个输入特征向量存储在B个缓存块中的第i%B个缓存块,此时该第i个输入特征向量的存储地址是该第i%B个缓存块中的上一次存储地址的下一个,这里,B、i都是自然数。实现了卷积核尺寸比较大的卷积神经网络中的高效数据访问。从而节省硬件资源,降低成本和功耗,支持了较高的计算并行度,提高系统性能。
Description
技术领域
本发明涉及卷积神经网络,尤其涉及卷积神经网络的数据存取技术。
背景技术
卷积神经网络(Convolutional Neural Network,简称CNN)已经在例如图像分类、检测、视频处理等领域取得非常好的性能,并且有越来越多的科学研究致力于把CNN应用于其他领域。
目前,CNN一般主要包括卷积层、降采样层和全连接层,通过改变层的数量、层间连接方式等,可以获得不同的网络结构,适用于不同的应用场景。
现在大部分CNN程序主要运行在通用处理器CPU上,或者使用图形处理器GPU加速。由于CPU和GPU功耗比较高,能效比低,所以最近有一些工作提出在FPGA或者ASIC芯片上实现CNN。
目前大多CNN实现的卷积核尺寸比较小,多为3×3到5×5。然而,当卷积核尺寸比较大时,例如,深度语音识别系统DeepSpeech2中,卷积核的尺寸在第一层是41×21,在第二层是21×11,现有的CNN硬件实现方案(FPGA或ASIC等)很难支持。基于这种情况,为了获得更好的性能,CNN硬件实现方案需要更高的数据和任务并行度,而对于卷积核尺寸较大的情况,数据的存储和调度(本文也称为数据的“存取”)尤其是一个很大的挑战。
因此,如何提供一种高效的数据存储方法、装置、硬件加速器、计算设备、存储介质,适应于卷积核尺寸比较大的场景,尤其是资源有限的卷积神经网络的例如硬件加速系统,成为亟待解决的技术问题。
发明内容
为了解决以上问题之一,本发明提供了一种数据存储方法、装置、硬件加速器、计算设备、存储介质,实现卷积核尺寸比较大的卷积神经网络中的高效数据访问。
根据本发明的实施例的一种用于卷积神经网络的数据存取方法,其中,输入数据矩阵的尺寸为H×W,卷积核的数量为P,卷积核有i层,用于存储数据的缓存块的数量为B,其中,H、W、P、i、B均为自然数,并且其中,缓存块的数量B小于等于输入数据矩阵的维度中至少之一,该数据存取方法包括:存储输入数据的步骤,当输入数据是按特征向量为单位接收和存储时,将第i个输入特征向量存储在B个缓存块中的第i%B个缓存块,该第i个输入特征向量的存储地址是该第i%B个缓存块中的上一次存储地址的下一个。
可选地,上述缓存块的数量B小于等于第i层卷积核的维度中至少之一。
可选地,如果缓存块的位宽等于输入特征向量中元素位宽的倍数,则在一个地址中能够存储多个元素。
可选地,如果在第i%B个缓存块中的针对用于存储第i个输入特征向量的前一批数据的上一次存储操作的存储地址是a,则此次第i个输入特征向量的紧接在上述前一批数据之后的一批数据的存储地址是a+N,其中,N是输入数据矩阵H×W的一个输入特征向量的地址的大小。
可选地,用于卷积神经网络的数据存取方法还包括:读取存储的输入数据的步骤,其中,逐个时钟周期地从所述B个缓存块中同时读取数据的地址的规则如下:B个缓存块被分为两组,一组的地址是a,则另一组的地址是a加上一个特征向量的地址大小,此时,地址为a的一组缓存块的数量是在1到B之间,并且包括1和B,这两组中的所述另一个组的缓存块的数量在0到B-1之间,并且包括0和B-1。
可选地,用于卷积神经网络的数据存取方法还包括:存储结果数据的步骤,其中,按照上述的存储输入数据的步骤中的存储输入数据的方式,将各层卷积核的计算结果存储在所述B个缓存块中;以及读取结果数据的步骤,其中,按照上述的读取输入数据的步骤中的读取输入数据的方式,读取各层卷积核的计算结果。
根据本发明的实施例的一种用于卷积神经网络的数据存取装置,其中,输入数据矩阵的尺寸为H×W,卷积核的数量为P,卷积核有i层,用于存储数据的缓存块的数量为B,其中,H、W、P、i、B均为自然数,并且其中,缓存块的数量B小于等于输入数据矩阵的维度中至少之一,该数据存取装置包括:用于存储输入数据的部件,当输入数据是按特征向量为单位接收和存储时,该用于存储输入数据的部件将第i个输入特征向量存储在B个缓存块中的第i%B个缓存块,该第i个输入特征向量的存储地址是该第i%B个缓存块中的上一次存储地址的下一个。
可选地,上述的数据存取装置还包括:用于读取存储的输入数据的部件,其中,该用于读取存储的输入数据的部件逐个时钟周期地从所述B个缓存块中同时读取数据,并且,其读取数据的地址的规则如下:B个缓存块被分为两组,一组的地址是a,则另一组的地址是a加上一个特征向量的地址大小,此时,地址为a的一组缓存块的数量是在1到B之间,并且包括1和B,这两组中的所述另一个组的缓存块的数量在0到B-1之间,并且包括0和B-1。
可选地,上述的数据存取装置还包括:用于存储结果数据的部件,其中,按照上述的用于存储输入数据的部件所使用的存储输入数据的方式,该用于存储结果数据的部件将第i层卷积核的计算结果存储在所述B个缓存块中;以及用于读取结果数据的部件,其中,按照上述的用于读取输入数据的部件的读取输入数据的方式,该用于读取结果数据的部件读取各层卷积核的计算结果。
根据本发明的实施例的一种用于卷积神经网络的硬件加速器,包括:数据处理模块,用于对输入数据执行预定的计算处理,并产生输出数据;数据存储模块,用于存储数据处理模块所需的输入数据或数据处理模块的输出数据;以及控制模块,用于对所述数据处理模块和所述数据存储模块进行控制,以执行上述的根据本发明的数据存取方法。
可选地,上述数据处理模块是卷积计算模块,用于对输入数据进行卷积计算。
根据本发明的实施例的一种计算设备,包括:处理器;以及存储器,其上存储有可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器执行上述的根据本发明的数据存取方法。
根据本发明的实施例的一种非暂时性机器可读存储介质,其上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行上述的数据存取方法。
通过上述根据本发明的实施例的用于卷积神经网络的数据存取方法,本发明在卷积核尺寸较大时具有很好的优势,具体而言,其一方面可以节省硬件资源,降低成本和功耗,另一方面可以支持较高的计算并行度,提高系统性能。
附图说明
通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
图1例示了卷积神经网络的卷积核的两层卷积过程。
图2例示了缓存块存储输入数据的一种示例性方式。
图3例示出了对于例如卷积核第一层(其尺寸为M1×N1),输入数据在B个缓存块中的存储和调度方式。
图4例示出了卷积核第一层的计算结果存储方式。
图5例示出了根据本发明提出的卷积神经网络计算加速方法的流程图。
图6例示出了可以实施根据本发明的卷积神经网络计算加速方法的卷积神经网络硬件加速器的示意性框图。
图7例示出了根据本发明的一种实施方式的卷积神经网络实现装置。
图8示出了根据本发明的一种实施方式的计算设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。这里需要说明的是,本申请中的数字、序号以及附图标记仅是为了方便描述而出现的,对于本发明的步骤、顺序等等均不构成任何限制,除非在说明书中明确指出了步骤的执行有特定的先后顺序。
根据本发明的一个实施例,提出一种用于卷积神经网络的数据存取方法。请注意,在本文中,术语“数据的存取”/“数据存取”包括但不限于数据的存储、写入、读取、调度、布局安排等操作。
首先,本文例如可以假定应用场景如下:输入数据矩阵的尺寸为H×W,卷积核数量为P,假定每个卷积核有两个层,这两个层的卷积核尺寸分别为M1×N1(第一层卷积核的尺寸)、M2×N2(第二层卷积核的尺寸)。卷积核第一层和第二层的步长(stride,表示卷积核在特征图像上做卷积的平移步数)分别为SH1、SW1和SH2、SW2。请注意,这里是为了方便描述和理解起见而假定卷积核有两个层,实际上本领域技术人员都了解,卷积核可以有至少一个层,并不仅限于上面例示的两个层。
对于上述的应用场景,假设第一层卷积输出的尺寸为H1×W1,第二层卷积输出的尺寸为H2×W2,如图1所示,其中,核1和核2分别表示上述的第一层卷积核与第二层卷积核,图1中的偏置(bias)是卷积神经网络中常用的参数(本领域技术人员知晓偏置的用法,并且,偏置的使用不是本发明要关注的内容),则有:
第一层卷积输出为
H1×W1×P={(H1-M1)/SH1+1}×{(W1-N1)/SW1+1}×P;
第二层卷积输出为
H2×W2×P={(H2-M2)/SH2+1}×{(W2-N2)/SW2+1}×P。
以下将描述根据本发明的一个示例性实施例的用于卷积神经网络的数据存取方法。
为了提高运算速度,发明人提出可以在硬件设计中实现更高的并行度,比如同时输入多个数据,让P个卷积核同时作用于这些数据,由此提高运算的并行度和运算效率与速度。
考虑到通常情况下,卷积神经网络的硬件加速系统的硬件资源总是有限的,为了能够同时输入多个数据,本发明提出,可以根据缓存资源数量和输入数据矩阵的尺寸来决定输入存储的缓存数量。比如,当可使用缓存资源数量很有限时,缓存块的数量可以小于输入数据矩阵的尺寸的某一维度大小,此时,假定使用缓存块数量为B,则此时B<=H或B<=W,这里H和W为如上所述的输入数据矩阵的维度。
优选地,可根据缓存资源数量和卷积核尺寸来决定输入存储的缓存数量。比如,假定每个卷积核有两个层,当缓存资源数量大于或远大于卷积核尺寸时,缓存块的数量当然可以设为卷积核的某一维度的大小;但是,当可使用缓存资源数量很有限时,缓存块的数量可以小于卷积核的某一维度大小,此时,假定使用缓存块数量为B,缓存块的数量B小于等于第一和第二层卷积核的维度M1、N1和M2、N2之一。
再有,可选地,上述缓存块的数量B可以小于等于输入数据矩阵的维度中至少之一。另外,可选地,上述缓存块的数量B可以小于等于第一和第二层卷积核的维度M1、N1和M2、N2中至少之一。
可以将输入数据按图2所例示的那样,分块存储,其中,特征向量输入可以是以向量为单位接收与存储的。
请注意,这里是为了方便描述和理解起见而假定每个卷积核有两个层,实际上本领域技术人员都了解,卷积核可以有至少一个层,并不仅限于上面例示的两个层。对于卷积核有多个层的情况,缓存块的数量B的确定也是类似的。
对于上述例示出的用于确定缓存数量的各种情况,根据卷积核尺寸来确定输入存储的缓存数量,可以更多地提高资源利用率。
在硬件资源有限的情况下,如果将上述的B个缓存块按照从上到下的顺序编号为1,2,......,B(如图2所示),根据本发明的输入数据的存储方式的总体思想可以描述为:在特征向量输入是按向量(此时例如一个特征向量可能是H×W矩阵的一个行)为单位接收和存储的情况下,将第i个向量存储在B个缓存块中的第i%B(i对B求余)个缓存块,此时该第i个向量的存储地址是该第i%B个缓存块中的上一次存储地址(上一次在该第i%B个缓存块中进行存储的地址,如果有的话)的下一个。例如,如果在该第i%B个缓存块中的上一次存储操作(存储第i个向量的前一批数据)的存储地址是a,这一次第i个向量的数据(紧接在上述前一批数据之后的一批数据)的存储地址是a+N(N是输入数据矩阵H×W的一个特征向量的地址的大小)。
可选地,对于本发明的分块存储方式,若缓存块的位宽(指每个缓存块地址下的数据位数)等于特征向量中元素位宽(指特征向量中的元素所占的位数)的几倍,则可以在一个地址中存储多个元素。
通过上述的输入数据的存储方式,在进行卷积神经网络的卷积核运算的过程中,每个时钟周期都能从B个缓存块中读取B个数据,由此实现了快速的并行读取和运算。这样,卷积核每个时钟周期能完成B*P个乘法(或乘累加)操作。由此,总共仅需要ceil(M1/B)个时钟周期就可以完成一个结果数据所需要的乘法操作,相比已有技术,大大提升了数据和任务并行度,明显加快了运算速度。
相应地,在读取数据时,如上所述,在每一个时钟周期,都能从B个缓存块中读取B个数据。在每个时钟周期读取数据时,尽管都是从这B个缓存块中读取数据的,但在每个时钟周期从这B个缓存块中读取数据的地址并不一定是相同的。
具体地,从这B个缓存块中同时(每个时钟周期)读取数据的地址的规则可以如下:从这B个缓存块中读取数据的地址可能有两种情况,即B个缓存块分为两组(因为B小于等于输入数据矩阵的尺寸的某一维度,优选地,B小于等于卷积核尺寸的某一维度),假设一组的地址是a,则另一组的地址是a加上一个特征向量的地址大小(因为是按特征向量写入和读取),此时,地址为a的一组的数量是在1到B之间(包括1和B),上述另一个组(地址是a加上一个特征向量的地址大小)的数量在0到B-1之间(包括0和B-1)。
例如,在某个时钟周期,这B个缓存块的数据读取地址如下:地址为a的一个组如果有1个数据,则地址为a加上一个特征向量的地址大小的另一个组有B-1个数据;相应地,地址为a的一个组如果有B个数据,则地址为a加上一个特征向量的地址大小的另一个组有0个数据;再另外,地址为a的一个组如果有X个数据,则地址为a加上一个特征向量的地址大小的另一个组有B-X个数据。
这里,分组的情况主要看当前计算数据的第一行所在的缓存块ID,比如,假定在开始计算时,第一次计算是从第一行开始的,此时当前计算数据第一行存储在缓存块1中,则读取的缓存块1到缓存块B的地址为同一组地址,地址大小为0;之后经过若干次卷积计算,同一起始行的卷积完成后,下一次计算数据起始行改成例如1+SH1(如上所述,SH1为卷积核第一层的在高度方向的步长),则下一次计算开始时,当前计算数据通常位于缓存块1+SH1中。此时,缓存块1+SH1到B属于第一组,地址大小为0,而缓存块1到SH1属于第二组,地址大小为一个特征向量的地址大小。这里,是以卷积核第一层的在高度方向的步长为例对缓存块的数据读取地址的分组情况进行说明的,本领域技术人员应理解,本发明不限于此。
下面,将以第一组地址为例,说明读取数据地址变化规律:假定对于卷积核第一层,其尺寸为M1×N1,一个卷积核列大小的元素共需要ceil(M1/B)个时钟周期(这里,ceil(x)函数的含义为返回大于或者等于x的最小整数),在该连续的ceil(M1/B)个时钟周期中,读取数据地址的变化如上所述,即每次增加地址时,都增加一个特征向量的地址大小(N);然后在下一个连续的ceil(M1/B)个时钟周期中,读取数据地址的变化同样如此。当计算完成一个卷积核计算时,地址根据SW1(如上所述,SW1为卷积核第一层的在宽度方向的步长)变化。
请注意,对于上述的例子,ceil(M1/B)个时钟周期完成上述P个卷积核对一列的计算,由此,N1×ceil(M1/B)个时钟周期完成一个卷积核尺寸的计算。
图3例示出了对于例如卷积核第一层(其尺寸为M1×N1),输入数据在B个缓存块中的存储和调度方式,在该例子中,B=M1/2,所以B个缓存块中的数据的存储和读取地址a对应的是卷积核第一层第一列的前半列数据,这B个缓存块中的数据的存储和读取地址a+N(N为一个输入特征向量的长度)对应的是卷积核第一层第一列的后半列数据,以此类推(按照前述的读取数据地址变化规律)。
为了更清楚地描述和解释本发明起见,还在图4例示出了卷积核第一层的计算结果存储方式。对于各层卷积核,其计算结果的存储与上述的输入数据存储方式类似,即按照图4所示的方式进行存储能够大大方便并行任务处理和提高运算速度与效率。类似地,卷积核的计算结果的读取与上述的读取输入数据的方式类似,在此不再赘述。
通过本发明的上述的数据存取方法,可以带来如下优点:1)在资源有限的硬件系统中,大大节省了系统的存储资源;2)能够同时得到P*Ni个并行计算结果(Ni为第i层卷积核的在宽度方向上的维度),通过以这样的方式存储,在缓存块数量有限时不会发生丢数的缺陷;3)下一层计算时的模式和第一层一样,只是第一层水平方向相邻数据的间距为0,而第二层水平方向相邻数据间距为P-1;只要修改参数就可以控制读取地址,从而达到数据读取模块对不同层的复用;4)当CNN的计算结果要传给其他模块时,数据输出模块可以进行数据格式调整,数据格式调整的方式与上面描述的本发明的数据存取方式相似,通过这样的方式,可以充分提高任务的并行度,提高计算速度和效率。
图5示出了根据本发明的一种实施方式的数据存取方法的流程图。
如图1所示,在步骤S110,通过对运算处理的输入数据在缓存块中的存储方式进行调度,使得能够得到在缓存块中连续存储的适于该运算处理的输入数据。
然后,在步骤S120,在执行后续的运算处理时,读取经过上述调度后存储的输入数据。
随后,在步骤S130,将经过运算处理的运算结果按照输入数据存储的方式存储到缓存块中。
之后,在步骤S140,将结果数据从缓存块中读取出来。
由此,可以方便且快速地实现卷积神经网络计算。
这里的运算处理可以是卷积计算,也可以是其它计算处理。这里的输入数据可以是先前的卷积计算的输出结果数据,也可以是其它数据。
本发明的卷积神经网络数据存取方法可以应用于使用软件方法来实现卷积神经网络计算的场景,也可以应用于采用FPGA或ASIC等硬件加速器来实现卷积神经网络计算的场景。
图6示出了根据本发明的一种实施方式的用于卷积神经网络的硬件加速器的示意性框图。
该硬件加速器可以包括数据处理模块210、数据存储模块220和控制模块230。
数据处理模块210用于对输入数据执行预定的计算处理,并产生输出数据。数据处理模块210例如可以是卷积计算模块,用于对输入数据进行卷积计算。
数据存储模块(也可以称为“存储器”)220用于存储(或者缓存)数据处理模块210所需的输入数据或数据处理模块210的输出数据。
控制模块230用于对数据处理模块210和数据存储模块220进行控制,以执行根据本发明的各种实施例的数据存取方法的所需步骤。
图7例示出了根据本发明的一种实施方式的数据存取装置。
如图7所示,输入数据存储部件310通过对运算处理的输入数据在缓存块中的存储方式进行调度,使得能够得到在缓存块中连续存储的适于该运算处理的输入数据。
输入数据读取部件320在执行后续的运算处理的过程中,读取经过上述调度后存储的输入数据。
结果数据存储部件330将经过运算处理的运算结果按照上述的输入数据存储的方式存储到缓存块中。
结果数据读取部件340将结果数据按照上述的读取输入数据的方式从缓存块中读取出来。
其中,这些部件中的具体的操作与上面描述的数据存储方法中的步骤类似,在此不再赘述。
图8示出了根据本发明的一种实施方式的计算设备的结构示意图。
参见图8,计算设备1包括存储器10和处理器20。
处理器20可以是一个多核的处理器,也可以包含多个处理器。在一些实施例中,处理器20可以包含一个通用的主处理器以及一个或多个特殊的协处理器,例如图形处理器(GPU)、数字信号处理器(DSP)等等。在一些实施例中,处理器20可以使用定制的电路实现,例如特定用途集成电路(ASIC,Application Specific Integrated Circuit)或者现场可编程逻辑门阵列(FPGA,Field Programmable Gate Arrays)。
存储器10可以包括各种类型的存储单元,例如系统内存、只读存储器(ROM),和永久存储装置。其中,ROM可以存储处理器20或者计算机的其他模块需要的静态数据或者指令。永久存储装置可以是可读写的存储装置。永久存储装置可以是即使计算机断电后也不会失去存储的指令和数据的非易失性存储设备。在一些实施方式中,永久性存储装置采用大容量存储装置(例如磁或光盘、闪存)作为永久存储装置。另外一些实施方式中,永久性存储装置可以是可移除的存储设备(例如软盘、光驱)。系统内存可以是可读写存储设备或者易失性可读写存储设备,例如动态随机访问内存。系统内存可以存储一些或者所有处理器在运行时需要的指令和数据。此外,存储器10可以包括任意计算机可读存储媒介的组合,包括各种类型的半导体存储芯片(DRAM,SRAM,SDRAM,闪存,可编程只读存储器),磁盘和/或光盘也可以采用。在一些实施方式中,存储器1010可以包括可读和/或写的可移除的存储设备,例如激光唱片(CD)、只读数字多功能光盘(例如DVD-ROM,双层DVD-ROM)、只读蓝光光盘、超密度光盘、闪存卡(例如SD卡、min SD卡、Micro-SD卡等等)、磁性软盘等等。计算机可读存储媒介不包含载波和通过无线或有线传输的瞬间电子信号。
存储器10上存储有可处理代码,当可处理代码被处理器20处理时,可以使处理器20执行上文述及的用于卷积神经网络的数据存取方法。
上文中已经参考附图详细描述了根据本发明的用于卷积神经网络的数据存取方法。
此外,根据本发明的方法还可以实现为一种计算机程序或计算机程序产品,该计算机程序或计算机程序产品包括用于执行本发明的上述方法中限定的上述各步骤的计算机程序代码指令。
或者,本发明还可以实施为一种非暂时性机器可读存储介质(或计算机可读存储介质、或机器可读存储介质),其上存储有可执行代码(或计算机程序、或计算机指令代码),当所述可执行代码(或计算机程序、或计算机指令代码)被电子设备(或计算设备、服务器等)的处理器执行时,使所述处理器执行根据本发明的上述方法的各个步骤。
本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。
附图中的流程图和框图显示了根据本发明的多个实施例的系统和方法的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标记的功能也可以以不同于附图中所标记的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (13)
1.一种用于卷积神经网络的数据存取方法,其中,输入数据矩阵的尺寸为H×W,卷积核的数量为P,卷积核有i层,用于存储数据的缓存块的数量为B,其中,H、W、P、i、B均为自然数,并且其中,缓存块的数量B小于等于输入数据矩阵的维度中至少之一,
其特征在于,该数据存取方法包括:
存储输入数据的步骤,当输入数据是按特征向量为单位接收和存储时,将第i个输入特征向量存储在B个缓存块中的第i%B个缓存块,该第i个输入特征向量的存储地址是该第i%B个缓存块中的上一次存储地址的下一个。
2.如权利要求1所述的数据存取方法,其特征在于,上述缓存块的数量B小于等于第i层卷积核的维度中至少之一。
3.如权利要求1所述的数据存取方法,其特征在于,如果缓存块的位宽等于输入特征向量中元素位宽的倍数,则在一个地址中能够存储多个元素。
4.如权利要求1所述的数据存取方法,其特征在于,如果在第i%B个缓存块中的针对用于存储第i个输入特征向量的前一批数据的上一次存储操作的存储地址是a,则此次第i个输入特征向量的紧接在上述前一批数据之后的一批数据的存储地址是a+N,其中,N是输入数据矩阵H×W的一个输入特征向量的地址的大小。
5.如权利要求1所述的数据存取方法,其特征在于还包括:
读取存储的输入数据的步骤,其中,逐个时钟周期地从所述B个缓存块中同时读取数据的地址的规则如下:B个缓存块被分为两组,一组的地址是a,则另一组的地址是a加上一个特征向量的地址大小,地址为a的一组缓存块的数量是在1到B之间,并且包括1和B,这两组中的所述另一个组的缓存块的数量在0到B-1之间,并且包括0和B-1。
6.如权利要求1所述的数据存取方法,其特征在于,还包括:
存储结果数据的步骤,其中,按照上述的存储输入数据的步骤中的存储输入数据的方式,将各层卷积核的计算结果存储在所述B个缓存块中;以及
读取结果数据的步骤,其中,按照上述的读取输入数据的步骤中的读取输入数据的方式,读取各层卷积核的计算结果。
7.一种用于卷积神经网络的数据存取装置,其中,输入数据矩阵的尺寸为H×W,卷积核的数量为P,卷积核有i层,用于存储数据的缓存块的数量为B,其中,H、W、P、i、B均为自然数,并且其中,缓存块的数量B小于等于输入数据矩阵的维度中至少之一,
其特征在于,该数据存取装置包括:
用于存储输入数据的部件,当输入数据是按特征向量为单位接收和存储时,该用于存储输入数据的部件将第i个输入特征向量存储在B个缓存块中的第i%B个缓存块,该第i个输入特征向量的存储地址是该第i%B个缓存块中的上一次存储地址的下一个。
8.如权利要求7所述的数据存取装置,其特征在于,还包括:
用于读取存储的输入数据的部件,其中,该用于读取存储的输入数据的部件逐个时钟周期地从所述B个缓存块中同时读取数据,并且,其读取数据的地址的规则如下:B个缓存块被分为两组,一组的地址是a,则另一组的地址是a加上一个特征向量的地址大小,此时,地址为a的一组缓存块的数量是在1到B之间,并且包括1和B,这两组中的所述另一个组的缓存块的数量在0到B-1之间,并且包括0和B-1。
9.如权利要求1所述的数据存取装置,其特征在于,还包括:
用于存储结果数据的部件,其中,按照上述的用于存储输入数据的部件所使用的存储输入数据的方式,该用于存储结果数据的部件将第i层卷积核的计算结果存储在所述B个缓存块中;以及
用于读取结果数据的部件,其中,按照上述的用于读取输入数据的部件的读取输入数据的方式,该用于读取结果数据的部件读取各层卷积核的计算结果。
10.一种用于卷积神经网络的硬件加速器,包括:
数据处理模块,用于对输入数据执行预定的计算处理,并产生输出数据;
数据存储模块,用于存储数据处理模块所需的输入数据或数据处理模块的输出数据;以及
控制模块,用于对所述数据处理模块和所述数据存储模块进行控制,以执行按照权利要求1-6中任何一项所述的方法。
11.根据权利要求10所述的硬件加速器,其中,
所述数据处理模块是卷积计算模块,用于对输入数据进行卷积计算。
12.一种计算设备,包括:
处理器;以及
存储器,其上存储有可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器执行如权利要求1-6中任何一项所述的方法。
13.一种非暂时性机器可读存储介质,其上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行如权利要求1-6中任何一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810260777.XA CN110309912B (zh) | 2018-03-27 | 2018-03-27 | 数据存取方法、装置、硬件加速器、计算设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810260777.XA CN110309912B (zh) | 2018-03-27 | 2018-03-27 | 数据存取方法、装置、硬件加速器、计算设备、存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110309912A true CN110309912A (zh) | 2019-10-08 |
CN110309912B CN110309912B (zh) | 2021-08-13 |
Family
ID=68073788
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810260777.XA Active CN110309912B (zh) | 2018-03-27 | 2018-03-27 | 数据存取方法、装置、硬件加速器、计算设备、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110309912B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111881813A (zh) * | 2020-07-24 | 2020-11-03 | 深圳市卡联科技股份有限公司 | 人脸识别终端的数据存储方法及系统 |
CN112799599A (zh) * | 2021-02-08 | 2021-05-14 | 清华大学 | 一种数据存储方法、计算核、芯片和电子设备 |
CN113448624A (zh) * | 2021-07-15 | 2021-09-28 | 安徽聆思智能科技有限公司 | 数据存取方法及装置、系统、ai加速器 |
CN113741821A (zh) * | 2021-11-01 | 2021-12-03 | 中科声龙科技发展(北京)有限公司 | 基于分类的数据存取方法、系统、介质及程序 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070047802A1 (en) * | 2005-08-31 | 2007-03-01 | Microsoft Corporation | Training convolutional neural networks on graphics processing units |
CN104915322A (zh) * | 2015-06-09 | 2015-09-16 | 中国人民解放军国防科学技术大学 | 一种卷积神经网络硬件加速方法及其axi总线ip核 |
US20160117118A1 (en) * | 2013-06-20 | 2016-04-28 | Cornell University | System and methods for processor-based memory scheduling |
CN107679621A (zh) * | 2017-04-19 | 2018-02-09 | 北京深鉴科技有限公司 | 人工神经网络处理装置 |
CN107679620A (zh) * | 2017-04-19 | 2018-02-09 | 北京深鉴科技有限公司 | 人工神经网络处理装置 |
CN107704922A (zh) * | 2017-04-19 | 2018-02-16 | 北京深鉴科技有限公司 | 人工神经网络处理装置 |
-
2018
- 2018-03-27 CN CN201810260777.XA patent/CN110309912B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070047802A1 (en) * | 2005-08-31 | 2007-03-01 | Microsoft Corporation | Training convolutional neural networks on graphics processing units |
US20160117118A1 (en) * | 2013-06-20 | 2016-04-28 | Cornell University | System and methods for processor-based memory scheduling |
CN104915322A (zh) * | 2015-06-09 | 2015-09-16 | 中国人民解放军国防科学技术大学 | 一种卷积神经网络硬件加速方法及其axi总线ip核 |
CN107679621A (zh) * | 2017-04-19 | 2018-02-09 | 北京深鉴科技有限公司 | 人工神经网络处理装置 |
CN107679620A (zh) * | 2017-04-19 | 2018-02-09 | 北京深鉴科技有限公司 | 人工神经网络处理装置 |
CN107704922A (zh) * | 2017-04-19 | 2018-02-16 | 北京深鉴科技有限公司 | 人工神经网络处理装置 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111881813A (zh) * | 2020-07-24 | 2020-11-03 | 深圳市卡联科技股份有限公司 | 人脸识别终端的数据存储方法及系统 |
CN111881813B (zh) * | 2020-07-24 | 2021-02-19 | 深圳市卡联科技股份有限公司 | 人脸识别终端的数据存储方法及系统 |
CN112799599A (zh) * | 2021-02-08 | 2021-05-14 | 清华大学 | 一种数据存储方法、计算核、芯片和电子设备 |
CN113448624A (zh) * | 2021-07-15 | 2021-09-28 | 安徽聆思智能科技有限公司 | 数据存取方法及装置、系统、ai加速器 |
CN113741821A (zh) * | 2021-11-01 | 2021-12-03 | 中科声龙科技发展(北京)有限公司 | 基于分类的数据存取方法、系统、介质及程序 |
CN113741821B (zh) * | 2021-11-01 | 2022-03-01 | 中科声龙科技发展(北京)有限公司 | 基于分类的数据存取方法、系统、介质及程序 |
Also Published As
Publication number | Publication date |
---|---|
CN110309912B (zh) | 2021-08-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110309912A (zh) | 数据存取方法、装置、硬件加速器、计算设备、存储介质 | |
US10140123B2 (en) | SIMD processing lanes storing input pixel operand data in local register file for thread execution of image processing operations | |
CN105468439B (zh) | 在cpu-gpu异构框架下遍历固定半径内邻居的自适应并行方法 | |
CN102968390B (zh) | 基于预先解码分析的配置信息缓存管理方法及系统 | |
CN106445471A (zh) | 处理器和用于在处理器上执行矩阵乘运算的方法 | |
Zhao et al. | Optimizing bandwidth and power of graphics memory with hybrid memory technologies and adaptive data migration | |
Cao et al. | Implementing sparse matrix-vector multiplication using CUDA based on a hybrid sparse matrix format | |
CN109117595A (zh) | 一种热负荷预测方法、装置、可读介质及电子设备 | |
WO2023184900A1 (zh) | 处理器、芯片、电子设备及数据处理方法 | |
CN109597684A (zh) | 处理器中的动态性能偏置 | |
US9965343B2 (en) | System and method for determining concurrency factors for dispatch size of parallel processor kernels | |
CN109857984A (zh) | 一种锅炉负荷率-效能曲线的回归方法和装置 | |
CN109408411A (zh) | 基于数据访问次数的GPGPU的L1 Cache管理方法 | |
CN108846748A (zh) | 一种独立进程执行合约的方法及装置 | |
US20240078112A1 (en) | Techniques for decoupled access-execute near-memory processing | |
CN106991071A (zh) | 内核调度方法及系统 | |
CN113539318B (zh) | 基于磁性缓存的存内计算电路芯片和计算装置 | |
CN109240644A (zh) | 一种用于伊辛芯片的局部搜索方法及电路 | |
CN113222129A (zh) | 一种基于多级缓存循环利用的卷积运算处理单元及系统 | |
CN107357206A (zh) | 一种基于fpga板卡的运算优化的方法、装置及系统 | |
KR20210081663A (ko) | 인터커넥트 장치, 인터커넥트 장치의 동작 방법 및 인터커넥트 장치를 포함하는 AI(Artificial Intelligence) 가속기 시스템 | |
CN111045959B (zh) | 一种基于存储优化的复杂算法变量映射方法 | |
CN110109385A (zh) | 综合能源系统的设备调控方法及装置 | |
US11430164B2 (en) | Tile-based scheduling | |
CN202995712U (zh) | 基于预先解码分析的配置信息缓存管理系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20190926 Address after: 2100 San Jose Rojack Avenue, California, USA Applicant after: XILINX INC Address before: 100083, 17 floor, four building four, 1 Wang Zhuang Road, Haidian District, Beijing. Applicant before: Beijing Shenjian Intelligent Technology Co., Ltd. |
|
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |