CN112395092B - 数据处理方法及人工智能处理器 - Google Patents
数据处理方法及人工智能处理器 Download PDFInfo
- Publication number
- CN112395092B CN112395092B CN202011381294.9A CN202011381294A CN112395092B CN 112395092 B CN112395092 B CN 112395092B CN 202011381294 A CN202011381294 A CN 202011381294A CN 112395092 B CN112395092 B CN 112395092B
- Authority
- CN
- China
- Prior art keywords
- weight
- data
- pixel data
- storage
- convolution
- 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- 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
-
- 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)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Image Processing (AREA)
Abstract
本公开涉及数据处理方法及人工智能处理器,所述方法包括根据预设的像素读取位宽,从存储单元读取第一像素数据;在k个卷积核的第Ky行的第T次运算时,根据预设的权重读取位宽,从存储单元读取第一权重数据,第一权重数据包括k个卷积核的第m个通道、第Ky行、卷积核位置T处的权重数据;根据卷积核的步长Sx,从第一像素数据中选取与卷积核位置T对应的a个像素数据作为第二像素数据;在T>1时,针对MAC阵列中的第q列MAC,将第二像素数据与第一权重数据中的第q个权重数据相乘,并与第T‑1次运算的结果相加,得到第q列MAC第T次运算的a个第一卷积运算结果。根据本公开实施例的数据处理方法能够有效提高卷积运算效率。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及一种数据处理方法及人工智能处理器。
背景技术
神经形态芯片是依托于类脑计算,实现脉冲神经网络等具有生物可解释性类脑算法的重要平台。其中,卷积运算是基于众核架构的神经形态芯片实现人工神经网络的重要逻辑运算之一。
如何基于神经形态芯片实现高效地卷积运算,是提升神经形态芯片运算效率的关键。
发明内容
有鉴于此,本公开提出了一种数据处理方法及人工智能处理器,以高效地实现卷积运算。
根据本公开的一方面,提供了一种数据处理方法,应用于人工智能处理器的处理核心,所述人工智能处理器包括多个处理核心,每个处理核心包括存储单元及运算单元,所述存储单元用于存储图像的像素数据及N个卷积核的权重数据;所述运算单元包括乘数累加器MAC阵列,用于根据所述像素数据及所述权重数据进行运算,其中,所述图像的尺寸为W0×H0×C0,所述卷积核的尺寸为K×K×C0,行方向的步长为Sx,W0、H0、C0、K、Sx为正整数,所述方法包括:根据预设的像素读取位宽,从所述存储单元读取第一像素数据,所述第一像素数据包括所述图像的第m个通道、第Py行的连续的M个像素数据,1≤m≤C0,1≤Py≤H0,1<M≤W0;在k个卷积核的第Ky行的第T次运算时,根据预设的权重读取位宽,从所述存储单元读取第一权重数据,所述第一权重数据包括k个卷积核的第m个通道、第Ky行、卷积核位置T处的权重数据,1<k≤N,1≤T≤K,1≤Ky≤K;根据所述卷积核的步长Sx,从所述第一像素数据中选取与卷积核位置T对应的a个像素数据作为第二像素数据,1<a<M;在T>1时,针对所述MAC阵列中的第q列MAC,将所述第二像素数据与所述第一权重数据中的第q个权重数据相乘,并与第T-1次运算的结果相加,得到所述第q列MAC第T次运算的a个第一卷积运算结果,1≤q≤k。
在一种可能的实现方式中,所述方法还包括:在T=1时,针对所述第q列MAC,将所述第二像素数据与所述第一权重数据中的第q个权重数据相乘,并与第Ky-1行的第K次运算的卷积运算结果相加,得到所述第q列MAC第1次运算的a个第一卷积运算结果,1≤q≤k。
在一种可能的实现方式中,所述方法还包括:针对所述第q列MAC,在完成所述k个卷积核的K行的运算后,得到所述第m个通道的a个第二卷积运算结果;在得到的C0个通道的卷积运算结果后,将每个卷积核的C0个通道的卷积运算结果相加,得到第q列MAC输出的a个目标卷积运算结果。
在一种可能的实现方式中,所述方法还包括:根据权重存储位宽,存储所述N个卷积核的权重数据,其中,所述权重存储位宽与所述权重读取位宽一致;所述根据权重存储位宽,存储所述N个卷积核的权重数据,包括:针对所述N个卷积核中的每个卷积核,依次按照该卷积核的行方向、列方向和通道C0的顺序,将该卷积核的权重数据纵向排列为第一权重向量;将所述N个卷积核的第一权重向量横向对齐合并为第一权重矩阵;根据所述权重存储位宽,横向存储所述第一权重矩阵中的权重数据。
在一种可能的实现方式中,所述根据权重存储位宽,横向存储所述第一权重矩阵中的权重数据,包括:在N大于所述MAC阵列的列数Q的情况下,按照每Q列纵向拆分所述第一权重矩阵,得到F个第二权重矩阵,其中,在所述第二权重矩阵的宽度小于或等于所述权重存储位宽的情况下,依次按照行方向、列方向的顺序,存储第f个第二权重矩阵中的权重数据,1≤f≤F;将第f-1个第二权重矩阵排列在第f个第二权重矩阵之前;其中,所述第二权重矩阵的宽度等于Q乘以所述权重数据的第一存储单位,所述权重数据的第一存储单位跟据所述权重数据的数据类型确定。
在一种可能的实现方式中,所述方法还包括:在第二权重矩阵的宽度大于所述权重存储位宽的情况下,针对第f个第二权重矩阵,按照每权重存储位宽纵向拆分所述第f个第二权重矩阵,得到F0个第三权重矩阵,其中,依次按照行方向、列方向的顺序,存储第f0个第三权重矩阵中的权重数据,1≤f0≤F0;将第f0-1个第三权重矩阵排列在第f0个第三权重矩阵之前。
在一种可能的实现方式中,所述方法还包括:根据像素存储位宽,存储所述图像的像素数据,其中,所述像素存储位宽与所述像素读取位宽一致;所述根据像素存储位宽,存储所述图像的像素数据,包括:针对所述图像的第m个通道、第Py行的像素数据,按照每连续的b个像素数据拆分为B个第一存储向量,B等于W0除以b的结果向上取整,1≤b≤W0;针对每个第一存储向量,按照每b字节将该第一存储向量拆分为E个第二存储向量,所述b字节小于等于所述像素存储位宽;根据所述像素存储位宽,顺序存储所述E个第二存储向量,不足权重存储位宽的地址空间补0;顺序存储所述第m个通道、第Py行的像素数据。
在一种可能的实现方式中,根据预设的权重读取位宽,从所述存储单元读取第一权重数据,包括:在T=1时,确定k个卷积核的第m个通道、第Ky行、卷积核位置T处的权重数据在目标权重矩阵中的所在行L;根据所述权重读取位宽,从所述存储单元中读取所述目标权重矩阵的第L行的权重数据,作为从所述存储单元读取的第一权重数据;在1<T≤K时,根据预设的权重读取位宽,从所述存储单元中读取所述目标权重矩阵的第L+T-1行的权重数据,作为从所述存储单元读取的第一权重数据;其中,所述目标权重矩阵包括所述第二权重矩阵或所述第三权重矩阵。
在一种可能的实现方式中,根据所述卷积核的步长Sx,从所述第一像素数据中选取与卷积核位置T对应的a个像素数据作为第二像素数据,包括:在T=1时,从所述第一像素数据中选取间隔所述步长Sx的a个像素数据作为第二像素数据,所述第二像素数据包括所述图像的第m通道、第Py行的X[0],X[Sx],X[2Sx],X[3Sx],……,X[(a-1)Sx]处的像素数据;在1<T≤K时,根据所述卷积核的膨胀率Ex,从所述第一像素数据中选取所述图像的第m通道、第Py行的X[(T-1)Ex],X[Sx+(T-1)Ex],X[2Sx+(T-1)Ex],X[3Sx+(T-1)Ex],……,X[(a-1)Sx+(T-1)Ex]处的像素数据作为第二像素数据。
在一种可能的实现方式中,在得到第q列MAC输出的a个目标卷积运算结果后,所述方法还包括:根据所述图像的第m通道、第Py行中的第X[aSx]处的像素数据对应的第一存储向量,确定所述第Py行中的第X[aSx]处的像素数据对应的第一存储向量在所述存储单元中对应第一存储起始地址;根据所述预设的像素读取位宽和所述第一存储起始地址,从所述存储单元读取第三像素数据,所述第三像素数据包括从所述第一存储起始地址开始读取的连续的M个像素数据,以便所述运算单元继续运算。
在一种可能的实现方式中,所述方法还包括:在完成所述k个卷积核与K行像素数据的卷积运算后,根据卷积核在列方向的步长Sy,确定与所述K行像素数据的第1行间隔Sy-1行的首个像素数据的第二存储起始地址;根据所述预设的像素读取位宽和所述第二存储起始地址,从所述存储单元读取第四像素数据,所述第四像素数据包括从所述第二存储起始地址开始读取的连续的M个像素数据,以便所述运算单元继续运算。
在一种可能的实现方式中,所述乘数累加器MAC阵列包括基于纵横式交换crossbar矩阵结构的阵列;所述运算单元还包括至少一个缓存模块,所述缓存模块用于根据预设的像素读取位宽从所述存储单元中读取像素数据,以及根据预设的权重读取位宽从所述存储单元中读取权重数据。
根据本公开的另一方面,提供了一种人工智能处理器,所述人工智能处理器包括多个处理核心,每个处理核心包括存储单元及运算单元,所述存储单元用于存储图像的像素数据及N个卷积核的权重数据;所述运算单元包括乘数累加器MAC阵列,用于根据所述像素数据及所述权重数据进行运算,其中,所述处理核心通过任一项所述的数据处理方法执行卷积运算。
本公开实施例中,通过读取第一像素数据和第一权重数据,根据卷积核的步长Sx,从第一像素数据中选取与卷积核位置T对应的a个像素数据作为第二像素数据,针对MAC阵列中的第q列MAC,将第二像素数据与第一权重数据中的第q个权重数据相乘,并与第T-1次运算的结果相加,得到第q列MAC第T次运算的a个第一卷积运算结果,能够在每次运算时实现多个像素数据与对应多个卷积核的权重数据之间的多点并行卷积运算,从而可以提高卷积运算效率,实现提升人工智能处理器的运行效率。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出根据本公开实施例的数据处理方法的流程图;
图2示出根据本公开实施例的一种像素数据的存储示意图;
图3示出根据本公开实施例的一种N个卷积核的示意图;
图4a示出根据本公开实施例的一种第一权重向量的示意图;
图4b示出根据本公开实施例的一种第一权重矩阵的示意图;
图5示出根据本公开实施例的一种权重数据的存储示意图;
图6示出根据本公开实施例的一种第二权重矩阵的拆分示意图;
图7示出根据本公开实施例的一种MAC阵列的结构示意图;
图8a示出根据本公开实施例的一种人工智能处理器的框图;
图8b示出根据本公开实施例的一种处理核心的框图;
图9a示出根据本公开实施例的一种选取像素数据的示意图;
图9b示出根据本公开实施例的又一种选取像素数据的示意图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
在本公开实施例中,人工智能处理器可以为一种基于众核架构的神经形态芯片。基于该人工智能处理器可以实现各种人工智能算法,该人工智能处理器可以包括多个处理核心,每个处理核心可以包括存储单元及运算单元。其中,存储单元可以用于存储待运算的数据,运算单元可以用于执行逻辑运算和算术运算。本公开对人工智能处理器的具体类型不做限制。
可以知晓的是,在人工智能领域,尤其是图像处理领域,卷积运算占据了总计算量的较大部分,并且随着卷积神经网络的深度和/或广度的增加,卷积运算的运算效率可能会对人工智能处理器的运行效率产生较大影响,所以提升卷积运算的效率,可以在一定程度上提升人工智能处理器的运行效率。
目前基于众核结构的神经形态芯片在实现卷积运算时,一般是通过将输入图像的多个输入通道展开成一维向量形式,逐个像素数据与对应权重数据进行乘数累加计算。由于目前的神经形态芯片中乘数累加器MAC的结构限制,所以每次运算时只能执行单个像素数据与对应多个卷积核的权重数据的乘积,累加后输出的卷积运算结果。
基于此,本公开实施例中的运算单元中可以包括乘数累加器MAC阵列,该MAC阵列可以包括基于纵横式交换crossbar矩阵结构的阵列。在一种可能的实现方式中,该MAC阵列可以包括A行×Q列的MAC。其中A和Q的具体数值可以根据实际需求设定,考虑到卷积核数量N通常是2的幂次方,MAC阵列例如可以采用4×32的MAC阵列等。对于运算单元中MAC阵列的结构,本公开实施例不做限制。基于本公开实施例中的MAC阵列,可以实现多个像素数据与对应多个卷积核的权重数据之间的并行卷积运算,从而提高卷积运算效率。
在一种可能的实现方式中,为实现像素数据与权重数据的卷积运算,每个处理核心中的存储单元可以用于存储图像的像素数据及N个卷积核的权重数据。运算单元可以包括乘数累加器MAC阵列,用于根据像素数据及权重数据进行运算,其中,图像的尺寸可以为宽度W0×高度H0×通道数C0,卷积核的尺寸可以为宽度K×高度K×通道数C0,行方向的步长可以为Sx,W0、H0、C0、K、Sx为正整数。可以理解的是,本公开实施例中的像素数据和权重数据可以是待进行卷积运算的数据。对于像素数据和权重数据的尺寸和数量,本公开实施例不做限制。
图1示出根据本公开实施例的数据处理方法的流程图,如图1所示,该数据处理方法,包括:
步骤11:根据预设的像素读取位宽,从存储单元读取第一像素数据,第一像素数据包括图像的第m个通道、第Py行的连续的M个像素数据,1≤m≤C0,1≤Py≤H0,1<M≤W0;
步骤12:在k个卷积核的第Ky行的第T次运算时,根据预设的权重读取位宽,从存储单元读取第一权重数据,第一权重数据包括k个卷积核的第m个通道、第Ky行、卷积核位置T处的权重数据,1<k≤N,1≤T≤K,1≤Ky≤K;
步骤13:根据卷积核的步长Sx,从第一像素数据中选取与卷积核位置T对应的a个像素数据作为第二像素数据,1<a<M;
步骤14:在T>1时,针对MAC阵列中的第q列MAC,将第二像素数据与第一权重数据中的第q个权重数据相乘,并与第T-1次运算的结果相加,得到第q列MAC第T次运算的a个第一卷积运算结果,1≤q≤k。
在一种可能的实现方式中,本公开实施例中的数据处理方法可以应用于人工智能处理器中。
在一种可能的实现方式中,在进行步骤11前,还可以通过获取原语参数,获取执行卷积运算所需要的参数,原语参数可以包括用于进行卷积运算所需要的数据,例如,原语参数可以包括:图像尺寸W0×H0×C0、卷积核尺寸K×K×C0、卷积核数量N、行方向的步长Sx、列方向的步长Sy、膨胀率Ex、填充参数padding、偏置参数Bias等参数,对于原语参数的具体形式,本公开实施例不做限制。
在本公开实施例中,通过读取第一像素数据和第一权重数据,根据卷积核的步长Sx,从第一像素数据中选取与卷积核位置T对应的a个像素数据作为第二像素数据,针对MAC阵列中的第q列MAC,将第二像素数据与第一权重数据中的第q个权重数据相乘,并与第T-1次运算的结果相加,得到第q列MAC第T次运算的a个第一卷积运算结果,能够在每次运算时实现多个像素数据与对应多个卷积核的权重数据之间的多点并行卷积运算,从而可以提高卷积运算效率,实现提升人工智能处理器的运行效率。
在一种可能的实现方式中,在执行步骤11前,所述数据处理方法还可以包括:根据像素存储位宽,存储图像的像素数据,其中,像素存储位宽与像素读取位宽一致,以便于在步骤11中,根据预设的像素读取位宽,从存储单元读取第一像素数据。
在一种可能的实现方式中,根据像素存储位宽,存储图像的像素数据,可以包括:针对图像的第m个通道、第Py行的像素数据,按照每连续的b个像素数据拆分为B个第一存储向量,B等于W0除以b的结果向上取整,1≤b≤W0;针对每个第一存储向量,按照每b字节将该第一存储向量拆分为E个第二存储向量,b字节小于等于像素存储位宽;根据像素存储位宽,顺序存储E个第二存储向量,不足权重存储位宽的地址空间补0;顺序存储第m个通道、第Py行的像素数据。
举例来说,假设图像X的尺寸W0×H0×C0=138×127×3,即,图像X有3个通道,每个通道包含138×127个像素数据。假设b为16,像素存储位宽为32字节。针对图像的第一个通道、第一行的像素数据,按照每连续的16个像素数据拆分为B个第一存储向量,B=138/16向上取整为9;假设每个像素数据占1字节,则针对每个第一存储向量,按照每16字节可以将第一存储向量拆分为9个第二存储向量,即E=9;按照像素存储位宽32B,顺序存储9个第二存储向量,由于第9个第二存储向量包含10个像素数据,即第9个第二存储向量宽度为10B,不足32B,则不足权重存储位宽的第二存储向量在存储单元中地址空间补0,此时相当于存储完图像第一个通道、第一行的像素数据。
在一种可能的实现方式中,在顺序存储完第一个通道、第一行的像素数据后,再存储第一个通道、第二行的像素数据,至完成第一个通道的所有行的像素数据存储后,再存储第二个通道的所有行的像素数据,至完成所有通道的像素数据的存储。
可以理解的是,拆分得到的第二存储向量的数量E与像素数据的第二存储单位相关,像素数据的第二存储单位根据像素数据的数据类型确定。例如,若像素数据的第二存储单位为2字节,则针对每个第一存储向量,按照每16字节可以是将第一存储向量拆分为8个第二存储向量。
在一种可能的实现方式中,数据类型可是包括三值(-1、0、1)、int8、uit8等多精度的数据类型,本公开实施例对于像素数据的数据类型不做限制。
在一种可能的实现方式中,b的具体数值可以根据实际需求设定,在一些情况下,像素数据可以是16的倍数,则b可以设置为16的倍数,例如,16或32等,对此本公开实施例不做限制。其中,b字节小于等于像素存储位宽,以便于在存储单元中对齐存储像素数据。
在一种可能的实现方式中,像素存储位宽可以是根据实际需求设定的像素数据在存储单元中的存储宽度,为了便于像素数据的存储,像素存储位宽可以是16的倍数,例如,可以是16B或32B或64B等,对此本公开实施例不做限制。为了便于从存储单元中读取像素数据,像素存储位宽可以与像素读取位宽一致。
图2示出根据本公开实施例的一种像素数据的存储示意图。其中,Px代表图像X的第Px列,Py代表图像X的第Py行,RGB代表图像的红绿蓝三个通道。如图2所示,第一行16B存储空间,存储了图像X的R通道的第1行第0至15个像素数据,即X[0][0:15],依次类推,X[0][Px-1;0]代表存储完第1行的像素数据,该行像素数据在存储空间中不满16B的地址空间补0,在存储完第1行像素数据后存储第2行像素数据。
在本公开实施例中,通过将像素数据拆分为第一存储向量、第二存储向量,可以提高像素数据的存储效率,便于从存储单元中读取与权重数据对应的像素数据。
在一种可能的实现方式中,在执行步骤11前,所述数据处理方法还可以包括:根据权重存储位宽,存储N个卷积核的权重数据。其中,权重存储位宽与权重读取位宽一致,以便于在步骤12中,根据预设的权重读取位宽,从存储单元读取第一权重数据。
在一种可能的实现方式中,根据权重存储位宽,存储N个卷积核的权重数据,可以包括:针对N个卷积核中的每个卷积核,依次按照该卷积核的行方向、列方向和通道C0的顺序,将该卷积核的权重数据纵向排列为第一权重向量;将N个卷积核的第一权重向量横向对齐合并为第一权重矩阵;根据权重存储位宽,横向存储第一权重矩阵中的权重数据。
图3示出根据本公开实施例的一种N个卷积核的示意图。图4a示出根据本公开实施例的一种第一权重向量的示意图。图4b示出根据本公开实施例的一种第一权重矩阵的示意图。举例来说,如图3所示,针对N个K×K×C0=3×3×3的卷积核,将卷积核1按照行方向、列方向和通道C0的顺序,可以纵向排列为如图4a所示的第一权重向量,其他卷积核对应的第一权重向量依次类推,不再赘述;将该N个卷积核对应的第一权重向量横向对齐合并为如图4b所示的第一权重矩阵,再根据权重存储位宽,存储第一权重矩阵,从而实现权重数据的存储。
在本公开实施例中,通过将N个卷积核的权重数据处理为第一权重矩阵,再根据权重存储位宽存储第一权重矩阵,可以实现权重数据的顺序存储,提高权重数据的存储效率。
在一种可能的实现方式中,根据权重存储位宽,横向存储第一权重矩阵中的权重数据,可以包括:在N大于所述MAC阵列的列数Q的情况下,按照每Q列纵向拆分第一权重矩阵,得到F个第二权重矩阵,其中,表示向上取整,也即F等于(N/Q)的向上取整值;在第二权重矩阵的宽度小于或等于权重存储位宽的情况下,依次按照行方向、列方向的顺序,存储第f个第二权重矩阵中的权重数据,1≤f≤F,不足权重存储位宽的地址空间补0;将第f-1个第二权重矩阵排列在第f个第二权重矩阵之前;其中,第二权重矩阵的宽度等于Q乘以权重数据的第一存储单位,权重数据的第一存储单位跟据权重数据的数据类型确定。
在一种可能的实现方式中,数据类型可是包括三值(-1,0,1)、int8、uit8等多精度的数据类型,本公开实施例对于权重数据的数据类型不做限制。
举例来说,假设权重存储位宽为32字节B,64个卷积核,MAC阵列的列数为32,权重数据的存储单位为2bit,则F=64÷32=2,即第一权重矩阵拆分为2个第二权重矩阵;第二权重矩阵的宽度2bit×32=64bit<权重存储位宽32B,可以依次按照行方向、列方向的顺序,存储该2个第二权重矩阵中的权重数据,将第1个第二权重矩阵排列在第2个第二权重矩阵之前。可以理解为,先按照行方向、列方向存储第一个第二权重矩阵中的权重数据,再按照行方向、列方向存储第二个第二权重矩阵中的权重数据,其中,第二权重矩阵的每行权重数据在存储单元中不足权重存储位宽的地址空间补0,补0后相当于存储完第二权重矩阵中的一行权重数据,在存储完当前行的权重数据后,依次存储下一行的权重数据。
在一种可能的实现方式中,在第二权重矩阵的宽度大于权重存储位宽的情况下,针对第f个第二权重矩阵,按照每权重存储位宽纵向拆分第f个第二权重矩阵,得到F0个第三权重矩阵,其中,也即F0等于(第二权重矩阵的宽度/权重存储位宽)的向上取整值;依次按照行方向、列方向的顺序,存储第f0个第三权重矩阵中的权重数据,1≤f0≤F0;将第f0-1个第三权重矩阵排列在第f0个第三权重矩阵之前。
举例来说,假设权重存储位宽为32B,64个卷积核,MAC阵列的列数为32,权重数据的存储单位为2B,则F=64÷32=2,即第一权重矩阵拆分为2个第二权重矩阵;第二权重矩阵的宽度2B×32=64B>权重存储位宽32B,针对每个第二权重矩阵,可以按照每32B纵向拆分第二权重矩阵得到2个第三权重矩阵,相当于将第一权重矩阵按照每32B纵向拆分为4个第三权重矩阵,按照行方向、列方向的顺序,存储第三权重矩阵中的权重数据。
在一些情况下,卷积核数量N还可能存在小于等于MAC阵列的列数Q的情况,则在一种可能的实现方式中,根据权重存储位宽,横向存储第一权重矩阵中的权重数据,还可以包括:在N小于等于MAC阵列的列数Q,且第一权重矩阵的宽度大于权重存储位宽的情况下,按照每权重存储位宽纵向拆分第一权重矩阵,得到F1个第四权重矩阵;依次按照行方向、列方向的顺序,存储第f1个第四权重矩阵中的权重数据,1≤f1≤F1;将第f1-1个第四权重矩阵排列在第f1个第四权重矩阵之前;其中,第一权重矩阵的宽度等于N乘以权重数据的第一存储单位。
举例来说,假设权重存储位宽为32B,16个卷积核,MAC阵列的列数为32B,权重数据的存储单位为4B,则卷积核数量小于MAC阵列的列数,而第一权重矩阵的宽度16×4B=64B>权重存储位宽32B,可以按照每32B纵向拆分第一权重矩阵得到2个第四权重矩阵,再依次按照行方向、列方向的顺序,存储2个第四权重矩阵,将第1个第四权重矩阵排列再第2个第四权重矩阵之前。
在一种可能的实现方式中,还可能存在N小于等于MAC阵列的列数Q,且第一权重矩阵的宽度小于等于权重存储位宽的情况,在该情况下,直接按照行方向、列方向的顺序,存储第一权重矩阵中的权重数据,每行权重数据在存储单元中不足权重存储位宽的地址空间补0。
图5示出根据本公开实施例的一种权重数据的存储示意图。其中,Kx代表卷积核的第Kx列,Ky代表卷积核的第Ky行,RGB代表对应于图像的红绿蓝通道的卷积核三个通道,F0代表第1个目标权重矩阵,F1代表第2个目标权重矩阵,依次类推。如图5所示,“R通道_F0”,代表存储的是卷积核第一个通道下的第1个目标权重矩阵,其中第1个32B存储的是第1个目标权重矩阵的第一行,第2个32B存储的是第1个目标权重矩阵的第二行,依次类推,其中[0,0]代表该通道下、第一行、第一个权重数据,[Ky-1,Kx-1]代表该通道下、第Ky行、第Kx个权重数据,依次类推,将第1个目标权重矩阵F0排列在第2个目标权重矩阵F1之前,不足权重存储位宽的地址空间补0。
在一种可能的实现方式中,权重存储位宽可以根据实际需求设定的权重数据在存储单元中的存储宽度,在一些情况下,卷积层中卷积核的个数通常是16的倍数,例如,32、64、128、256等,那么可以设置权重存储位宽是16的倍数,例如,32字节、64字节等,对此本公开实施例不做限制。
在一种可能的实现方式中,权重存储位宽和权重读取位宽可以一致,以便于缓存模块在步骤12中根据预设的权重读取位宽,从存储单元读取第一权重数据。
在本公开实施例中,根据MAC阵列的列数Q、权重存储位宽存储权重数据,能够提高权重数据的存储效率,从而使得在每次运算从存储单元中顺序读取的权重数据是与像素数据对应的,以进一步提高卷积运算效率。
在一种可能的实现方式中,人工智能处理器的每个处理核心的运算单元中还可以包括至少一个缓存模块,该缓存模块可以用于根据预设的像素读取位宽从存储单元中读取像素数据,以及根据预设的权重读取位宽从存储单元中读取权重数据,则步骤11中根据预设的像素读取位宽,从存储单元读取第一像素数据,可以是通过至少一个缓存模块从存储单元读取第一像素数据,以及在步骤12中,根据预设的权重读取位宽,从存储单元读取第一权重数据,可以是通过至少一个缓存模块从存储单元读取第一权重数据。
在一种可能的实现方式中,缓存模块可以采用寄存器、双口随机存取存储器、非易失性存储器等可以实现移位取数的存储器,对此本公开实施例不做限制。
在一种可能的实现方式中,缓存模块的大小和数量可以根据实际需求设定,在本公开实施例中,缓存模块可以大于像素读取位宽和权重读取位宽,例如,若像素读取位宽为32B,则可以选用48B的寄存器,以在进行运算时保证数据的连续加载,从而保证运算的连贯性。
在一种可能的实现方式中,在确定缓存模块的大小后,可以根据实际需求采用1个或多个缓存模块,例如,若要采用48B的寄存器,该48B的寄存器可以采用3个16B的寄存器组成,还可以采用一个48B的寄存器,其中,选用多个缓存模块,可以实现缓存模块的复用,提高资源的利用率。
在一种可能的实现方式中,若缓存模块加载的数据宽度小于缓存模块的大小,则缓存模块可以加载该宽度下的数据,缓存模块中其它存储空间补0,例如,48B的寄存器,若加载的像素数据或权重数据不足16B,则加载16B的数据,缓存模块内其它存储空间补0,若加载的像素数据或权重数据不足32B,则加载32B的数据,缓存模块内其它存储空间补0。
在一种可能的实现方式中,步骤11中读取第一像素数据可以是连续的,换句话说,当缓存模块内的数据不能满足当前运算的需求时,缓存模块可以从存储单元中读取连续的像素数据,以保证运算的连贯性,例如,若采用48B的寄存器读取数据,每当寄存器内移位取完16B的数据,寄存器会从存储单元中加载下一16B的数据,从而保证运算的连贯性。
在一种可能的实现方式中,在步骤12中,根据预设的权重读取位宽,从存储单元读取第一权重数据,可以包括:
在T=1时,确定k个卷积核的第m个通道、第Ky行、卷积核位置T处的权重数据在目标权重矩阵中的所在行L;根据权重读取位宽,从存储单元中读取目标权重矩阵的第L行的权重数据,作为从存储单元读取的第一权重数据;
在1<T≤K时,根据预设的权重读取位宽,从存储单元中读取目标权重矩阵的第L+T-1行的权重数据,作为从存储单元读取的第一权重数据;
其中,目标权重矩阵可以包括第二权重矩阵或第三权重矩阵。在一种可能的实现方式中,目标权重矩阵还可以包括第一权重矩阵或第四权重矩阵。
在一种可能的实现方式中,卷积核位置T可以是指卷积核的第m个通道的第Ky行的第T个权重数据。
在一种可能的实现方式中,从存储单元中读取第二权重数据,可以是在确定所要读取的权重数据的起始地址后,即目标权重矩阵的第L行权重数据对应的存储地址,按照顺序寻址即地址累加1的方式,读取第L+T-1行的权重数据。
通过本公开实施例,能够在k个卷积核的第Ky行的第T次运算时,实现顺序读取k个卷积核的第m个通道、第Ky行、卷积核位置T处的权重数据。图6示出根据本公开实施例的一种第二权重矩阵的拆分示意图。举例来说,如图6所示,在第T=1次运算时,可以读取a1、e1等第二权重矩阵的第一行权重数据,即可以相当于读取32个卷积核第一个通道、第一行、第一个权重数据,在T=2时可以读取a2、e2等第二权重矩阵的第二行权重数据,即可以相当于读取k个卷积核第一个通道、第一行、第二个权重数据,依次类推。
在本公开实施例中,在确定m个通道、第Ky行、卷积核位置T处的权重数据在目标权重矩阵中的所在行L后,逐行读取第一权重数据,能够实现读取与像素数据对应的权重数据。
在一种可能的实现方式中,在步骤13中根据卷积核的步长Sx,从第一像素数据中选取与卷积核位置T对应的a个像素数据作为第二像素数据,包括:
在T=1时,从第一像素数据中选取间隔步长Sx的a个像素数据作为第二像素数据,第二像素数据包括图像的第m通道、第Py行的X[0],X[Sx],X[2Sx],X[3Sx],……,X[(a-1)Sx]处的像素数据;
在1<T≤K时,根据卷积核的膨胀率Ex,从第一像素数据中选取图像的第m通道、第Py行的X[(T-1)Ex],X[Sx+(T-1)Ex],X[2Sx+(T-1)Ex],X[3Sx+(T-1)Ex],……,X[(a-1)Sx+(T-1)Ex]处的像素数据作为第二像素数据。
可以理解的是,在实现卷积核与图像的卷积运算时,卷积核通常根据行方向和列方向上的移动步长进行卷积运算,其中,针对第m通道、第Py行的第一像素数据,在T=1时,从第一像素数据中选取间隔步长Sx的a个第二像素数据X[0],X[Sx],X[2Sx],X[3Sx],……,X[(a-1)Sx],相当于选取了与多个卷积核的第m通道、第Ky行、第一个权重数据对应的a个第二像素数据。
其中,在1<T≤K时,根据卷积核的膨胀率Ex,从第一像素数据中选取图像的第m通道、第Py行的X[(T-1)Ex],X[Sx+(T-1)Ex],X[2Sx+(T-1)Ex],X[3Sx+(T-1)Ex],……,X[(a-1)Sx+(T-1)Ex]处的像素数据作为第二像素数据,相当于选取了与多个卷积核的第m通道、第Ky行、第T个权重数据对应的a个第二像素数据,例如,T=2时,第二像素数据可以包括X[Ex],X[Sx+Ex],X[2Sx+Ex],X[3Sx+Ex],……,X[(a-1)Sx+Ex],T=3时,第二像素数据可以包括X[2Ex],X[Sx+2Ex],X[2Sx+2Ex],X[3Sx+2Ex],……,X[(a-1)Sx+2Ex],依次类推。
在一种可能的实现方式中,卷积核的膨胀率Ex,可以根据实际卷及运算的需求设定,当膨胀率Ex=1时,代表执行的是普通卷积运算,当膨胀率Ex>1时,代表执行的是膨胀卷积运算。
在一种可能的实现方式中,a的值可以小于等于MAC阵列的行数A,例如,4×32的MAC阵列,a可以是取[1,4]中的整数。
在本公开实施例中,根据步长Sx和膨胀率Ex从第一像素数据中选取a个第二像素数据,能够实现选取的多个像素数据是与多个卷积核的权重数据对应的,从而准确实现像素数据与权重数据的卷积运算,并且还可以支持膨胀卷积运算。
在一种可能的实现方式中,通过缓存模块可以将步骤12读取的第一权重数据和步骤13选取的第二权重数据输入到MAC阵列中,进而通过步骤14实现第二像素数据与对应权重数据的乘数累加,也即,实现了权重数据与像素数据的卷积运算。
图7示出根据本公开实施例的一种MAC阵列的结构示意图。为便于理解步骤14中得到第一卷积运算结果的过程,以如图7所示的一种MAC阵列示意图为例进行说明,如图7所示,其中每个圆圈包含4个MAC,则a可以为4,共有5列MAC,则k可以为5。
则在T=2时,将选取的第二像素数据X[Ex],X[Sx+Ex],X[2Sx+Ex],X[3Sx+Ex]从MAC阵列的行方向输入到MAC阵列中;将5个卷积核的第m个通道、第Ky行、卷积核位置2处的第一权重数据,分别从列方向输入到MAC阵列中,针对MAC阵列中的第q列MAC,可以分别得到4个像素数据与第q个第一权重数据的乘积。以此类推,在T=1时,可以得到第二像素数据(X[0],X[Sx],X[2Sx],X[3Sx]),与第一权重数据(5个卷积核的第m个通道、第Ky行、卷积核位置1处的权重数据)的乘积。
那么针对每列MAC,在T=2时,将T=2次运算得到4个乘积与T=1次运算得到4个乘积分别累加得到第T=2次运算结果,以此类推,在第T次运算时,将第T次运算得到乘积与T-1次运算结果进行循环累加,得到第q列MAC第T次运算的a个第一卷积运算结果。
在本公开实施例中,能够在每次运算时实现多个像素数据与对应多个卷积核的权重数据之间的多点并行卷积运算,从而可以高效的实现卷积运算,提升人工智能处理器的运行效率。
在本公开实施例中,在完成第T=K次运算时,针对第q列MAC,相当于完成该列对应卷积核的第m通道、第Ky行权重数据与对应像素数据的a个第一卷积运算结果。可以知晓的是,在实现卷积核与图像的卷积运算,通常要计算每个通道的每行权重数据与像素数据的乘积。
在一种可能的实现方式中,根据本公开实施例的数据处理方法还可以包括:步骤15,在T=1时,针对第q列MAC,将第二像素数据与第一权重数据中的第q个权重数据相乘,并与第Ky-1行的第K次运算的卷积运算结果相加,得到第q列MAC第1次运算的a个第一卷积运算结果,1≤q≤k。
其中,第Ky-1行的第K次运算的卷积运算结果可以采用上述本公开实施例中步骤11至步骤14公开的处理方式得到,在此不再赘述。
在本公开实施例中,能够实现每行权重数据与对应像素数据的卷积运算结果的循环累加,以得到第m个通道的卷积运算结果。
在实际应用中,在实现卷积核与图像的卷积运算时,对于各个卷积核,通常需要将各通道的权重数据与对应通道的像素数据的卷积运算结果累加,得到最终的卷积运算结果。
在一种可能的实现方式中,数据处理方法还可以包括:步骤16,针对第q列MAC,在完成k个卷积核的K行的运算后,得到第m个通道的a个第二卷积运算结果;步骤17,在得到的C0个通道的卷积运算结果后,将每个卷积核的C0个通道的卷积运算结果相加,得到第q列MAC输出的a个目标卷积运算结果。
其中,每个通道的卷积运算结果实际为将该通道下卷积核每行的卷积运算结果累加得到,则步骤16中完成k个卷积核的K行运算可以采用本公开实施例上述步骤11至步骤15公开的处理方式得到,在此不再赘述。
在本公开实施例中,针对第q列MAC,通过将每个卷积核的C0个通道的卷积运算结果相加,能够得到第q列MAC输出的a个目标卷积运算结果,相当于得到了k个输出图的同一行的相邻a个点的值。
在实际应用中,在得到第q列MAC输出的a个目标卷积运算结果后,即k个输出图的同一行的相邻a个点的值后,可能还未完成输入图像在行方向上全部像素数据与权重数据的卷积,则在一种可能的实现方式中,在得到第q列MAC输出的a个目标卷积运算结果后,数据处理方法还可以包括:
根据图像的第m通道、第Py行中的第X[aSx]处的像素数据对应的第一存储向量,确定第Py行中的第X[aSx]处的像素数据对应的第一存储向量在存储单元中对应第一存储起始地址;
根据预设的像素读取位宽和第一存储起始地址,从存储单元读取第三像素数据,第三像素数据包括从第一存储起始地址开始读取的连续的M个像素数据,以便运算单元继续运算。
在一种可能的实现方式中,在获取到输入图像的尺寸、填充参数padding,卷积核的尺寸(宽度K×高度K),卷积核的步长(包括行方向的步长Sx,列方向的步长Sy)等参数后,可以得到出输出图的尺寸,例如,可以通过公式1得到输出图的尺寸,根据输出图的尺寸可以判断出在得到第q列MAC输出的a个目标卷积运算结果时,是否完成输入图像在行方向上全部像素数据与权重数据的卷积运算。
其中,Pout为输出图的宽度或高度,Pin为输入图像的宽度或高度,S表示行方向的步长或列方向的步长。
举例来说,若计算得到输出图的宽度为16,当前第q列MAC输出了4个目标卷积运算结果,则代表未完成输入图像行方向上全部像素数据与权重数据的卷积。
其中,根据图像的第m通道、第Py行中的第X[aSx]处的像素数据对应的第一存储向量,确定第Py行中的第X[aSx]处的像素数据对应的第一存储向量在存储单元中对应第一存储起始地址,是由于针对第Py行的第一像素数据,在先选取了图像的第m通道、第Py行的X[0],X[Sx],X[2Sx],X[3Sx],……,X[(a-1)Sx]处的第二像素数据,所以根据卷积核的步长Sx,接下来需要从X[aSx]处开始选取第二像素数据以进行卷积运算。
在本公开实施例中,考虑到X[aSx]处的像素数据的对应的存储地址不易确定,且若从X[aSx]处的像素数据所对应的存储地址开始读取数据的情况较为复杂,所以在本公开实施例中,通过确定第X[aSx]处的像素数据对应的第一存储向量在存储单元中对应第一存储起始地址,再根据预设的像素读取位宽和第一存储起始地址,从存储单元读取第三像素数据,可以较为便捷快速的确定出缓存模块从存储单元中取数的起始地址,由于第一存储向量在存储单元中是对齐存储的,同时可以便于缓存模块的取数。
在一种可能的实现方式中,确定图像的第m通道、第Py行中的第X[aSx]处的像素数据对应的第一存储向量,可以根据aSx与nb-1,n∈[1,B]的对比关系,确定第X[aSx]处的像素数据对应的第一存储向量。
举例来说,假设b等于16,即按照每16个像素数据拆分得到第一存储向量,有3个第一存储向量分别包含图像第Py行的[0,15]、[16,31]、[32,47]的像素数据,若aSx=12,由于12小于15,则对应的第一存储向量为[0,15],需要从第0个像素数据开始从存储单元中读取数据,若aSx=18,18大于15,小于31,需要从第16个像素数据开始从存储单元中读取数据,以此类推。
在一种可能的实现方式中,在根据预设的像素读取位宽和第一存储起始地址,从存储单元读取第三像素数据后,可以根据卷积核的步长Sx,从第三像素数据中选取与卷积核位置T对应的a个像素数据作为第二像素数据,包括:
在T=1时,从第三像素数据中选取间隔步长Sx的a个像素数据作为第二像素数据,第二像素数据包括图像的第m个通道、第Py行的X[aSx],X[(a+1)Sx],X[(a+1)Sx]],X[(a+3)Sx]……X[(2a-1)Sx]处的像素数据;
在1<T≤K时,根据卷积核的膨胀率Ex,从第三像素数据中选取图像的第m通道、第Py行的X[aSx+(T-1)Ex],X[(a+1)Sx]+(T-1)Ex],X[(a+1)Sx]+(T-1)Ex],X[(a+3)Sx+(T-1)Ex],……,X[(2a-1)Sx+(T-1)Ex]处的像素数据作为第二像素数据。
需要说明的是,上述根据图像的第m通道、第Py行中的第X[aSx]处的像素数据对应的第一存储向量,确定第Py行中的第X[aSx]处的像素数据对应的第一存储向量在存储单元中对应第一存储起始地址,是本公开实施例提供的一种实施方式,但本领域技术人员能够理解,本公开应不限于此。在本公开实施例的启示下,本领域技术人员还可以根据图像的第m通道、第Py行中的第X[2aSx]处的像素数据对应的第一存储向量,确定第Py行中的第X[2aSx]处的像素数据对应的第一存储向量在存储单元中对应第一存储起始地址,依次类推。为行文简洁,本公开实施例不做穷举。
在一种可能的实现方式中,第三像素数据相当于步骤11中的第一像素数据,在从存储单元中读取第三像素数据后,可以采用上述本公开实施例步骤11至步骤16所述的数据处理方法,得到每列MAC输出的又a个目标卷积运算结果,从而能够完成图像在行方向上全部像素数据与权重数据的卷积,即得到输出图的同一行的全部值。
在本公开实施例中,通过从第X[aSx]、第X[2aSx]等处的像素数据对应的第一存储向量在所述存储单元中对应第一存储起始地址开始读取像素数据,可以较为简单有效的实现换行读取像素数据,以便于运算单元继续运算,最终可以得到多个输出图的同一行的全部值。
在实际应用中,得到输出图的某一行的数据后,需要根据卷积核的列方向上的步长Sy,在图像列方向进行移动循环运算,计算输出图下一行的数据,则在一种可能的实现方式中,根据本公开实施例的数据处理方法,还可以包括:在完成k个卷积核与K行像素数据的卷积运算后,根据卷积核在列方向的步长Sy,确定与K行像素数据的第1行间隔Sy-1行的首个像素数据的第二存储起始地址;根据预设的像素读取位宽和第二存储起始地址,从存储单元读取第四像素数据,第四像素数据包括从第二存储起始地址开始读取的连续的M个像素数据,以便运算单元继续运算。
在一种可能的实现方式中,读取第四像素数据后,第四像素数据相当于第一像素数据,则可以按照上述本公开实施例中的步骤11至步骤17公开的数据处理方法,得到第q列MAC输出的a个目标卷积运算结果,以完成卷积核与图像的卷积运算。
在本公开实施例中,通过根据列方向上的移动步长Sy读取第四像素数据,可以便于计算输出图的每一行的数据,最终得到各个卷积核对应的输出图。
需要说明的是,本公开实施例中的输出图可以是指经卷积运算得到的特征图(feature map),输入图像和图像可以是指原始图像,也可以指已进行卷积运算处理后的特征图,对此本公开实施例不做限制。
图8a示出根据本公开实施例的一种人工智能处理器的框图,图8b示出根据本公开实施例的一种处理核心的框图。如图8a所示,该人工智能处理器100包括多个处理核心101,如图8b所示,每个处理核心101包括存储单元102及运算单元103。
在一种可能的实现方式中,存储单元102用于存储图像的像素数据及N个卷积核的权重数据;运算单元103包括乘数累加器MAC阵列104,用于根据像素数据及权重数据进行运算。
在一种可能的实现方式中,运算单元还可以包括至少一个缓存模块105,缓存模块用于根据预设的像素读取位宽从存储单元102中读取像素数据,以及根据预设的权重读取位宽从存储单元102中读取权重数据。
在一种可能的实现方式中,缓存模块105可以将选通的数据送入MAC阵列进行卷积运算,将卷积运算结果输出到存储单元中由地址产生模块106指定的地址空间中。
在一种可能的实现方式中,运算单元还可以包括地址产生模块106用于产生缓存模块读取数据时的地址指针,以便于缓存模块105根据地址指针实现顺序寻址和/或跳变寻址。
在一种可能的实现方式中,MAC阵列104包括基于纵横式交换crossbar矩阵结构的阵列。MAC阵列104可以展开为行列两个维度,能够实现支持多点并行卷积运算。
在一种可能的实现方式中,处理核心101可以通过本公开实施例上述任一项所述的数据处理方法执行卷积运算。
在一种可能的实现方式中,存储单元102,可以用于根据特定的像素数据与权重数据的存储逻辑存储数据,其中像素数据的存储逻辑包括:每个通道图像依次存储,每个通道的像素数据的沿其图像宽度方向展开成向量,连续存储b个作为一个存储向量,向量按b字节对齐拆分为多个,逐个存储。不同像素数据在存储单元中的存储顺序为先沿图像宽度方向,再按图像高度方向存储。整个图像存储按照像素存储位宽对齐,不足补零,以方便寄存器取数计算。其中,像素存储位宽大于等于设置的b字节。
在一种可能的实现方式中,权重数据和像素数据时可以指定在存储单元102中的存储地址。根据权重数据的存储地址,缓存模块105在读取权重数据时,可以从存储地址的起始地址开始以地址加一的方式读取权重数据。
在一种可能的实现方式中,缓存模块105在读取像素数据时,会产生地址跳变,即,跳行读取像素数据,可以在原语参数里设置配置的地址跳变值。地址产生模块106根据地址跳变值生成目标地址,通过人工智能处理器自带的循环时钟计数器进行计数,在计数满足跳变条件后,循环时钟计数器产生跳变信号,通过跳变信号指示缓存模块105根据地址产生模块106产生的目标地址,实现地址指针的跳转。
在本公开实施例中,通过采用本公开实施例的人工智能处理器,可以实现高效的卷积运算,能够提升人工智能处理器的运行效率。
在一种可能的实现方式中,卷积核为四维数据,共有K×K×C0×N个权重数据,以每个输出图N(卷积核数量,输出通道数量)为向量长度展开,构成一个高度为Kx×Ky×C0,宽度为N的权重矩阵,该权重矩阵中的权重数据,在高度方向的排列顺序为先行方向、再列方向、再通道C0方向进行排列。
在一种可能的实现方式中,存储该权重矩阵时,当N大于32,权重数据大于等于1B时,该权重矩阵按32B对齐拆分为W_grp组,每一组的数据在存储单元中排列在前一组的数据下方。在一种情况下,当权重数据是2bit时,权重矩阵按每32列(也就是每32×2bit=8B)对齐拆分为W_grp组。
一种可能的实现方式中,输入图像的每一个通道沿宽度方向展开成向量,连续存储16个像素数据作为一个第一存储向量,第一存储向量按16B对齐拆分为多个第二存储向量,逐个存储第二存储向量。输入图像在存储单元中的存储顺序为先沿行方向,再按列方向存储。整个输入图像在存储单元中按照32B对齐,不足32B的地址空间补零,以方便寄存器取数计算。
在一种可能的实现方式中,可以采用48B的移位寄存器,或3个16B的寄存器,从存储单元中读取数据。在从存储单元中读取数据时,可以分3个时钟加载48B数据,例如,将输入图像的第1个通道(通常为R通道)的第一行的相邻48B(第0至47个)像素分3个时钟按高低16位加载进48B寄存器。若输入图像的宽度不足16B,则只load进16B数据,不足时补零;若输入图像的宽度不足32B,则只load进32B数据,不足时补零,读数操作可以通过循环时钟计数器控制。
在一种可能的实现方式中,在从寄存器中选取数据输出MAC阵列中进行运算时,每当寄存器将移除1个16B的数据时,寄存器会装载下一个16B的数据以保持运算的连贯。
在一种可能的实现方式中,基于4×32的2D MAC阵列,可实现最多4个像素数据在同时和最多32个卷积核的同一位置处的权重数据做相乘计算。例如,在一次运算中,可以选通寄存器中的X[0],X[Sx],X[2Sx],X[3Sx]4个像素数据,同时与32个卷积核的第一个通道、第一行、第一个权重数据相乘。之后按照卷积核行方向移位选通X[Ex],X[Ex+Sx],X[Ex+2Sx],X[Ex+3Sx]处的像素数据与32个卷积核的第一个通道、第一行、第二个权重数据进行卷积运算,Ex代表膨胀率,直至完成K个像素数据和对应权重数据的卷积运算。
在一种可能的实现方式中,通过将2D MAC阵列展开为行列两个方向,在列方向展开为Q个组,以提供在Q个输出通道方向的计算;在行方向展开为A个组,以提供A个像素数据的在行方向上的计算。每A个像素数据与对应权重数据相乘后,在基于Crossbar结构的MAC阵列的列方向做累加,以流水的形式生成连续A个点的卷积结果,实现支持多个像素数据与权重数据的并行运算。
以4x32的2D MAC阵列,卷积核的K为11,RGB通道的图像为例,说明本公开实施例中数据处理方法的一种实施方式,包括以下步骤:
步骤1,获取原语参数。
步骤2,将图像R通道的第一行的相邻48B(0-47)像素分3个时钟按高低16位加载进48B寄存器。从寄存器中选取4个像素数据X[0],X[Sx],X[2Sx],X[3Sx]送入2D MAC阵列,与32个卷积核的同一位置处的权重数据相乘,可以并行得到32个卷积运算结果。
步骤3,之后按照行方向进行移位,选通X[Ex],X[Ex+Sx],X[Ex+2Sx],X[Ex+3Sx]与对应权重数据相乘,直至完成K次像素数据和对应权重数据的卷积运算。
步骤4,换行读取下一行的48B像素数据,沿着行方向每次选通4个像素数据同时与对应权重数据进行卷积操作。
步骤5,重复上述步骤1至步骤4的操作,直至完成R通道下的K×K次卷积运算后,再分别计算G通道与B通道等其它通道的卷积运算,之后可同时得到输出图前32通道的相邻四个点:P0[0,0],P0[0,1],P0[0,2],P0[0,3]。此时需要将前32通道的P0[0,0],P0[0,1],P0[0,2],P0[0,3]写回存储单元中。重复上述步骤1至步骤5的操作,直到得到所有通道的输出图的相邻四个点:P0[0,0],P0[0,1],P0[0,2],P0[0,3]。
步骤6,判断寄存器第二次上窗读取像素数据的起始位置是否超过了第15个像素的位置,若超过15,则从第一行的第16至第63个像素的地址读取48B的像素数据,否则,仍从第0至第48个像素的地址读取像素数据。仍使用48B寄存器读取数据,再从寄存器中选取第X[4Sx],X[5Sx],X[6Sx],X[7Sx]处的像素数据进行卷积计算,至完成K×K次卷积运算,得到32个输出图的同一行相邻四个点:P0[0,4],P0[0,5],P0[0,6],,P0[0,7]。
步骤7,得到输出图的第一行的数据后,开始计算输出图的下一行的数据,此时从输入图像第0+Sy行读取对应像素数据,进行上述步骤1至步骤6的操作。
在一种可能的实现方式中,基于crossbar结构的4×32的MAC阵列,每次可以从寄存器中选取最多4个像素数据,同时和最多32个卷积核的同一位置处的一个权重数据做卷积运算。
在一种可能的实现方式中,在从寄存器中选通像素数据时,根据卷积核的尺寸、卷积核的步长Sx以及膨胀率Ex进行移位读取操作。图9a示出根据本公开实施例的一种选取像素数据的示意图。如图9a所示,假设K×K=11×11的卷积核,膨胀率Ex=1,图像X的每个像素数据占1B,寄存器中读取的48B为图像第一行的前48B的像素数据,卷积核的步长Sx为3,3个寄存器“Reg[0],Reg[1],Reg[3]”读取了图像X的第一行X[0]的前“0-47”的像素数据。
第一次运算时,选取寄存器中的X[0],X[Sx],X[2Sx],X[3Sx],即第1个、第4个、第7个、第10个像素数据“0,3,6,9”,第二次选取X[1],X[Sx+1],X[2Sx+1],X[3Sx+1],即像素数据“1,4,7,A”,第三次选取X[2],X[Sx+2],X[2Sx+2],X[3Sx+2],即像素数据“2,5,8,B”,至第11次运算,选取X[10],X[Sx+10],X[2Sx+10],X[3Sx+10],即像素数据“A,D,16,19”。
由于卷积核的尺寸为11×11,从寄存器中选取11次像素数据送入MAC阵列后,相当于计算完卷积核第一行权重数据与对应像素数据的卷积。
这时寄存器再跳转至图像X第二行像素数据对应的起始地址,加载第二行像素数据的前48B数据,选取像素数据的选通逻辑与上述一致。在卷积核第二行权重数据与对应像素数据进行卷积运算后,再加载第三行像素数据的前48B数据,每次数据加载与数据选通逻辑与上述一致。
针对寄存器从存储单元中读取的像素数据,当移位选取了K次像素数据,寄存器的地址指针跳转到图像的第二行像素数据对应的存储地址进行第二次取数,至读取了K次数据,相当于算完图像R通道和卷积核的第一层权重数据的卷积,再跳到图像G通道的第一行像素数据的起始地址,按照与R通道相同的读数选通逻辑,计算G通道的像素数据与卷积核的第二层权重数据的卷积,以此类推,再算B通道。在RGB三个通道的卷积算完后,可以并行得到32个输出图的同一行的4个数。
接下来在计算输出图的同一行的后4个数时,需要回到图像的第一行像素数据对应的存储地址,加载第一行像素数据,即,进行第二次上窗。在第二次上窗时,判断即将选取的像素数据(X[4Sx]),即第二次上窗的起始位置是否过了15(0为起始,每16个像素数据作为一个存储向量),若超过则从第一行的第16个像素对应的存储地址读取48B数据,若没超过,则从第1个像素对应的存储地址读取48B数据。图9b示出根据本公开实施例的又一种选取像素数据的示意图,如图9b所示,第二次上窗读取像素数据时,由于X[4Sx]=12小于15,3个寄存器Reg[0],Reg[1],Reg[3]仍读取了图像X的第一行X[0]的前“0-47”的像素数据,再选取像素数据时,第一次选取X[4Sx],X[5Sx],X[6Sx],X[7Sx]处的像素数据,即“C,F,18,21”,第二次选取X[4Sx+1],X[5Sx+1],X[6Sx+1],X[7Sx+1],即“D,16,19,22”,至第11次选取X[4Sx+10],X[5Sx+10],X[6Sx+10],X[7Sx+10]处的像素数据。
第三次上窗时,判断X[8Sx]是否超过15,若没超过,则从第一个像素对应的存储地址加载数据,若超过15再判断是否超过31,若超过31,从第32个像素对应的存储地址读取48B数据,若没超过31从第16个像素对应的地址读取48B数据。第三次上窗读取像素数据后,根据步长Sx、卷积核尺寸K、膨胀率Ex选取像素数据,不再赘述。
在得到输出图当前行的数值后,根据列方向的步长Sy,读取0+Sy行的像素数据,以计算输出图的下一行数值,至得到输出图的全部行的数值。
在本公开实施例中,从上述卷积运算流程可以看出,要得到大小为Ox×Oy×N的输出图,共需要六层循环,为别为在卷积核宽度Kx,卷积核高度Ky,通道C0,输出通道N,输出图宽度Ox,输出图高度Oy方向的循环。
在本公开实施例中,卷积核的权重数据在存储单元中的存储逻辑与计算流程相符,因此在循环计算过程中,从权重的起始地址开始地址累加1即可。输出图的存储顺序与MAC阵列的输出数据顺序之间也遵循一定规律,因此也可以直接根据硬件固化逻辑确定输出图的存储顺序。在读取输入图像的像素数据时,由于涉及到滑窗取数操作,每层循环的地址跳变值可以设为可配置的原语参数。
本公开实施例中,基于Crossbar的结构的2D MAC阵列,通过展开行列两个维度,能够支持数据的多点并行运算。
本公开实施例中,基于输入图像与卷积核的存储逻辑,可以提升存储效率,每个通道依次存储,每个通道的沿其图像宽度方向展开成向量,连续存储16个作为一个存储向量,向量按16B对齐拆分为多个,逐个存储。不同像素数据在存储单元中的存储顺序为先沿图像宽度方向,再按图像高度方向存储。整个图像存储按照32B对齐,不足补零,以方便寄存器取数计算。
本公开实施例中,采用多个移位寄存器,可以实现动态的数据读取和选通,准确并高效地实现像素数据与对应权重数据的运算。
本公开实施例中,基于2D MAC阵列,输入图像按先行方向、列方向、通道方向顺序存储,通过设计多个移位寄存器以实现数据的动态读取和选通逻辑,提取输入图像的目标行至数据寄存器内,通过与卷积核对应行像素数据进行相乘,可以实现数据的多点并行运算逻辑,以行流水的形式连续运算并行输出多点卷积运算结果。
在本公开实施例中,实现了基于众核架构的神经形态芯片的新型卷积运算逻辑与数据存储模式,提高图像和卷积核之间的卷积运算和数据存储效率。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (13)
1.一种数据处理方法,其特征在于,应用于人工智能处理器的处理核心,所述人工智能处理器包括多个处理核心,每个处理核心包括存储单元及运算单元,
所述存储单元用于存储图像的像素数据及N个卷积核的权重数据;所述运算单元包括乘数累加器MAC阵列,用于根据所述像素数据及所述权重数据进行运算,其中,所述图像的尺寸为W0×H0×C0,所述卷积核的尺寸为K×K×C0,行方向的步长为Sx,W0、H0、C0、K、Sx为正整数,
所述方法包括:
根据预设的像素读取位宽,从所述存储单元读取第一像素数据,所述第一像素数据包括所述图像的第m个通道、第Py行的连续的M个像素数据,1≤m≤C0,1≤Py≤H0,1<M≤W0;
在k个卷积核的第Ky行的第T次运算时,根据预设的权重读取位宽,从所述存储单元读取第一权重数据,所述第一权重数据包括k个卷积核的第m个通道、第Ky行、卷积核位置T处的权重数据,1<k≤N,1≤T≤K,1≤Ky≤K;
根据所述卷积核的步长Sx,从所述第一像素数据中选取与卷积核位置T对应的a个像素数据作为第二像素数据,1<a<M;
在T>1时,针对所述MAC阵列中的第q列MAC,将所述第二像素数据与所述第一权重数据中的第q个权重数据相乘,并与第T-1次运算的结果相加,得到所述第q列MAC第T次运算的a个第一卷积运算结果,1≤q≤k。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在T=1时,针对所述第q列MAC,将所述第二像素数据与所述第一权重数据中的第q个权重数据相乘,并与第Ky-1行的第K次运算的卷积运算结果相加,得到所述第q列MAC第1次运算的a个第一卷积运算结果,1≤q≤k。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
针对所述第q列MAC,在完成所述k个卷积核的K行的运算后,得到所述第m个通道的a个第二卷积运算结果;
在得到的C0个通道的卷积运算结果后,将每个卷积核的C0个通道的卷积运算结果相加,得到第q列MAC输出的a个目标卷积运算结果。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:根据权重存储位宽,存储所述N个卷积核的权重数据,其中,所述权重存储位宽与所述权重读取位宽一致;
所述根据权重存储位宽,存储所述N个卷积核的权重数据,包括:
针对所述N个卷积核中的每个卷积核,依次按照该卷积核的行方向、列方向和通道C0的顺序,将该卷积核的权重数据纵向排列为第一权重向量;
将所述N个卷积核的第一权重向量横向对齐合并为第一权重矩阵;
根据所述权重存储位宽,横向存储所述第一权重矩阵中的权重数据。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:根据像素存储位宽,存储所述图像的像素数据,其中,所述像素存储位宽与所述像素读取位宽一致;
所述根据像素存储位宽,存储所述图像的像素数据,包括:
针对所述图像的第m个通道、第Py行的像素数据,按照每连续的b个像素数据拆分为B个第一存储向量,B等于W0除以b的结果向上取整,1≤b≤W0;
针对每个第一存储向量,按照每b字节将该第一存储向量拆分为E个第二存储向量,所述b字节小于等于所述像素存储位宽;
根据所述像素存储位宽,顺序存储所述E个第二存储向量,不足权重存储位宽的地址空间补0;
顺序存储所述第m个通道、第Py行的像素数据。
8.根据权利要求4至6中任一项所述的方法,其特征在于,根据预设的权重读取位宽,从所述存储单元读取第一权重数据,包括:
在T=1时,确定k个卷积核的第m个通道、第Ky行、卷积核位置T处的权重数据在目标权重矩阵中的所在行L;根据所述权重读取位宽,从所述存储单元中读取所述目标权重矩阵的第L行的权重数据,作为从所述存储单元读取的第一权重数据;
在1<T≤K时,根据预设的权重读取位宽,从所述存储单元中读取所述目标权重矩阵的第L+T-1行的权重数据,作为从所述存储单元读取的第一权重数据;
其中,所述目标权重矩阵包括所述第二权重矩阵或所述第三权重矩阵。
9.根据权利要求3所述的方法,其特征在于,根据所述卷积核的步长Sx,从所述第一像素数据中选取与卷积核位置T对应的a个像素数据作为第二像素数据,包括:
在T=1时,从所述第一像素数据中选取间隔所述步长Sx的a个像素数据作为第二像素数据,所述第二像素数据包括所述图像的第m通道、第Py行的X[0],X[Sx],X[2Sx],X[3Sx],……,X[(a-1)Sx]处的像素数据;
在1<T≤K时,根据所述卷积核的膨胀率Ex,从所述第一像素数据中选取所述图像的第m通道、第Py行的X[(T-1)Ex],X[Sx+(T-1)Ex],X[2Sx+(T-1)Ex],X[3Sx+(T-1)Ex],……,X[(a-1)Sx+(T-1)Ex]处的像素数据作为第二像素数据。
10.根据权利要求9所述的方法,其特征在于,在得到第q列MAC输出的a个目标卷积运算结果后,所述方法还包括:
根据所述图像的第m通道、第Py行中的第X[aSx]处的像素数据对应的第一存储向量,确定所述第Py行中的第X[aSx]处的像素数据对应的第一存储向量在所述存储单元中对应第一存储起始地址;
根据所述预设的像素读取位宽和所述第一存储起始地址,从所述存储单元读取第三像素数据,所述第三像素数据包括从所述第一存储起始地址开始读取的连续的M个像素数据,以便所述运算单元继续运算。
11.根据权利要求10所述的方法,其特征在于,所述方法还包括:
在完成所述k个卷积核与K行像素数据的卷积运算后,根据卷积核在列方向的步长Sy,确定与所述K行像素数据的第1行间隔Sy-1行的首个像素数据的第二存储起始地址;
根据所述预设的像素读取位宽和所述第二存储起始地址,从所述存储单元读取第四像素数据,所述第四像素数据包括从所述第二存储起始地址开始读取的连续的M个像素数据,以便所述运算单元继续运算。
12.根据权利要求1-11中任意一项所述的方法,其特征在于,所述乘数累加器MAC阵列包括基于纵横式交换crossbar矩阵结构的阵列;
所述运算单元还包括至少一个缓存模块,所述缓存模块用于根据预设的像素读取位宽从所述存储单元中读取像素数据,以及根据预设的权重读取位宽从所述存储单元中读取权重数据。
13.一种人工智能处理器,其特征在于,所述人工智能处理器包括多个处理核心,每个处理核心包括存储单元及运算单元,所述存储单元用于存储图像的像素数据及N个卷积核的权重数据;所述运算单元包括乘数累加器MAC阵列,用于根据所述像素数据及所述权重数据进行运算,
其中,所述处理核心通过权利要求1-12中任一项所述的数据处理方法执行卷积运算。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011381294.9A CN112395092B (zh) | 2020-11-30 | 2020-11-30 | 数据处理方法及人工智能处理器 |
PCT/CN2020/137453 WO2022110386A1 (zh) | 2020-11-30 | 2020-12-18 | 数据处理方法及人工智能处理器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011381294.9A CN112395092B (zh) | 2020-11-30 | 2020-11-30 | 数据处理方法及人工智能处理器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112395092A CN112395092A (zh) | 2021-02-23 |
CN112395092B true CN112395092B (zh) | 2023-06-02 |
Family
ID=74604862
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011381294.9A Active CN112395092B (zh) | 2020-11-30 | 2020-11-30 | 数据处理方法及人工智能处理器 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN112395092B (zh) |
WO (1) | WO2022110386A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112862724B (zh) * | 2021-03-12 | 2022-09-09 | 上海壁仞智能科技有限公司 | 用于计算的方法、计算设备和计算机可读存储介质 |
CN112927124A (zh) * | 2021-03-31 | 2021-06-08 | 成都商汤科技有限公司 | 一种数据处理方法、装置、设备及存储介质 |
CN114995782B (zh) * | 2022-08-03 | 2022-10-25 | 上海登临科技有限公司 | 数据处理方法、装置、设备和可读存储介质 |
CN116152307B (zh) * | 2023-04-04 | 2023-07-21 | 西安电子科技大学 | 一种基于fpga的sar图像配准预处理装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108108809A (zh) * | 2018-03-05 | 2018-06-01 | 山东领能电子科技有限公司 | 一种针对卷积神经元网络进行推理加速的硬件架构及其工作方法 |
CN111897579A (zh) * | 2020-08-18 | 2020-11-06 | 腾讯科技(深圳)有限公司 | 图像数据处理方法、装置、计算机设备和存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190164037A1 (en) * | 2017-11-29 | 2019-05-30 | Electronics And Telecommunications Research Institute | Apparatus for processing convolutional neural network using systolic array and method thereof |
CN111028126B (zh) * | 2019-11-18 | 2023-06-30 | 中国航空工业集团公司西安航空计算技术研究所 | 一种gpu图像处理卷积过滤的实现方法 |
-
2020
- 2020-11-30 CN CN202011381294.9A patent/CN112395092B/zh active Active
- 2020-12-18 WO PCT/CN2020/137453 patent/WO2022110386A1/zh active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108108809A (zh) * | 2018-03-05 | 2018-06-01 | 山东领能电子科技有限公司 | 一种针对卷积神经元网络进行推理加速的硬件架构及其工作方法 |
CN111897579A (zh) * | 2020-08-18 | 2020-11-06 | 腾讯科技(深圳)有限公司 | 图像数据处理方法、装置、计算机设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2022110386A1 (zh) | 2022-06-02 |
CN112395092A (zh) | 2021-02-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112395092B (zh) | 数据处理方法及人工智能处理器 | |
CN109034373B (zh) | 卷积神经网络的并行处理器及处理方法 | |
CN108985450B (zh) | 面向向量处理器的卷积神经网络运算向量化方法 | |
US20210406010A1 (en) | Processor and control method for processor | |
US10915297B1 (en) | Hardware accelerator for systolic matrix multiplication | |
US20190095776A1 (en) | Efficient data distribution for parallel processing | |
CN107301456B (zh) | 基于向量处理器的深度神经网络多核加速实现方法 | |
CN110366732A (zh) | 用于在卷积神经网络中进行矩阵处理的方法和设备 | |
GB2564285A (en) | Convolutional neural network on programmable two dimensional image processor | |
US20200167405A1 (en) | Convolutional operation device with dimensional conversion | |
CN107742150B (zh) | 一种卷积神经网络的数据处理方法和装置 | |
US9483442B2 (en) | Matrix operation apparatus | |
CN110188869B (zh) | 一种基于卷积神经网络算法的集成电路加速计算的方法及系统 | |
TW202123093A (zh) | 實行卷積運算的系統及方法 | |
CN111767994B (zh) | 一种神经元计算装置 | |
CN110674927A (zh) | 一种用于脉动阵列结构的数据重组方法 | |
CN110807170A (zh) | 多样本多通道卷积神经网络Same卷积向量化实现方法 | |
CN113869498A (zh) | 一种卷积运算电路及其运算方法 | |
CN112712457B (zh) | 数据处理方法以及人工智能处理器 | |
US20220350861A1 (en) | Systolic array and accelerator including the same | |
CN113537482B (zh) | 神经网络计算模块、方法和通信设备 | |
US20230289584A1 (en) | System and method for increasing utilization of dot-product based neural network accelerator | |
US9336454B2 (en) | Vector processor calculation of local binary patterns | |
CN110414672B (zh) | 卷积运算方法、装置及系统 | |
CN116306840A (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 |