CN114169514B - 一种卷积硬件加速方法及卷积硬件加速电路 - Google Patents
一种卷积硬件加速方法及卷积硬件加速电路 Download PDFInfo
- Publication number
- CN114169514B CN114169514B CN202210131239.7A CN202210131239A CN114169514B CN 114169514 B CN114169514 B CN 114169514B CN 202210131239 A CN202210131239 A CN 202210131239A CN 114169514 B CN114169514 B CN 114169514B
- Authority
- CN
- China
- Prior art keywords
- data
- convolution
- feature map
- tile
- row
- 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.)
- Active
Links
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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Image Analysis (AREA)
Abstract
本发明提供一种卷积硬件加速方法及卷积硬件加速电路。卷积硬件加速方法包括:将特征图分割为多个图块;在进行分割时,分割的图块的列宽和MAC运算单元的数量相匹配,分割的图块的行高为内部存储模块可容纳的最大行数;按顺序读入一个图块和对应的卷积核在进行卷积运算所需的数据;依次提取所述一个图块和所述对应的卷积核的提取数据;以及进行卷积运算并输出运算结果到外部存储模块。采用本发明提供的卷积硬件加速方法,可以用较小的内部缓存面积可以支持任意大小分辨率的特征图进行卷积运算;采用这样的图块分割方式,使得MAC运算单元的利用效率较高,且可以尽可能地减少垂直方向上边界数据的读取,进一步提高卷积的运算速度。
Description
技术领域
本发明涉及卷积神经网络和芯片设计技术领域,尤其涉及一种卷积硬件加速方法及卷积硬件加速电路。
背景技术
卷积神经网络(convolution neural network,CNN)广泛地使用在目标识别、目标检测等应用领域。当前,随着神经网络的深度和输入特征图的数据量增加,导致了卷积运算量不断加大。通过专用芯片来进行CNN的卷积运算可以加快计算速度。然而,用于CNN的卷积计算的专用芯片设计会面临两个问题,一是如何提高运算的并行度来提高计算效率,二是如何减少存储器的读写带宽来节省计算功耗。
因此,如何提供一种卷积硬件加速方法及卷积硬件加速电路,用来提高卷积运算的并行度和减少存储器的读写带宽,实乃本领域的重要课题。
发明内容
为了解决上述技术问题,本发明提供一种卷积硬件加速方法,其特征在于,包括以下步骤:将特征图分割为多个图块;在进行分割时,分割的图块的列宽和MAC运算单元的数量相匹配,分割的图块的行高为内部存储模块可容纳的最大行数;按顺序读入一个图块和对应的卷积核在进行卷积运算所需的数据;依次提取所述一个图块和所述对应的卷积核的提取数据;以及进行卷积运算并输出运算结果。
采用本发明中提供的卷积硬件加速方法,可以用较小的内部缓存面积可以支持任意大小分辨率的特征图进行卷积运算;分割的图块的列宽和MAC运算单元的数量相匹配,使得MAC运算单元的利用效率较高,避免闲置MAC运算单元,提高卷积运算的速度;除此之外,分割的图块的行高为内部存储模块可容纳的最大行数,采用这样的图块分割方式,可以尽可能地减少垂直方向上边界数据的读取,进一步提高卷积的运算速度。
优选地,当特征图的宽度小于MAC运算单元的数量时,将不对特征图的行进行分割;当特征图的宽度大于MAC运算单元的数量时,对特征图进行分割的图块的列宽为MAC运算单元的数量。
优选地,当特征图的宽度小于MAC运算单元的数量乘以步长时,将不对特征图的行进行分割;当特征图的宽度大于MAC运算单元的数量乘以步长时,对特征图进行分割的图块的列宽为MAC运算单元的数量乘以步长。
采用以上图块的分割方式,可以尽可能地提高MAC运算单元的利用率,避免闲置MAC运算单元。
优选地,所述卷积硬件加速方法用于一电子装置,更包括以下步骤:从所述电子装置的外部存储模块读取并缓存多张特征图中的至少一者以及多个卷积核;以及依次缓存所述特征图的所述一个图块的所述运算结果,以及依次输出所述多张特征图的多个图块的多个运算结果到所述外部存储模块。
优选地,按顺序读入所述一个图块在进行卷积运算所需的数据的步骤是按照一个特征图分割的多个图块从左到右,从上到下的顺序。采用以上图块读入顺序,可以将当前图块的边界数据作为下一次进行卷积运算的图块所需的数据,这样可以减少边界数据重复读取,并减少带宽量。
优选地,按顺序读入所述一个图块在进行卷积运算所需的数据的步骤是从第一个特征图的第一个图块,如果水平方向有分块,则从左到右依次读取该特征图的图块数据,然后再读取下一个特征图的图块,直到最后一个特征图;如果垂直方向有分块,再从第一个特征图的下一个垂直分块开始,依次读取。采用以上图块读入顺序,可以将当前图块的边界数据作为下一次进行卷积运算的图块所需的数据,这样可以减少边界数据重复读取,并减少带宽量;除此之外,依次处理完所有特征图中每一行卷积的数据后,即可以输出卷积结果,可以减少中间数据的存储,减少对数据输出模块中的中间结果存储模块的占用。
优选地,扩展所述一个图块的边界数据,当所述卷积核的尺寸大于1时,如果所述一个图块的边界同时是所述一个特征图的边界,那么所述一个图块的边界数据是通过添加固定值进行扩展;以及如果所述一个图块的边界在所述一个特征图的内部,那么所述一个图块的边界数据是通过读取相邻的图块的数据进行扩展。
优选地,依次提取所述一个图块和所述对应的卷积核的提取数据的步骤更包括:根据一个图块的宽度、卷积运算的步长和所述MAC运算单元的数量,决定所述提取数据的行数据的数量。采用这样的数据提取方式,可以使得MAC运算单元一次处理的数据量不局限于一行,即可以同时对多行数据进行运算。
优选地,所述行数据的数量为2的指数。因为数字芯片设计内部都是二进制的方式,每次处理的行数据量为2的指数,有助于简化数字电路的设计,减少不必要的乘法器、触发器等器件。
优选地,依次提取所述一个图块和所述对应的卷积核的提取数据的步骤更包括:改组所述提取数据,改组数据的数据量与MAC运算单元的数量相一致;当提取的每行数据量与MAC运算单元的数量相等时,则将提取的数据依次按行改组成一组改组数据;当提取的每行数据量比MAC运算单元的数量少时,将MAC运算单元的数量按照提取数据的行数据的数量进行等分,等分的每组位置从前往后填充一行提取数据,每组最后空闲的位置用0进行填充,以此形成改组数据。
对数据进行改组之后,每一行数据中多个像素设置为紧密排列的,并且设置填充值0来隔开紧密排列的多个像素,这样的数据改组方法有助于简化硬件设计,在数字芯片中可以利用位移器来取代乘法器,也可以利用填充值0来取代触发器。
本发明的另一方面,还提供一种卷积硬件加速电路,其连接于外部存储模块,所述外部存储模块用于存储多个特征图、多个卷积核和多个运算结果,其特征在于,所述卷积硬件加速电路包括:内部存储模块,连接所述外部存储模块,用于将所述多个特征图分别分割为多个图块,并缓存所述多个特征图分割的多个图块中的至少一者以及所述多个卷积核;其中:在进行分割时,分割的图块的列宽和MAC运算单元的数量相匹配,分割的图块的行高为内部存储模块可容纳的最大行数;数据提取模块,连接所述内部存储模块,用于按顺序读入一个特征图的一个图块和对应的卷积核在进行卷积运算所需的数据,以及依次提取所述一个特征图的所述一个图块和所述对应的卷积核的提取数据;MAC运算模块,连接所述数据提取模块,用于依次对所述一个特征图的所述一个图块和所述对应的卷积核的所述提取数据进行卷积运算,以依次产生所述一个特征图的所述一个图块的运算结果;以及数据输出模块,连接所述MAC运算模块,用于依次缓存所述一个特征图的所述一个图块的卷积运算过程中的中间结果,并将计算完成的卷积结果输出到外部存储模块。
优选地,所述内部存储模块包括:第一缓存区,连接所述外部存储模块和所述数据提取模块,用于将所述多个特征图分别分割为多个图块,并缓存所述多个特征图分割的多个图块中的至少一者;以及第二缓存区,连接所述外部存储模块和所述数据提取模块,用于缓存所述多个卷积核。
优选地,所述数据提取模块更用来扩展所述一个图块的边界数据,当所述多个卷积核的尺寸大于1时:如果所述一个图块的边界同时是所述一个特征图的边界,那么所述一个图块的边界数据是通过添加固定值进行扩展;以及如果所述一个图块的边界在所述一个特征图的内部,那么所述一个图块的边界数据是通过读取相邻的图块的数据进行扩展。
优选地,所述数据提取模块根据一个图块的宽度、卷积运算的步长和所述MAC运算单元的数量,决定所述提取数据的行数据的数量。
优选地,所述行数据的数量为2的指数。
优选地,所述数据提取模块按顺序读入一个特征图的一个图块和对应的卷积核在进行卷积运算所需的数据时,更包括:改组所述提取数据,改组数据的数据量与MAC运算单元的数量相一致;当提取的每行数据量与MAC运算单元的数量相等时,则将提取的数据依次按行改组成一组改组数据;当提取的每行数据量比MAC运算单元的数量少时,将MAC运算单元的数量按照提取数据的行数据的数量进行等分,等分的每组位置从前往后填充一行提取数据,每组最后空闲的位置用0进行填充,以此形成改组数据。
本发明提供的卷积硬件加速方法和卷积硬件加速电路,具有以下优点:(1)本发明中的切块方式,可以尽可能地减少垂直方向块边界数据的重复读取,且利用较小的缓存面积可支持任意大小分辨率的特征图;(2)关于内部存储模块的存储方式,水平方向上的图块的边界数据可以重复使用,避免数据重复读取,有效地减少了从外部存储模块读取的带宽;以及(3)对于步长大于1的卷积层,数据提取模块可以通过拼接方式,将多行数据的数据提取给MAC运算模块,如此提高了MAC运算模块的利用率。
附图说明
图1为卷积运算的示意图。
图2为根据本发明实施例卷积硬件加速方法的流程图。
图3为根据本发明实施例分割后的特征图的示意图。
图4为根据本发明实施例分割并且编号后的多张特征图的示意图。
图5为根据本发明实施例多组提取数据的示意图。
图6为根据本发明实施例改组数据的示意图。
图7为根据本发明实施例一个图块进行卷积运算的示意图。
图8为根据本发明实施例卷积硬件加速电路和外部存储模块的功能框图。
具体实施方式
图1为卷积运算的示意图。数字图像的色彩编码方法包括了RGB、YUV、YCbCr等。以RGB色彩编码为例,数字图像中的每一个像素可以由红色子像素、绿色子像素和蓝色子像素所组成;也就是说,若一张数字图像的分辨率或解析度是W*H平方像素,那么所述数字图像可以用C个二维矩阵来表示。举例来说,一张数字图像可以由多张特征图IN1、IN2、IN3所组成,所述数字图像的总数据量是W*H*C,于此W是特征图宽度,H是特征图高度,C是维度(或通道数)。
假设一张数字图像需要和一组卷积核(kernel)进行卷积运算,类似地,一组卷积核中的每一者可以由C个二维矩阵来表示,那么一组卷积核的总数据量是w*h*C*k,于此w是卷积核宽度,h是卷积核高度,C是维度(或通道数),k是卷积核组数。
在进行一步卷积运算时,卷积核中的元素和特征图中当前对应的元素进行矩阵的乘积(multiplication-accumulation,MAC)运算,接着卷积核依序移动一次步长(stride)来和特征图中每一步对应的元素进行矩阵的乘积运算,以此类推,直到卷积核移动到特征图的最后一个元素。值得注意的是,当卷积核移动到特征图的外部时,此时卷积核中的某些元素不能对应到特征图中的元素,所以需要扩充特征图的范围,一般是对特征图进行填充(padding),例如填充数值0,以确保卷积运算是有效的(valid)。
举例来说,假设一组输入特征图IN1、IN2、IN3的总数据量是W*H*C=8*8*3,一组卷积核KN1…KN5的总数据量是w*h*C*k=3*3*3*5,且卷积运算的步长是1,那么可以产生一组输出特征图(feature map)FM1…FM5,其总数据量是P *Q *k=6*6*5。详细来说,如果面积为3*3的卷积核KN1一次移动一个单位像素,那么卷积核KN1可以分别在面积为8*8的输入特征图IN1、IN2、IN3上移动6*6次来进行矩阵的乘积运算,以产生包括6*6个元素的输出特征图FM1;以此类推,卷积核KN2…KN5可以分别在面积为8*8的输入特征图IN1、IN2、IN3上移动6*6次来进行矩阵的乘积运算,以产生包括6*6个元素的输出特征图FM1…FM5。简言之,通过图1的卷积运算架构,可以实现卷积神经网络计算。
图2为根据本发明实施例卷积硬件加速方法的流程图。卷积硬件加速方法包括步骤S21、S22、S23和S24,上述步骤的实施方式记载于图3到图7。
步骤S21:将特征图分割为多个图块,其实施方式记载于图3。图3为根据本发明实施例分割后的特征图IN1的示意图。特征图IN1被分割为M*N个图块,于此M、N为整数且M、N≥1。在本发明中,特征图IN1的分块是根据内部存储模块来定义的,并且尽可能切成大块,如此能够尽可能提高卷积运算的效率。举例来说,假设特征图IN1是分辨率为1920*1080平方像素的全高清(Full HD)图像,那么特征图IN1可以被分割为M*N=30*18个图块,每个图块的分辨率为64*60,即1920*1080=(64*30)*(60*18),但不限于此。假设特征图IN1是分辨率为32*1080平方像素的图像,那么特征图IN1可以被分割为M*N=(32)*(2*60*18),即一次运算时,MAC可以处理两行,这样可容纳的最大行高相当于120。对于M*N个图块中的每一者,图块列宽(例如64个像素)和MAC运算单元数相匹配,并且图块行高(例如60个像素或者120个像素)是内部存储模块可容纳的最大行数。当图块行数越多,对于垂直方向的边界重复读取数据的量越少,所以能够提高卷积运算的效率。
于一实施例中,当特征图IN1的宽度小于MAC运算单元的数量时,将不对特征图的行进行分割,对列进行分割时,图块的行高是内部存储模块可容纳的最大行数。于一实施例中,当特征图IN1的宽度小于MAC运算单元的数量乘以步长时,将不对特征图的行进行分割,对列进行分割时,图块的行高是内部存储模块可容纳的最大行数。于一实施例中,当特征图IN1的宽度大于MAC运算单元的数量时,图块列宽等于MAC运算单元的数量。于一实施例中,当特征图IN1的宽度大于MAC运算单元的数量乘以步长时,图块列宽等于MAC运算单元的数量乘以步长。举例来说,当MAC运算单元的数量为64并且步长为1时,可以优先按照64个像素的倍数来分割特征图IN1,使得MAC运算单元的利用率较大,尽量避免闲置的MAC运算单元;当MAC运算单元的数量为64并且步长为2时,可以优先按照64*2=128个像素来分割特征图IN1;以此类推。
因此,当特征图尺寸比较大时,可以通过对特征图进行分块,可以用较小的内部缓存面积支持任意大小分辨率的特征图进行卷积计算。在进行分块时,每一块的列数可以与MAC运算单元的数量相匹配,图块的列宽等于MAC运算单元的数量乘以步长;行高为内部存储模块可容纳的最大行数。按照这样划分图块时,可以使得MAC运算单元的利用率较大,避免闲置MAC运算单元;除此之外,因为行高尽可能大,所以可以减少垂直方向上块边界数据的重复读取。
步骤S22:按顺序读入一个图块和对应的卷积核在进行卷积运算所需的数据,其实施方式记载于图4。图4为根据本发明实施例分割并且编号后的多张特征图IN1…INC的示意图。于本实施例中,假设一个数据包或是一个完整的数字图像是用C个二维度的特征图来表示(也就是C张特征图IN1…INC),那么特征图IN1可被分割为图块IN1_1… IN1_M*N,特征图IN2可被分割为图块IN2_1…IN2_M*N,并且特征图INC可被分割为图块INC_1…INC_M*N。
于一实施例中,对于读入一个特征图的顺序,可以按照从左到右,从上到下的顺序进行处理。举例来说,如图4所示,特征图IN1被分割为N行,一行有二个图块(也就是特征图IN1被分割为M=2列),可以从第一行最左边的图块IN1_1开始读取,接着往右边读取第一行的图块IN1_2;然后往左下边读取在第二行最左边的图块IN1_3,接着往右边读取第二行的图块IN1_4;依此类推,直到最后一个图块被读取完毕。上述读入一个特征图的顺序可以套用在所有的特征图IN1、IN2…INC。
于一实施例中,对于特征图数据,读入顺序依次为:从第一个特征图的第一个图块,如果水平方向有分块,则从左到右依次读取该特征图的图块数据,然后在读取下一个特征图的图块,直到最后一个特征图;如果垂直方向有分块,再从第一个特征图的下一个垂直分块开始,依次读取。以C维度的特征图为例进行说明,C维度上的第一个特征图的第一个图块IN1_1,如果水平方向有分块,则从左到右依次读取该特征图的数据,以特征图IN1被分割为M=2列为例,则接下来读取第二个图块IN1_2;然后再读取下一个特征图的切块,即第二个特征图的第一个图块IN2_1,接着往右读取图块IN2_2;依次类推,直到最后一个特征图的第一行的图块INC_1和INC_2。若垂直方向有分块,则再从C维度上的第一个特征图的下一个垂直分块开始,依次读取,IN1_3,IN1_4,IN2_3,IN2_4,……,以此类推,直到最后一个特征图的最后一个图块被读取完毕。采用该实施例中的数据读取方法具有以下优势:(1)可以将当前图块的边界数据作为下一次进行卷积运算的图块所需的数据,这样可以减少边界数据重复读取,并减少带宽量;(2)依次处理完所有特征图中每一行卷积的数据后,即可以输出卷积结果,可以减少中间数据的存储,减少对数据输出模块中的中间结果存储模块的占用。
值得注意的是,在进行卷积运算时,每次读取的数据数(或像素数)需要匹配卷积核的尺寸,因此当卷积核的尺寸大于1时(例如卷积核的尺寸是h*w,于此h、w>1),就需要读取多个数据(例如h*w个像素值)来和卷积核进行卷积运算。在此情况下,如果图块位于特征图的边界,可能需要扩展图块的边界数据,以确保卷积运算是有效的。
如图4所示,任一图块有四条边界(即上、下、左、右边界)。于一实施例中,如果图块的一条边界同时是特征图的边界,那么图块的边界数据是通过添加固定值来扩展的,添加的填充值例如但不限于是0。举例来说,图块IN1_2的上边界和右边界同时是特征图IN1的边界上边界和右边界,那么图块IN1_2的上边界和右边界的数据是通过添加固定值来扩展的。图块IN1_M*N的下边界和右边界同时是特征图IN1的下边界和右边界,那么图块IN1_M*N的下边界和右边界的数据是通过添加固定值来扩展的。
于一实施例中,如果图块的一条边界在特征图的内部,那么图块的边界数据是通过读取相邻的图块的数据来扩展的。举例来说,图块IN1_1的右边界在特征图IN1的内部,那么图块IN1_1的右边界数据是通过读取相邻的图块IN1_2的数据来扩展的。图块IN1_3的上边界在特征图IN1的内部,那么图块IN1_3的上边界数据是通过读取相邻的图块IN1_1的数据来扩展的。
于一实施例中,当特征图在水平方向被分割为多个图块时,可以将当前图块的边界数据作为下一次进行卷积运算的图块所需的数据,这样可以减少边界数据重复读取,并减少带宽量。举例来说,当特征图IN1在水平方向被分割为多个图块IN1_1、IN1_2时,可以将当前图块IN1_1的右边界数据作为下一个图块IN1_2被扩展时所需的数据。因为当前图块IN1_1在进行卷积运算的时候,图块IN1_1的右边界数据已经被读取过了,所以下一个图块IN1_2在进行卷积运算的时候如果需要扩展左边界数据,就不必重复读取图块IN1_1的右边界数据了。
于一实施例中,对于卷积核中的卷积系数,其读入的顺序是根据特征图IN1、IN2…INC的数据进行卷积运算的顺序来决定的,并且其存储的顺序是按照读入顺序来决定的。
步骤S23:依次提取在进行卷积运算所需的数据,其实施方式记载于图5、图6和图7。图5为根据本发明实施例多组提取数据RTV1、RTV2和RTV3的示意图。
根据步骤S21中对特征图进行分块,若特征图的宽度大于MAC运算单元的数量乘以步长时,将对特征图进行分块,分块之后的图块列宽等于MAC运算单元的数量或者MAC运算单元的数量乘以步长。在该情况下对图块中的数据进行卷积运算时,每次将处理一行数据的数据量,如图5中的RTV1所示。
当特征图的宽度小于MAC运算单元的数量乘以卷积运算的步长时,将不对图块的行进行分割,对列进行分割时,图块的行高是内部存储模块可容纳的最大行数。在该情况下对图块中的数据进行卷积运算时,每次可以处理超过一行数据的数据量。且对于卷积计算的步长超过1时,一次运算的数据量也可以超过一行数据的数据量。
具体而言,假设MAC运算单元的数量记为UN,卷积运算的步长记为STR,一个图块的分辨率记为w*h,则当UN*STR/2<w≤UN*STR时,则UN个MAC运算单元一次可以处理一行数据的数据量,如图5中的RTV1所示,所以提取的RVT1包括了第y行数据的数据量。
当UN*STR/3<w≤UN*STR/2时,则UN个MAC运算单元一次可以处理两行数据的数据量,如图中RVT2所示,所以提取的数据RVT2包括了第y行和第y+1行数据的数据量。
当UN*STR/4<w≤UN*STR/3时,则UN个MAC运算单元一次可以处理三行数据的数据量。当UN*STR/5<w≤UN*STR/4时,则UN个MAC运算单元一次可以处理四行数据的数据量,如图中RVT3所示,所以提取的数据RTV3包括了第y行、第y+1行、第y+2行和第y+3行数据的数据量。
当UN*STR/(n+1)<w≤UN*STR/n时,则UN个MAC运算单元一次可以处理n行数据的数据量。
以上为理论上每次UN个MAC运算单元一次可以处理的数据量,在实际应用中,因为数字芯片的内部设计都是二进制的方式,因此,处理的行数据量优选为2的指数。如理论计算得到每次可以处理2-3行数据,在实际应用中,则每次处理2行数据;理论计算得到每次可以处理4-7行数据,在实际应用中,则每次处理4行数据,以此类推。实际应用中处理的行数为2的指数。
总而言之,为了充分利用多个MAC运算单元的运算能力,尽量避免闲置的MAC运算单元,可以根据MAC运算单元的数量,决定每次提取的数据量。
步骤S23更包括:改组提取数据,其实施方式记载于图6。图6为根据本发明实施例改组(reorganized)数据REO的示意图。当步长为2、图块宽度w为62且MAC运算单元的数量为64时,根据上述提取数据的方式可知:UN*STR/3(64*2/3)<w(62)≤UN*STR/2(64*2/2),因此,64个MAC运算单元每次可以处理两行数据的数据量。可以对图块的两行连续的数据进行改组,再将改组数据REO输出给64个MAC运算单元来进行卷积运算。当提取的数据量比MAC运算单元的数量少时,将MAC运算单元的数量按照所处理数据的行数进行等分,中间空闲的数据用0进行补充。以上述实施例为例,将64个MAC运算单元等分为32个一组,前31个MAC单元接收数据,最后空闲的MAC运算单元接受数据为0。
也就是说,本发明可以对一个图块的L行连续的数据进行改组,再将改组数据输出给多个MAC运算单元来进行卷积运算,L是一次提取的行数据的数量,因为数字芯片的内部设计都是二进制的方式,于此L优选是2的指数如1、2、4、8等。通过对数据进行改组,可以把读取的连续数据中无效的数据剔除。
具体来说,如图6所示,对于每一个图块,第y行数据包括62个像素P00…P61,第y+1行数据包括62个像素p00…p61,因为卷积运算的步长为2,因此需要改组数据,改组数据REO数据量与MAC运算单元的数量相一致,即包括64个数据M00…M63。当提取的数据量与MAC运算单元的数量相等时,则将提取的数据依次按行改组成一组改组数据;当提取的数据量比MAC运算单元的数量少时,将MAC运算单元的数量按照提取数据的行数据的数量进行等分,每组从前往后填充一行提取数据,每组最后空闲的位置用0进行填充,以此形成改组数据。以上述实施例为例,因为要提取两行数据,将64个MAC运算单元等分为分组,即32个数据一组,前31个MAC单元接收图块中的数据,最后空闲的位置用0进行填充。第y行数据中编号为偶数的像素P00、P02…P60分别设置在改组数据REO的数据M00、M01…M30作为一单独数组,并将填充值0设置在改组数据REO的第32个数据M31;接着,第y+1行数据中编号为偶数的像素p00、p02…p60分别设置在改组数据REO的数据M32、M33…M62作为一单独数组,并将填充值0设置在改组数据REO的第64个数据M63。于不同的实施例,每个改组数据中填充值的个数会根据每行数据的像素个数的不同而不同,每个改组数据中单独数组的个数也会根据MAC运算单元的数量每次提取的数据量的不同而不同。
换一角度而言,两行连续的数据经过改组之后,每一行数据中编号为偶数的多个像素是紧密排列的,每一行数据中编号为奇数的多个像素是紧密排列的,而填充值0隔开了紧密排列的多个像素。因为数字芯片需要根据数据对应的存储地址(memory address)来进行读取和写入,并且存储地址是采用二进制的编码方式,所以当每一行数据中编号为偶数或奇数的多个像素是紧密排列的时候,表示多个像素的存储地址呈现2的指数方式排列。在此情况下,数字芯片(例如图8的MAC运算模块83和数据输出模块84)只要读取改组数据REO的第一个数据M00的存储地址,就可以通过对第一个数据M00的存储地址进行加法运算的方式来获得第二个数据M01的存储地址,接着再通过对第二个数据M01的存储地址进行加法运算的方式来获得第三个数据M02的存储地址,以此类推。再者,因为填充值0隔开了紧密排列的多个像素,所以当数字芯片(例如图8的MAC运算模块83和数据输出模块84)读到填充值0的时候,相当于读到了一个旗帜(flag),就知道要读取另一个数据M32的存储地址,接着通过加法运算的方式来获得后续的数据M33…M62的存储地址,以此类推。如此一来,本发明将每一行数据中编号为偶数的多个像素设置为紧密排列的,每一行数据中编号为奇数的多个像素设置为紧密排列的,并且设置填充值0来隔开紧密排列的多个像素,这样的数据改组方法有助于简化硬件设计,在数字芯片中可以利用位移器来取代乘法器,也可以利用填充值0来取代触发器。采用这种2的指数方式对齐有助于简化设计,减少不必要的乘法器、触发器等。
步骤S24:进行卷积运算并输出运算结果到外部存储模块,其实施方式记载于图7。图7为根据本发明实施例一个图块IN1_1进行卷积运算的示意图。假设特征图IN1包括多个图块IN1_1…IN1_M*N,多个MAC运算单元将图块IN1_1分别和多个卷积核KN1…KNk进行卷积运算,接着再将下一个图块IN1_2分别和多个卷积核KN1…KNk进行卷积运算,以此类推,然后将最后一个图块IN1_M*N分别和多个卷积核KN1…KNk进行卷积运算,如此就完成了特征图IN1的卷积运算。上述进行卷积运算的方式可以套用在所有的特征图IN1、IN2…INC。
值得注意的是,如步骤S21和图3的实施例所述,当MAC运算单元的数量为64并且步长为1时,可以优先按照64个像素的倍数来分割特征图IN1;当MAC运算单元的数量为64并且步长为2时,可以优先按照64*2=128个像素来分割特征图IN1;以此类推。64个MAC运算单元中的数据都是位于不同卷积核内的数据,对于一个大小为x*y的卷积核,每个时钟计算卷积核中的一个数据,因此,实际上需要x*y个时钟才能同时输出64个卷积结果。举例进行说明,假如图像块的分割是64*60,卷积核大小为3*3, (分别记为K(m,n),m和n的取值范围为0~2)实际读取数据需要读取边界数据(或者补pad 0),也就是在内部缓存里需要存66*62(每个像素记为P(i,j),其中i为行号,j为列号). 对于MAC为64:则第一个时刻,计算P(0,0)、P(0,2)、P(0,4)……P(0,62)、P(2,0)、P(2,2)、P(2,4)……P(2,62)这64个像素分别和K(0,0)相乘;第二个时刻,计算P(0,1)、P(0,3)、P(0,5)……P(0,63)、P(2,1)、P(2,3)、P(2,5)……P(2,63)这64个像素分别和K(0,1)相乘;第三个时刻,计算P(0,2)、P(0,4)、P(0,6)……P(0,64)、P(2,2)、P(2,4)、P(2,6)……P(2,64)这64个像素分别和K(0,2)相乘;第四个时刻,计算P(1,0)、P(1,2)、P(1,4)……P(1,62)、P(3,0)、P(3,2)、P(3,4)……P(3,62)这64个像素分别和K(2,0)相乘;……以此类推,第九个时刻,计算P(2,2)、P(2,4)、P(2,6)……P(2,64)、P(4,2)、P(4,4)、P(4,6)……P(4,64)这64个像素分别和K(2,0)相乘。所以需要3x3=9个时钟才能并行计算64个3x3。从这9个时钟可以看到,每个时钟的像素值P(i,j)在行方向都是间隔取的,且每个时钟都包含两行像素值,综上所述,这种改组方式,对于步长为2,可以把每个MAC都利用起来,MAC利用率高。
关于输出运算结果的实施方式,对于非最后一个特征图INC的卷积运算,先前的特征图IN1…IN(C-1)的运算结果都是中间结果,可以将中间结果缓存在数据输出模块中。直到最后一个特征图INC的卷积运算已经完成了,再一次输出全部的运算结果(例如图1的一组输出特征图FM1…FMk)到外部存储模块。
总而言之,为了能够实现图1的卷积神经网络计算,本发明通过图2到图7的硬件加速方法,可以提高运算的并行度和计算效率,以及减少存储器的读写带宽来节省计算功耗。
图8为根据本发明实施例卷积硬件加速电路8和外部存储模块80的功能框图。卷积硬件加速电路8可以配置在电子装置(例如电脑、手机或服务器等)的内部,用来进行图2到图7的卷积硬件加速方法;于一实施例中,卷积硬件加速电路8可以是独立的电子装置。外部存储模块80可以是配置在电子装置内部的存储器,例如静态随机存储器(SRAM)或动态随机存储器(DRAM);于一实施例中,外部存储模块80可以是独立的存储器,例如硬盘、软盘、磁带或CD等。外部存储模块80用来存储特征图IN1…INC、卷积核KN1…KNk和运算结果FM1…FMk。
在结构上,卷积硬件加速电路8包括内部存储模块81、数据提取模块82、MAC运算模块83以及数据输出模块84。在进行工作时,如何对图像进行分块是提前处理好的,将图像的分块信息通过指令方式存储在外部存储器。当图像的分块信息通过指令方式存储在外部存储器时,该卷积硬件加速电路8启动,首先读取外部存储器中的分块信息,然后按照这个分块信息进行工作。内部存储模块81连接外部存储模块80和数据提取模块82,并包括第一缓存区811和第二缓存区812。第一缓存区811用来缓存特征图IN1…INC中的至少一者,以及第二缓存区812用来缓存卷积核KN1…KNk。本领域的技术人员可以根据应用需求,决定第一缓存区811和第二缓存区812的面积大小。例如,第一缓存区811可以缓存一张特征图IN1的一个图块IN1_1的数据,且第二缓存区812可以缓存卷积核KN1…KNk,以进行图7的实施例。例如,第一缓存区811可以缓存图块IN1_1的右边界数据和图块IN1_2的数据,且第二缓存区812可以缓存卷积核KN1…KNk,以在扩充图块IN1_2的边界数据的前提下进行卷积运算。
数据提取模块82连接内部存储模块81和MAC运算模块83,用来按顺序读入一个图块和对应的卷积核在进行卷积运算所需的数据(即步骤S22和图4的实施例)。
于一实施例中,数据提取模块82更用来依次提取一个图块的提取数据和对应的卷积核的提取数据(即步骤S23和图5的实施例)。具体而言,数据提取模块82可以根据一个图块的宽度w、高度h和MAC运算单元的数量UN,决定提取数据RTV包括了至少一行数据的数据量,其中提取数据RTV可以是图5的实施例多组提取数据RTV1、RTV2和RTV3中的一者。于一实施例中,数据提取模块82更用来改组提取数据RTV,以产生改组数据REO(即图6的实施例)。
MAC运算模块83连接数据提取模块82和数据输出模块84,用来对提取数据RTV和对应的卷积核KN1…KNk进行卷积运算,或是对改组数据REO和对应的卷积核KN1…KNk进行卷积运算,以产生运算结果FM1…FMk到数据输出模块84。于一实施例中,MAC运算模块83更用来提供MAC运算单元的数量UN和步长STR给数据提取模块82;于其他实施例中,MAC运算单元的数量UN可以预先存储在数据提取模块82内部,步长STR可以由外部电子装置所提供。
数据输出模块84连接MAC运算模块83和外部存储模块80,用来缓存中间的运算结果,数据输出模块84包含中间结果存储模块,用于缓存卷积计算过程中的中间结果,直到完成卷积累加运算时,将计算完成的卷积结果输出到外部存储模块。也就是说,MAC运算模块83和数据输出模块84用来进行步骤S24和图7的实施例。
综上所述,本发明提供的卷积硬件加速方法和卷积硬件加速电路,具有以下优点:(1)本发明中的切块方式,可以尽可能地减少垂直方向块边界数据的重复读取,且利用较小的缓存面积可支持任意大小分辨率的特征图;(2)关于内部存储模块的存储方式,水平方向上的图块的边界数据可以重复使用,避免数据重复读取,有效地减少了从外部存储模块读取的带宽;以及(3)对于步长大于1的卷积层,数据提取模块可以通过拼接方式,将多行数据的数据提取给MAC运算模块,如此提高了MAC运算模块的利用率。
以上所述仅是本发明的优选实施例而已,并非对本发明做任何形式上的限制,虽然本发明已以优选实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案的范围内,当可利用上述揭示的技术内容作出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案的内容,依据本实用发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。
Claims (10)
1.一种卷积硬件加速方法,其特征在于,包括以下步骤:
将特征图分割为多个图块;在进行分割时,分割的图块的列宽和MAC运算单元的数量相匹配,分割的图块的行高为内部存储模块可容纳的最大行数;当特征图的宽度小于MAC运算单元的数量乘以步长时,将不对特征图的行进行分割;当特征图的宽度大于MAC运算单元的数量乘以步长时,对特征图进行分割的图块的列宽为MAC运算单元的数量乘以步长;
按顺序读入一个图块和对应的卷积核在进行卷积运算所需的数据;
依次提取所述一个图块和所述对应的卷积核的提取数据,其中,根据一个图块的宽度、卷积运算的步长和所述MAC运算单元的数量,决定所述提取数据的行数据的数量;改组所述提取数据,改组数据的数据量与MAC运算单元的数量相一致;当提取的每行数据量与MAC运算单元的数量相等时,则将提取的数据依次按行改组成一组改组数据;当提取的每行数据量比MAC运算单元的数量少时,将MAC运算单元的数量按照提取数据的行数据的数量进行等分,等分的每组位置从前往后填充一行提取数据,每组最后空闲的位置用0进行填充,以此形成改组数据;以及
进行卷积运算并输出运算结果。
2.根据权利要求1中所述的卷积硬件加速方法,其特征在于:所述卷积硬件加速方法用于一电子装置,更包括以下步骤:
从所述电子装置的外部存储模块读取并缓存多张特征图中的至少一者以及多个卷积核;以及
依次缓存所述特征图的所述一个图块的所述运算结果,以及依次输出所述多张特征图的多个图块的多个运算结果到所述外部存储模块。
3.根据权利要求1中所述的卷积硬件加速方法,其特征在于,按顺序读入所述一个图块在进行卷积运算所需的数据的步骤是按照一个特征图分割的多个图块从左到右,从上到下的顺序。
4.根据权利要求1中所述的卷积硬件加速方法,其特征在于,按顺序读入所述一个图块在进行卷积运算所需的数据的步骤是从第一个特征图的第一个图块,如果水平方向有分块,则从左到右依次读取该特征图的图块数据,然后再读取下一个特征图的图块,直到最后一个特征图;如果垂直方向有分块,再从第一个特征图的下一个垂直分块开始,依次读取。
5.根据权利要求1中所述的卷积硬件加速方法,其特征在于,所述卷积硬件加速方法更包括:
扩展所述图块的边界数据,当所述卷积核的尺寸大于1时,如果所述图块的边界同时是所述特征图的边界,那么所述图块的边界数据是通过添加固定值进行扩展;以及如果所述图块的边界在所述特征图的内部,那么所述图块的边界数据是通过读取相邻的图块的数据进行扩展。
6.根据权利要求1中所述的卷积硬件加速方法,其特征在于,所述行数据的数量为2的指数。
7.一种卷积硬件加速电路,其连接于外部存储模块,所述外部存储模块用于存储多个特征图、多个卷积核和多个运算结果,其特征在于,所述卷积硬件加速电路包括:
内部存储模块,连接所述外部存储模块,用于将所述多个特征图分别分割为多个图块,并缓存所述多个特征图分割的多个图块中的至少一者以及所述多个卷积核;其中:在进行分割时,分割的图块的列宽和MAC运算单元的数量相匹配,分割的图块的行高为内部存储模块可容纳的最大行数;当特征图的宽度小于MAC运算单元的数量乘以步长时,将不对特征图的行进行分割;当特征图的宽度大于MAC运算单元的数量乘以步长时,对特征图进行分割的图块的列宽为MAC运算单元的数量乘以步长;
数据提取模块,连接所述内部存储模块,用于按顺序读入一个特征图的一个图块和对应的卷积核在进行卷积运算所需的数据,以及依次提取所述一个特征图的所述一个图块和所述对应的卷积核的提取数据;所述数据提取模块根据一个图块的宽度、卷积运算的步长和所述MAC运算单元的数量,决定所述提取数据的行数据的数量;
MAC运算模块,连接所述数据提取模块,用于依次对所述一个特征图的所述一个图块和所述对应的卷积核的所述提取数据进行卷积运算,以依次产生所述一个特征图的所述一个图块的运算结果;改组所述提取数据,改组数据的数据量与MAC运算单元的数量相一致;当提取的每行数据量与MAC运算单元的数量相等时,则将提取的数据依次按行改组成一组改组数据;当提取的每行数据量比MAC运算单元的数量少时,将MAC运算单元的数量按照提取数据的行数据的数量进行等分,等分的每组位置从前往后填充一行提取数据,每组最后空闲的位置用0进行填充,以此形成改组数据;以及
数据输出模块,连接所述MAC运算模块,用于依次缓存所述一个特征图的所述一个图块的卷积运算过程中的中间结果,并将计算完成的卷积结果输出到外部存储模块。
8.根据权利要求7中所述的卷积硬件加速电路,其特征在于,所述内部存储模块包括:
第一缓存区,连接所述外部存储模块和所述数据提取模块,用于将所述多个特征图分别分割为多个图块,并缓存所述多个特征图分割的多个图块中的至少一者;以及
第二缓存区,连接所述外部存储模块和所述数据提取模块,用于缓存所述多个卷积核。
9.根据权利要求7中所述的卷积硬件加速电路,其特征在于,所述数据提取模块更用来扩展所述图块的边界数据,当所述多个卷积核的尺寸大于1时:如果所述图块的边界同时是所述特征图的边界,那么所述图块的边界数据是通过添加固定值进行扩展;以及如果所述图块的边界在所述特征图的内部,那么所述图块的边界数据是通过读取相邻的图块的数据进行扩展。
10.根据权利要求7中所述的卷积硬件加速电路,其特征在于,所述行数据的数量为2的指数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210131239.7A CN114169514B (zh) | 2022-02-14 | 2022-02-14 | 一种卷积硬件加速方法及卷积硬件加速电路 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210131239.7A CN114169514B (zh) | 2022-02-14 | 2022-02-14 | 一种卷积硬件加速方法及卷积硬件加速电路 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114169514A CN114169514A (zh) | 2022-03-11 |
CN114169514B true CN114169514B (zh) | 2022-05-17 |
Family
ID=80489804
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210131239.7A Active CN114169514B (zh) | 2022-02-14 | 2022-02-14 | 一种卷积硬件加速方法及卷积硬件加速电路 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114169514B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114429203B (zh) * | 2022-04-01 | 2022-07-01 | 浙江芯昇电子技术有限公司 | 一种卷积计算方法、卷积计算装置及其应用 |
CN114638352B (zh) * | 2022-05-18 | 2023-05-30 | 成都登临科技有限公司 | 一种处理器架构、处理器及电子设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107657581A (zh) * | 2017-09-28 | 2018-02-02 | 中国人民解放军国防科技大学 | 一种卷积神经网络cnn硬件加速器及加速方法 |
CN109886400A (zh) * | 2019-02-19 | 2019-06-14 | 合肥工业大学 | 基于卷积核拆分的卷积神经网络硬件加速器系统及其计算方法 |
CN110135554A (zh) * | 2019-03-25 | 2019-08-16 | 电子科技大学 | 一种基于fpga的卷积神经网络硬件加速架构 |
EP3674982A1 (en) * | 2018-12-27 | 2020-07-01 | IMEC vzw | Hardware accelerator architecture for convolutional neural network |
CN111626405A (zh) * | 2020-05-15 | 2020-09-04 | Tcl华星光电技术有限公司 | 一种cnn加速方法、加速装置及计算机可读存储介质 |
CN112200300A (zh) * | 2020-09-15 | 2021-01-08 | 厦门星宸科技有限公司 | 卷积神经网络运算方法及装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109918281B (zh) * | 2019-03-12 | 2022-07-12 | 中国人民解放军国防科技大学 | 多带宽目标的加速器效能测试方法 |
CN111178522B (zh) * | 2020-04-13 | 2020-07-10 | 杭州雄迈集成电路技术股份有限公司 | 一种软硬件协同加速方法、系统及计算机可读存储介质 |
CN112465110B (zh) * | 2020-11-16 | 2022-09-13 | 中国电子科技集团公司第五十二研究所 | 一种卷积神经网络计算优化的硬件加速装置 |
-
2022
- 2022-02-14 CN CN202210131239.7A patent/CN114169514B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107657581A (zh) * | 2017-09-28 | 2018-02-02 | 中国人民解放军国防科技大学 | 一种卷积神经网络cnn硬件加速器及加速方法 |
EP3674982A1 (en) * | 2018-12-27 | 2020-07-01 | IMEC vzw | Hardware accelerator architecture for convolutional neural network |
CN109886400A (zh) * | 2019-02-19 | 2019-06-14 | 合肥工业大学 | 基于卷积核拆分的卷积神经网络硬件加速器系统及其计算方法 |
CN110135554A (zh) * | 2019-03-25 | 2019-08-16 | 电子科技大学 | 一种基于fpga的卷积神经网络硬件加速架构 |
CN111626405A (zh) * | 2020-05-15 | 2020-09-04 | Tcl华星光电技术有限公司 | 一种cnn加速方法、加速装置及计算机可读存储介质 |
CN112200300A (zh) * | 2020-09-15 | 2021-01-08 | 厦门星宸科技有限公司 | 卷积神经网络运算方法及装置 |
Non-Patent Citations (3)
Title |
---|
In Search of the Performance- and Energy-Efficient CNN Accelerators;Stanislav Sedukhin et.al;《2021 IEEE Symposium in Low-Power and High-Speed Chips (COOL CHIPS)》;IEEE;20210429;第1-6页 * |
基于FPGA的卷积神经网络加速器关键技术研究与设计;马佳利;《中国优秀硕士学位论文全文数据库 信息科技辑》;20210315;第I135-224页 * |
基于并行存储技术的卷积神经网络加速器;谭弘兵;《中国优秀硕士学位论文全文数据库 信息科技辑》;20200215;摘要,第28-43页 * |
Also Published As
Publication number | Publication date |
---|---|
CN114169514A (zh) | 2022-03-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114169514B (zh) | 一种卷积硬件加速方法及卷积硬件加速电路 | |
US10140123B2 (en) | SIMD processing lanes storing input pixel operand data in local register file for thread execution of image processing operations | |
US6266733B1 (en) | Two-level mini-block storage system for volume data sets | |
CN113039541A (zh) | 矩阵的空间局部变换 | |
US20120113133A1 (en) | System, device, and method for multiplying multi-dimensional data arrays | |
KR101522985B1 (ko) | 영상처리 장치 및 방법 | |
CN110163338B (zh) | 具有运算阵列的芯片运算方法、装置、终端及芯片 | |
US8320690B2 (en) | System, data structure, and method for simultaneously retrieving multi-dimensional data with zero contention | |
CN114565501B (zh) | 用于卷积运算的数据加载方法及其装置 | |
US10402196B2 (en) | Multi-dimensional sliding window operation for a vector processor, including dividing a filter into a plurality of patterns for selecting data elements from a plurality of input registers and performing calculations in parallel using groups of the data elements and coefficients | |
WO2022110386A1 (zh) | 数据处理方法及人工智能处理器 | |
EP4227886A1 (en) | Matrix operation method and apparatus for image data, device, and storage medium | |
EP4181024A1 (en) | Dilated convolution acceleration calculation method and apparatus | |
CN110647978B (zh) | 在卷积神经网络中提取卷积窗的系统和方法 | |
CN114219699B (zh) | 匹配代价处理方法及电路和代价聚合处理方法 | |
CN112712457B (zh) | 数据处理方法以及人工智能处理器 | |
CN109447239B (zh) | 一种基于arm的嵌入式卷积神经网络加速方法 | |
EP0497493A2 (en) | Signal processing system having reduced memory space | |
US8473679B2 (en) | System, data structure, and method for collapsing multi-dimensional data | |
CN112132914A (zh) | 一种图像尺度空间建立方法及图像处理芯片 | |
CN112905526B (zh) | 一种多种类型卷积的fpga实现方法 | |
US9230305B2 (en) | Summed area computation using ripmap of partial sums | |
CN112241509B (zh) | 图形处理器及其加速方法 | |
US20230070730A1 (en) | Word based channels last ordering in memory | |
WO2022000454A1 (zh) | 图像处理方法、集成电路、装置、可移动平台及存储介质 |
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 |