CN112765542A - 运算装置 - Google Patents

运算装置 Download PDF

Info

Publication number
CN112765542A
CN112765542A CN201911061951.9A CN201911061951A CN112765542A CN 112765542 A CN112765542 A CN 112765542A CN 201911061951 A CN201911061951 A CN 201911061951A CN 112765542 A CN112765542 A CN 112765542A
Authority
CN
China
Prior art keywords
transformation
result
unit
data
multiplication
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
Application number
CN201911061951.9A
Other languages
English (en)
Inventor
不公告发明人
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Cambricon Technologies Corp Ltd
Original Assignee
Cambricon Technologies Corp Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Cambricon Technologies Corp Ltd filed Critical Cambricon Technologies Corp Ltd
Priority to CN201911061951.9A priority Critical patent/CN112765542A/zh
Priority to PCT/CN2020/113162 priority patent/WO2021082723A1/zh
Priority to US17/773,446 priority patent/US20230039892A1/en
Publication of CN112765542A publication Critical patent/CN112765542A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • G06F17/141Discrete Fourier transforms
    • G06F17/144Prime factor Fourier transforms, e.g. Winograd transforms, number theoretic transforms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Discrete Mathematics (AREA)
  • Image Processing (AREA)
  • Complex Calculations (AREA)

Abstract

本申请实施例提供一种运算装置中,运算装置包括存储单元、控制单元和运算单元。本申请提供的技术方案可降低卷积运算的资源消耗、提高卷积运算速度、减少运算时间。

Description

运算装置
技术领域
本申请涉及人工智能技术领域,具体涉及一种运算装置。
背景技术
随着人工智能技术的发展,用于实现人工智能技术的各种运算装置和包含运算装置的网络,被广泛应用于计算机视觉、自然语言处理等领域。
为了适应越来越高的任务要求,包含运算装置的网络规模越来越大,需要做更大量的运算,尤其是卷积运算。而在进行卷积运算时,现有的运算装置功耗高、计算时间较长,影响其在人工智能技术领域中的应用。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高运算速度、减少运算时间、降低功耗的运算装置。
本申请实施例第一方面提供了一种运算装置,所述装置用于进行winograd卷积运算,所述装置包括:控制单元、存储单元、以及运算单元;
所述控制单元,用于发送控制指令,所述控制指令用于指示所述运算单元进行winograd卷积运算,
所述存储单元,用于存储用于winograd卷积运算的数据;
所述运算单元,用于响应所述控制指令,从所述存储单元中提取数据进行winograd卷积运算,其中,所述运算单元将所述winograd卷积运算中对所述数据的变换运算拆解为求和运算,并根据所述求和运算完成所述数据的winograd变换。
本申请实施例第二方面提供了一种人工智能芯片,所述芯片包括如本申请第一方面中任意一项所述的运算装置。
本申请实施例第三方面提供了一种电子设备,所述电子设备包括如本申请第二方面所述的人工智能芯片。
本申请实施例第四方面提供了一种板卡,所述板卡包括:存储器件、接口装置和控制器件以及如本申请第二方面所述的人工智能芯片;
其中,所述人工智能芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述人工智能芯片与外部设备之间的数据传输;
所述控制器件,用于对所述人工智能芯片的状态进行监控。
本申请实施例第五方面提供了一种运算方法,应用于运算装置,所述运算装置包括:控制单元、存储单元、以及运算单元;其中,
所述控制单元发送控制指令,所述控制指令用于指示所述运算单元进行winograd卷积运算,
所述存储单元存储用于winograd卷积运算的数据;
所述运算单元响应所述控制指令,从所述存储单元中提取数据进行winograd卷积运算,其中,所述运算单元将所述winograd卷积运算中对所述数据的变换运算拆解为求和运算,并根据所述求和运算完成所述数据的winograd变换。
以上,本申请实施例的方案中,控制单元发送控制指令,控制指令用于指示运算单元进行winograd卷积运算,存储单元存储用于winograd卷积运算的数据;运算单元响应控制指令,从存储单元中提取数据进行winograd卷积运算,其中,运算单元将winograd卷积运算中对数据的变换运算拆解为求和运算,并根据求和运算完成数据的winograd变换,通过以加法运算替代变换运算中的大量乘法运算,加速了winograd卷积运算的速度,也节约了运算资源,本申请提供的方案可降低卷积运算的资源消耗、提高卷积运算速度、减少运算时间。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍。
图1为一个实施例中运算装置的结构框图;
图2为另一个实施例中运算装置的结构框图;
图3为再一个实施例中运算装置的结构框图;
图4为又一个实施例中运算装置的结构框图;
图5为一个实施例中运算方法的流程示意图;
图6为一个实施例中板卡的结构框图。
其中,图1至图6中的标识如下:
10:运算装置;
11:控制单元;
12:存储单元;
13:运算单元;
131:第一运算单元;
132:第二运算单元;
1321:乘法单元;
1322:逆变换单元;
141:加法运算单元;
142:乘法运算单元;
389:芯片;
390:存储器件;
391:接口装置;
392:控制器件。
具体实施方式
下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。
应当理解,本披露的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本披露的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本披露说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本披露。如在本披露说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本披露说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
为了清楚理解本申请的技术方案,下面对现有技术和本申请实施例中涉及的技术术语进行解释:
卷积运算:卷积运算是指从图像的左上角开始,开一个与模板同样大小的活动窗口,活动窗口对应一个窗口图像,该窗口图像为卷积核,窗口图像与图像中的像素对应起来相乘再相加,并用计算结果作为卷积运算后新图像的第一个像素值。然后,活动窗口向右移动一列,并作同样的运算。以此类推,从左到右、从上到下,即可得到一幅新图像。
winograd卷积:Winograd卷积是一种基于多项式插值算法的卷积加速实现方式。它通过对卷积操作的两个输入:第一目标矩阵和第二目标矩阵分别进行winograd卷积正变换,再将正变换后的第一目标矩阵和第二目标矩阵进行对位乘法,最后对对位乘法结果再次进行winograd卷积逆变换,得到与原卷积操作等价的卷积结果。
现有的人工智能技术,通常是基于处理器的卷积运算来实现特征的提取,例如神经网络中对特征数据的运算处理。神经网络中的卷积层对输入的特征数据以预设的卷积核进行卷积处理,并输出运算结果。其中,卷积层具体可以包含有相邻设置的多层卷积层,且每一层卷积层得到的运算结果,为对其上一层卷积层输入的特征数据。
针对每一卷积层中的运算,现有的卷积运算中,以包含权值数据的卷积核为窗口,在输入的特征数据的矩阵上“滑动”,对每个滑动位置上的局部矩阵执行矩阵乘,并根据矩阵乘的结果得到最后的运算结果。可见,现有的卷积运算中,需要大量运用到矩阵乘,而矩阵乘需要对特征数据中每行矩阵元素与卷积核的每列矩阵元素,进行对位相乘后累加的处理,其计算量庞大、处理效率低,运算装置能耗也高。
为了解决上述问题,本申请实施例提供了一种运算装置,用于进行winograd卷积运算。其中,还进一步将winograd卷积运算中对数据的变换运算拆解为求和运算,并根据该求和运算完成所述数据的winograd变换实现对运算过程的加速。参见图1,为一个实施例中运算装置的结构框图。如图1所示的运算装置10,包括:控制单元11、存储单元12、以及运算单元13。其中,控制单元11通过发出指令而对存储单元12和运算单元13进行控制,最终得到运算结果。在本实施例中,在对特征数据进行正变换的过程中,特征数据就是该过程中的目标矩阵;在对权值数据进行正变换的过程中,权值数据就是该过程中的目标矩阵;在对乘法运算结果进行逆变换的过程中,乘法运算结果就是该过程中的目标矩阵。
继续参见图1,控制单元11,用于发送控制指令,所述控制指令用于指示所述运算单元进行winograd卷积运算。例如,控制指令可以包括第一指令和第二指令,其中,所述第一指令包括正变换指令,所述第二指令包括对位乘指令和逆变换指令。控制单元11,用于发送第一指令和第二指令,以控制所述运算单元从存储单元中提取数据,进行相应的winograd变换。
存储单元12,用于存储用于winograd卷积运算的数据。该数据例如包括特征数据、权值数据中的至少一种。所述winograd变换包括正变换和/或逆变换。运算单元13,用于响应所述控制指令,从所述存储单元中提取数据进行winograd卷积运算,其中,所述运算单元将所述winograd卷积运算中对所述数据的变换运算拆解为求和运算,并根据所述求和运算完成所述数据的winograd变换。在本申请的各种实施例中,winograd卷积运算可以理解为是采用下式进行计算:
S=AT((GgGT)⊙(BTdB))A
其中,S表示卷积矩阵,即使用特征数据与权值数据进行卷积运算得到的结果矩阵;d表示特征数据;g表示权值数据;B表示将特征数据实现正变换的特征变换矩阵;BT表示B的转置;G表示将权值数据实现正变换的权值变换矩阵;GT表示G的转置;A表示将对位乘后的乘法运算结果实现逆变换的变换矩阵;AT表示A的转置。
由上式可知,在winograd卷积运算中需要进行多次winograd变换(正变换或逆变换)而这些winograd变换涉及大量乘法运算。本申请通过将winograd卷积运算中对数据(例如特征数据)的变换运算拆解为求和运算,并根据求和运算完成所述数据的winograd变换,以加法运算替代变换运算中的大量乘法运算,加速了winograd卷积运算的速度,也节约了运算资源,本申请提供的方案可降低卷积运算的资源消耗、提高卷积运算速度、减少运算时间。
在一些实施例中,所述运算单元13,具体用于将所述数据拆解为多个子张量;对所述多个子张量进行变换运算并求和,根据求和运算的结果得到所述数据的winograd变换结果。
将数据拆解为多个子张量的过程,可以理解为:运算单元,具体用于从所述数据解析得到多个子张量,其中,所述数据为所述多个子张量之和,所述多个子张量的个数与所述数据中非0元素的个数相同,每个所述子张量中有单个非0元素,且在所述子张量中的非0元素与在所述数据中对应位置的非0元素相同。
以下面X×Y规模的特征数据d为例,对运算单元从数据解析得到多个子张量的过程。
Figure BDA0002258191260000061
将上述特征数据d拆解为多个子张量:
Figure BDA0002258191260000062
假设特征数据d中所有元素都是非0元素,由此,得到X×Y个子张量。在其他实施例中,假如特征数据d中仅有3个元素是非0元素,则只能得到3个子张量,在此不做具体举例。
Figure BDA0002258191260000063
在上述X×Y个子张量中,以第一个子张量为例,其具有单个非0元素d00,其余元素均为0,且该子张量的这个非0元素,与特征数据中对应位置的元素相同,均为d00
在拆解得到多个子张量后,运算单元对所述多个子张量进行变换运算并求和,根据求和运算的结果得到所述数据的winograd变换结果的过程,具体可以是:运算单元获取各子张量对应的元子张量的winograd变换结果,其中,所述元子张量是将所述子张量的非0元素置为1的张量;将所述子张量中非0的元素值作为系数乘以对应的元子张量的winograd变换结果,得到所述子张量的winograd变换结果;将多个子张量的winograd变换结果相加得到所述数据的winograd变换结果。
继续以上述特征数据d为例进行举例,以第一个子张量为例,将其中的非0元素d00置为1后可以得到如下的元子张量:
Figure BDA0002258191260000064
对第一个子张量的元子张量可获取到如下的winograd变换结果:
Figure BDA0002258191260000071
其中,运算单元,具体用于对于每一个所述子张量,将所述子张量对应的元子张量左边乘以左乘矩阵(例如
Figure BDA0002258191260000072
)、右边乘以右乘矩阵(例如BY×Y),得到所述元子张量的winograd变换结果。其中,所述左乘矩阵和所述右乘矩阵都是由所述子张量的规模以及winograd变换类型确定的,其中所述winograd变换类型包括正变换的winograd变换类型和逆变换的winograd变换类型。
在具体的实现方式中,用于将数据实现正变换或逆变换的变换矩阵(例如B、G、A)都是由数据的规模而确定的,不同规模的数据对应的变换矩阵都是预设的已知矩阵。因此,对上述第一个子张量的元子张量的winograd变换结果,可以理解为一常数矩阵。然后,将X×Y个子张量对应的X×Y个winograd变换结果相加,得到如下特征数据的winograd变换结果。
Figure BDA0002258191260000073
所述winograd变换包括正变换和/或逆变换,上述实施例中是以特征数据的winograd变换,对变换运算拆解为求和运算进行举例,但上述拆解方式也可以用于权值数据正变换运算((GgGT))、以及A(GgGT)与(BTdB)对位乘的乘法运算结果逆变换运算中,在此不做赘述。
在一些实施例中,所述控制指令包括第一指令和第二指令,其中,所述第一指令包括正变换指令,所述第二指令包括对位乘指令和逆变换指令。控制单元11,用于发出第一指令和第二指令。在一些实施例中,控制单元11发出的第一指令和第二指令可以是预先从存储单元12中提取的,也可以是预先由外部写入并存储在控制单元11内的。例如,第一指令和第二指令都包括操作码和操作地址。第一指令包括与正变换指令相对应的正变换操作码、操作地址。第二指令包括与对位乘指令相对应的对位乘操作码、操作地址,以及与逆变换指令相对应的逆变换操作码、操作地址。每条指令可以包括一个操作码以及一个或多个操作地址。其中,操作地址,具体可以是寄存器地址。
图1所示的存储单元12存储数据。存储单元12存储的数据例如可以是运算装置10在winograd卷积运算中需要用到的数据。在上述第一指令和第二指令是预先从存储单元12中提取的实施例中,存储单元12存储的数据中包含了第一指令和第二指令。存储单元12的结构例如可以包括寄存器、缓存和数据输入/输出单元。
继续参见图1,运算单元13,用于响应所述第一指令,从所述存储单元12中提取所述特征数据,对所述特征数据进行正变换,其中,所述运算单元13将对所述特征数据的正变换拆解为求和运算,并根据求和运算完成所述特征数据的正变换,得到特征变换结果。具体地,例如,运算单元13获取到控制单元11发来的第一指令时,运算单元13从第一指令解析得到对特征数据进行正变换的指令。运算单元13从存储单元12读取特征数据,对该特征数据进行正变换,得到特征变换结果。其中,运算单元13还可以根据特征数据的规模,从存储单元12获取到与该特征数据相对应的特征变换矩阵。
继续参见图1,运算单元13,还用于响应所述第二指令获取经过正变换的权值变换结果,对所述权值变换结果和特征变换结果进行对位乘,得到乘法运算结果;对所述乘法运算结果进行逆变换,其中,所述运算单元将对所述乘法运算结果的逆变换拆解为求和运算,并根据所述求和运算完成所述乘法运算结果的逆变换,得到运算结果。
具体地,例如,运算单元13获取到控制单元11发来的第二指令时,可以是获取到对位乘指令和逆变换指令。其中,运算单元13根据对位乘指令获取权值变换结果和特征变换结果,并对两者进行对位乘。其中,可以是在得到特征变换结果时,从存储单元12获取预先存储的权值变换结果,进行对位乘;也可以是同时计算得到权值变换结果和特征变换结果,然后对两者进行对位乘。对位乘是两个矩阵行列相同位置元素一一对应相乘得到的乘法运算结果,并不改变矩阵规模。在对位乘之后,运算单元13根据逆变换指令,获取与乘法运算结果相对应的逆变换矩阵(例如A),并以该逆变换矩阵对乘法运算结果进行逆变换,得到运算结果。示例性的,如果特征数据是待处理图像的特征数据,那么运算单元13得到的运算结果可以理解为对待处理图像的特征提取结果。上述对乘法运算结果进行逆变换的过程中,都可以将对所述乘法运算结果的逆变换拆解为求和运算,并根据求和运算完成所述乘法运算结果的逆变换,得到运算结果,拆解方式与前述实施例中对特征数据正变换的拆解方式相同,在此不做赘述。
以上运算装置,通过对特征数据的正变换得到特征变换结果,以及对权值变换结果和特征变换结果进行对位乘和逆变换,将对所述乘法运算结果的逆变换拆解为求和运算,以加法运算替代了现有卷积运算过程中的大量乘法运算,通过减少乘法运算加速运算速度、减少了资源消耗。
在上述实施例中,权值变换结果可以是与特征变换结果同时计算得到的,也可以是先于特征变换结果得到而预先存储的。
在一些实施例中,存储单元12,具体用于存储权值数据。图1所示的运算单元13,具体用于从存储单元12提取所述权值数据,对所述权值数据进行正变换,其中,所述运算单元将对所述权值数据的正变换拆解为求和运算,并根据求和运算完成所述权值数据的正变换,获得权值变换结果。
在另一些实施例中,存储单元12,具体用于接收权值变换结果并存储。运算单元13,具体用于响应所述第二指令,从所述存储单元12中获取所述权值变换结果。示例性的,本实施例在对权值数据进行预先存储时或者是接收到第一指令之前,运算单元13可以预先对所述权值数据进行正变换,获得权值变换结果,并将权值变换结果存入存储单元12。然后,运算单元13响应第一指令对特征数据进行正变换,得到特征变换结果。由此,可以直接提取权值变换结果,减少winograd卷积运算的运算时间。最后,运算单元13响应第二指令,从存储单元12中提取对所述权值变换结果和特征变换结果进行对位乘,得到乘法运算结果;对所述乘法运算结果进行逆变换,其中,运算单元13将对所述乘法运算结果的逆变换拆解为求和运算,并根据所述求和运算完成所述乘法运算结果的逆变换,得到运算结果。可选地,运算单元13对特征数据进行正变换得到特征变换结果的过程,和运算单元13对权值变换结果和特征变换结果进行对位乘的过程,可以同步执行,以提高运算速度和效率。
又可选地,运算单元13响应第一指令,从存储单元12获取权值数据和特征数据,先分别对权值数据和特征数据进行正变换,得到权值变换结果和特征变换结果。然后,运算单元13响应第二指令对权值变换结果和特征变换结果进行对位乘和逆变换。
对于上述实施例中的运算单元13,具体结构可以是多种,例如,一种运算单元13可以包括第一运算单元和第二运算单元;另一种运算单元13可以包括加法运算单元和乘法运算单元,下面结合附图对这两种可能的结构进行举例说明。
参见图2,为另一个实施例中运算装置的结构框图。如图2所示的运算装置10,运算单元13可以包括第一运算单元131和第二运算单元132。
其中,第一运算单元131,用于响应所述第一指令,从所述存储单元提取特征数据,对所述特征数据进行正变换,其中,第一运算单元131将对所述特征数据的正变换拆解为求和运算,并根据所述求和运算完成所述特征数据的正变换,得到特征变换结果。在一些实施例中,第一运算单元131在对所述特征数据进行正变换时,还可以同时从所述存储单元12获取权值数据,对权值数据进行正变换,得到权值变换结果。然后,将得到的特征变换结果和权值变换结果都发送至第二运算单元132。在另一些实施例中,由于第一运算单元131与第二运算单元132之间传输带宽有限,为了降低带宽占用量,第一运算单元131在响应第一指令对所述特征数据进行正变换之前,例如在接收到第一指令之前,可以预先对权值数据进行正变换,得到权值变换结果,并将权值变换结果存储在存储单元12中。在第一运算单元131将特征变换结果发给第二运算单元132时,第二运算单元132可以直接从存储单元12中获取到权值变换结果。由此,第一运算单元131与第二运算单元132之间不需要传输权值变换结果,降低了对第一运算单元131与第二运算单元132之间传输带宽的要求、提高了传输速度。
第二运算单元132,用于响应所述第二指令获取权值变换结果,对所述权值变换结果和特征变换结果进行对位乘,得到乘法运算结果;对所述乘法运算结果进行逆变换,其中,第二运算单元132将所述逆变换中对所述乘法运算结果的逆变换运算拆解为求和运算,并根据求和运算完成所述乘法运算结果的逆变换,得到运算结果。
参见图3,为再一个实施例中运算装置的结构框图。在图3所示的运算装置10中,第二运算单元132具体可以包括乘法单元1321和逆变换单元1322。
其中,乘法单元1321,用于响应所述第二指令,获取权值变换结果,对所述权值变换结果和特征变换结果进行对位乘,得到乘法运算结果。图3所示乘法单元1321,可以是从存储单元12获取预先存储的权值变换结果,或者是从第一运算单元131获取其计算得到的权值变换结果,在此不做限定。
逆变换单元1322,用于对所述乘法运算结果进行逆变换,其中,逆变换单元1322将所述逆变换中对所述乘法运算结果的逆变换拆解为求和运算,并根据所述求和运算完成所述乘法运算结果的逆变换,得到所述运算结果。逆变换单元1322具体可以从存储单元12获取用于对乘法运算结果进行逆变换逆变换矩阵(例如A),并以逆变换矩阵对对所述乘法运算结果进行逆变换,得到运算结果。
参见图4,为又一个实施例中运算装置的结构框图。在图4所示的运算装置10中,运算单元13包括加法运算单元141和乘法运算单元142。在本实施例中,将运算过程中能够以加法完成的过程用加法运算单元141执行,而将对位乘用专门的乘法运算单元142执行。
加法运算单元141,用于响应所述第一指令,从所述存储单元12获取特征数据,对所述特征数据进行正变换,其中,加法运算单元141将对所述特征数据的正变换拆解为求和运算,并根据所述求和运算完成所述特征数据的正变换,得到特征变换结果其中,加法运算单元141可以在接收到第一指令之前,预先对权值数据进行正变换,得到权值变换结果,并将权值变换结果存入存储单元12。由此,加法运算单元141和乘法运算单元142之间不需要传输权值变换结果,降低了对传输带宽的要求、提高了传输速度。或者,加法运算单元141可以响应第一指令,对所述特征数据进行正变换的同时,对权值数据进行正变换,得到权值变换结果后,与特征变换结果一起传输给乘法运算单元142。权值数据可以是存储在存储单元12中的数据。
乘法运算单元142,用于响应所述第二指令获取权值变换结果,对所述权值变换结果和特征变换结果进行对位乘,获得乘法运算结果。乘法运算单元142对权值变换结果和特征变换结果中行列相同的元素一一对应做乘法,获得乘法运算结果。例如对4×4的正变换后权值矩阵和特征数据变换结果,一共需要执行16次乘法,获得4×4的乘法运算结果。
加法运算单元141,还用于响应所述第二指令,对所述乘法运算结果进行逆变换,其中,所述加法运算单元141将对所述乘法运算结果的逆变换拆解为求和运算,并根据所述求和运算完成所述乘法运算结果的逆变换,得到运算结果。加法运算单元141从乘法运算单元142获取乘法运算结果,并且可以从存储单元12获取逆变换矩阵,以逆变换矩阵对乘法运算结果进行逆变换,得到运算结果。
参见图5,为一个实施例中运算方法的流程示意图。图5所示的运算方法应用于上述实施例中的运算装置,所述运算装置包括:控制单元、存储单元、以及运算单元。其中,图5所示的运算方法包括:
S101,控制单元发送控制指令,所述控制指令用于指示所述运算单元进行winograd卷积运算。
S102,存储单元存储用于winograd卷积运算的数据。
S103,运算单元响应所述控制指令,从所述存储单元中提取数据进行winograd卷积运算,其中,所述运算单元将所述winograd卷积运算中对所述数据的变换运算拆解为求和运算,并根据所述求和运算完成所述数据的winograd变换。
本申请提供的运算方法中,通过控制单元发送控制指令,控制指令用于指示运算单元进行winograd卷积运算,存储单元存储用于winograd卷积运算的数据;运算单元响应控制指令,从存储单元中提取数据进行winograd卷积运算,其中,运算单元将winograd卷积运算中对数据的变换运算拆解为求和运算,并根据求和运算完成数据的winograd变换,通过以加法运算替代变换运算中的大量乘法运算,加速了winograd卷积运算的速度,也节约了运算资源,本申请提供的方案可降低卷积运算的资源消耗、提高卷积运算速度、减少运算时间。
在一些实施例中,所述运算单元将所述数据拆解为多个子张量;对所述多个子张量进行变换运算并求和,根据求和运算的结果得到所述数据的winograd变换结果。
在一些实施例中,所述运算单元从所述数据解析得到多个子张量,其中,所述数据为所述多个子张量之和,所述多个子张量的个数与所述数据中非0元素的个数相同,每个所述子张量中有单个非0元素,且在所述子张量中的非0元素与在所述数据中对应位置的非0元素相同。
在一些实施例中,所述运算单元获取各子张量对应的元子张量的winograd变换结果,其中,所述元子张量是将所述子张量的非0元素置为1的张量;将所述子张量中非0的元素值作为系数乘以对应的元子张量的winograd变换结果,得到所述子张量的winograd变换结果;将多个子张量的winograd变换结果相加得到所述数据的winograd变换结果。
在一些实施例中,所述运算单元对于每一个所述子张量,将所述子张量对应的元子张量左边乘以左乘矩阵、右边乘以右乘矩阵,得到所述元子张量的winograd变换结果,其中,所述左乘矩阵和所述右乘矩阵都是由所述子张量的规模以及winograd变换类型确定的,其中所述winograd变换类型包括正变换的winograd变换类型和逆变换的winograd变换类型。
在一些实施例中,所述数据包括特征数据、权值数据中的至少一种;
所述winograd变换包括正变换和/或逆变换。
在一些实施例中,所述控制指令包括第一指令和第二指令,其中,所述第一指令包括正变换指令,所述第二指令包括对位乘指令和逆变换指令;
所述运算单元响应所述第一指令,从所述存储单元中提取所述特征数据,对所述特征数据进行winograd卷积运算,其中,所述运算单元将所述winograd卷积运算中对所述特征数据的变换运算拆解为求和运算,并根据所述求和运算完成所述特征数据的正变换,得到特征变换结果;
所述运算单元还响应所述第二指令获取经过正变换的权值变换结果,对所述权值变换结果和特征变换结果进行对位乘,得到乘法运算结果;对所述乘法运算结果进行逆变换,其中,所述运算单元将对所述乘法运算结果的逆变换拆解为求和运算,并根据所述求和运算完成所述乘法运算结果的逆变换,得到运算结果。
在一些实施例中,所述存储单元接收权值变换结果并存储;
所述运算单元响应所述第二指令,从所述存储单元中提取所述权值变换结果。
在一些实施例中,所述存储单元存储权值数据;
所述运算单元从所述存储单元中提取所述权值数据,对所述权值数据进行正变换,其中,所述运算单元将对所述权值数据的正变换拆解为求和运算,并根据求和运算完成所述权值数据的正变换,获得权值变换结果。
在一些实施例中,所述运算单元包括:第一运算单元和第二运算单元;
所述第一运算单元响应所述第一指令,响应所述第一指令,从所述存储单元提取特征数据,对所述特征数据进行正变换,其中,所述第一运算单元将对所述特征数据的正变换拆解为求和运算,并根据所述求和运算完成所述特征数据的正变换,得到特征变换结果;
所述第二运算单元响应所述第二指令获取权值变换结果,对所述权值变换结果和特征变换结果进行对位乘,得到乘法运算结果;对所述乘法运算结果进行逆变换,其中,所述第二运算单元将对所述乘法运算结果的逆变换拆解为求和运算,并根据所述求和运算完成所述乘法运算结果的逆变换,得到运算结果。
在一些实施例中,所述第二运算单元包括:乘法单元和逆变换单元;
所述乘法单元响应所述第二指令,获取经过正变换的权值变换结果,对所述权值变换结果和特征变换结果进行对位乘,得到乘法运算结果;
所述逆变换单元对所述乘法运算结果进行逆变换,其中,所述逆变换单元将对所述乘法运算结果的逆变换拆解为求和运算,并根据所述求和运算完成所述乘法运算结果的逆变换,得到运算结果。
在一些实施例中,所述运算单元包括:加法运算单元和乘法运算单元;
所述加法运算单元响应所述第一指令,从所述存储单元获取特征数据,对所述特征数据进行正变换,其中,所述加法运算单元将对所述特征数据的正变换拆解为求和运算,并根据所述求和运算完成所述特征数据的正变换,得到特征变换结果;
所述乘法运算单元响应所述第二指令获取权值变换结果,对所述权值变换结果和特征变换结果进行对位乘,得到乘法运算结果;
所述加法运算单元,还用于响应所述第二指令,对所述乘法运算结果进行逆变换,其中,所述加法运算单元将对所述乘法运算结果的逆变换拆解为求和运算,并根据所述求和运算完成所述乘法运算结果的逆变换,得到运算结果。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本公开并不受所描述的动作顺序的限制,因为依据本公开,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本公开所必须的。
进一步需要说明的是,虽然流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
应该理解,上述的装置实施例仅是示意性的,本公开的装置还可通过其它的方式实现。例如,上述实施例中所述单元/模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如,多个单元、模块或组件可以结合,或者可以集成到另一个系统,或一些特征可以忽略或不执行。
另外,若无特别说明,在本公开各个实施例中的各功能单元/模块可以集成在一个单元/模块中,也可以是各个单元/模块单独物理存在,也可以两个或两个以上单元/模块集成在一起。上述集成的单元/模块既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
所述集成的单元/模块如果以硬件的形式实现时,该硬件可以是数字电路,模拟电路等等。硬件结构的物理实现包括但不局限于晶体管,忆阻器等等。若无特别说明,所述人工智能处理器可以是任何适当的硬件处理器,比如CPU、GPU、FPGA、DSP和ASIC等等。若无特别说明,所述存储单元可以是任何适当的磁存储介质或者磁光存储介质,比如,阻变式存储器RRAM(Resist ive Random Access Memory)、动态随机存取存储器DRAM(Dynamic RandomAccess Memory)、静态随机存取存储器SRAM(Static Random-Access Memory)、增强动态随机存取存储器EDRAM(Enhanced Dynamic Random Access Memory)、高带宽内存HBM(High-Bandwidth Memory)、混合存储立方HMC(Hybrid Memory Cube)等等。
所述集成的单元/模块如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
在一种可能的实现方式中,还公开了一种人工智能芯片,其包括了上述运算装置。
在一种可能的实现方式中,还公开了一种板卡,其包括存储器件、接口装置和控制器件以及上述人工智能芯片;其中,所述人工智能芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;所述存储器件,用于存储数据;所述接口装置,用于实现所述人工智能芯片与外部设备之间的数据传输;所述控制器件,用于对所述人工智能芯片的状态进行监控。
图6示出根据本公开实施例的板卡的结构框图,参阅图6,上述板卡除了包括上述芯片389以外,还可以包括其他的配套部件,该配套部件包括但不限于:存储器件390、接口装置391和控制器件392;
所述存储器件390与所述人工智能芯片通过总线连接,用于存储数据。所述存储器件可以包括多组存储单元393。每一组所述存储单元与所述人工智能芯片通过总线连接。可以理解,每一组所述存储单元可以是DDR SDRAM(英文:Double Data Rate SDRAM,双倍速率同步动态随机存储器)。
DDR不需要提高时钟频率就能加倍提高SDRAM的速度。DDR允许在时钟脉冲的上升沿和下降沿读出数据。DDR的速度是标准SDRAM的两倍。在一个实施例中,所述存储装置可以包括4组所述存储单元。每一组所述存储单元可以包括多个DDR4颗粒(芯片)。在一个实施例中,所述人工智能芯片内部可以包括4个72位DDR4控制器,上述72位DDR4控制器中64bit用于传输数据,8bit用于ECC校验。可以理解,当每一组所述存储单元中采用DDR4-3200颗粒时,数据传输的理论带宽可达到25600MB/s。
在一个实施例中,每一组所述存储单元包括多个并联设置的双倍速率同步动态随机存储器。DDR在一个时钟周期内可以传输两次数据。在所述芯片中设置控制DDR的控制器,用于对每个所述存储单元的数据传输与数据存储的控制。
所述接口装置与所述人工智能芯片电连接。所述接口装置用于实现所述人工智能芯片与外部设备(例如服务器或计算机)之间的数据传输。例如在一个实施例中,所述接口装置可以为标准PCIE接口。比如,待处理的数据由服务器通过标准PCIE接口传递至所述芯片,实现数据转移。优选的,当采用PCIE 3.0X 16接口传输时,理论带宽可达到16000MB/s。在另一个实施例中,所述接口装置还可以是其他的接口,本公开并不限制上述其他的接口的具体表现形式,所述接口单元能够实现转接功能即可。另外,所述人工智能芯片的计算结果仍由所述接口装置传送回外部设备(例如服务器)。
所述控制器件与所述人工智能芯片电连接。所述控制器件用于对所述人工智能芯片的状态进行监控。具体的,所述人工智能芯片与所述控制器件可以通过SPI接口电连接。所述控制器件可以包括单片机(Micro Controller Unit,MCU)。如所述人工智能芯片可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,所述人工智能芯片可以处于多负载和轻负载等不同的工作状态。通过所述控制装置可以实现对所述人工智能芯片中多个处理芯片、多个处理和或多个处理电路的工作状态的调控。
在一种可能的实现方式中,公开了一种电子设备,其包括了上述人工智能芯片。电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。上述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
依据以下条款可更好地理解前述内容:
A1、一种运算方法,应用于运算装置,所述运算装置包括:控制单元、存储单元、以及运算单元;其中,
所述控制单元发送控制指令,所述控制指令用于指示所述运算单元进行winograd卷积运算,
所述存储单元存储用于winograd卷积运算的数据;
所述运算单元响应所述控制指令,从所述存储单元中提取数据进行winograd卷积运算,其中,所述运算单元将所述winograd卷积运算中对所述数据的变换运算拆解为求和运算,并根据所述求和运算完成所述数据的winograd变换。
A2、根据条款A1所述的方法,所述运算单元将所述数据拆解为多个子张量;对所述多个子张量进行变换运算并求和,根据求和运算的结果得到所述数据的winograd变换结果。
A3、根据条款A2所述的运算方法,
所述运算单元从所述数据解析得到多个子张量,其中,所述数据为所述多个子张量之和,所述多个子张量的个数与所述数据中非0元素的个数相同,每个所述子张量中有单个非0元素,且在所述子张量中的非0元素与在所述数据中对应位置的非0元素相同。
A4、根据条款A2所述的运算方法,
所述运算单元获取各子张量对应的元子张量的winograd变换结果,其中,所述元子张量是将所述子张量的非0元素置为1的张量;将所述子张量中非0的元素值作为系数乘以对应的元子张量的winograd变换结果,得到所述子张量的winograd变换结果;将多个子张量的winograd变换结果相加得到所述数据的winograd变换结果。
A5、根据条款A4所述的运算方法,所述运算单元对于每一个所述子张量,将所述子张量对应的元子张量左边乘以左乘矩阵、右边乘以右乘矩阵,得到所述元子张量的winograd变换结果,其中,所述左乘矩阵和所述右乘矩阵都是由所述子张量的规模以及winograd变换类型确定的,其中所述winograd变换类型包括正变换的winograd变换类型和逆变换的winograd变换类型。
A6、根据条款A1至A5任一所述的运算方法,
所述数据包括特征数据、权值数据中的至少一种;
所述winograd变换包括正变换和/或逆变换。
A7、根据条款A6所述的运算方法,所述控制指令包括第一指令和第二指令,其中,所述第一指令包括正变换指令,所述第二指令包括对位乘指令和逆变换指令;
所述运算单元响应所述第一指令,从所述存储单元中提取所述特征数据,对所述特征数据进行winograd卷积运算,其中,所述运算单元将所述winograd卷积运算中对所述特征数据的变换运算拆解为求和运算,并根据所述求和运算完成所述特征数据的正变换,得到特征变换结果;
所述运算单元还响应所述第二指令获取经过正变换的权值变换结果,对所述权值变换结果和特征变换结果进行对位乘,得到乘法运算结果;对所述乘法运算结果进行逆变换,其中,所述运算单元将对所述乘法运算结果的逆变换拆解为求和运算,并根据所述求和运算完成所述乘法运算结果的逆变换,得到运算结果。
A8、根据条款A7所述的运算方法,
所述存储单元接收权值变换结果并存储;
所述运算单元响应所述第二指令,从所述存储单元中提取所述权值变换结果。
A9、根据条款A7所述的运算方法,
所述存储单元存储权值数据;
所述运算单元从所述存储单元中提取所述权值数据,对所述权值数据进行正变换,其中,所述运算单元将对所述权值数据的正变换拆解为求和运算,并根据求和运算完成所述权值数据的正变换,获得权值变换结果。
A10、根据条款A7所述的运算方法,所述运算单元包括:第一运算单元和第二运算单元;
所述第一运算单元响应所述第一指令,响应所述第一指令,从所述存储单元提取特征数据,对所述特征数据进行正变换,其中,所述第一运算单元将对所述特征数据的正变换拆解为求和运算,并根据所述求和运算完成所述特征数据的正变换,得到特征变换结果;
所述第二运算单元响应所述第二指令获取权值变换结果,对所述权值变换结果和特征变换结果进行对位乘,得到乘法运算结果;对所述乘法运算结果进行逆变换,其中,所述第二运算单元将对所述乘法运算结果的逆变换拆解为求和运算,并根据所述求和运算完成所述乘法运算结果的逆变换,得到运算结果。
A11、根据条款A10所述的运算方法,所述第二运算单元包括:乘法单元和逆变换单元;
所述乘法单元响应所述第二指令,获取经过正变换的权值变换结果,对所述权值变换结果和特征变换结果进行对位乘,得到乘法运算结果;
所述逆变换单元对所述乘法运算结果进行逆变换,其中,所述逆变换单元将对所述乘法运算结果的逆变换拆解为求和运算,并根据所述求和运算完成所述乘法运算结果的逆变换,得到运算结果。
A12、根据条款A7所述的运算方法,所述运算单元包括:加法运算单元和乘法运算单元;
所述加法运算单元响应所述第一指令,从所述存储单元获取特征数据,对所述特征数据进行正变换,其中,所述加法运算单元将对所述特征数据的正变换拆解为求和运算,并根据所述求和运算完成所述特征数据的正变换,得到特征变换结果;
所述乘法运算单元响应所述第二指令获取权值变换结果,对所述权值变换结果和特征变换结果进行对位乘,得到乘法运算结果;
所述加法运算单元,还用于响应所述第二指令,对所述乘法运算结果进行逆变换,其中,所述加法运算单元将对所述乘法运算结果的逆变换拆解为求和运算,并根据所述求和运算完成所述乘法运算结果的逆变换,得到运算结果。
以上对本公开实施例进行了详细介绍,本文中应用了具体个例对本公开的原理及实施方式进行了阐述,以上实施例的说明仅用于帮助理解本公开的方法及其核心思想。同时,本领域技术人员依据本公开的思想,基于本公开的具体实施方式及应用范围上做出的改变或变形之处,都属于本公开保护的范围。综上所述,本说明书内容不应理解为对本公开的限制。

Claims (28)

1.一种运算装置,所述装置用于进行winograd卷积运算,其特征在于,所述装置包括:控制单元、存储单元、以及运算单元;
所述控制单元,用于发送控制指令,所述控制指令用于指示所述运算单元进行winograd卷积运算;
所述存储单元,用于存储用于winograd卷积运算的数据;
所述运算单元,用于响应所述控制指令,从所述存储单元中提取数据进行winograd卷积运算,其中,所述运算单元将所述winograd卷积运算中对所述数据的变换运算拆解为求和运算,并根据所述求和运算完成所述数据的winograd变换。
2.根据权利要求1所述的运算装置,其特征在于,
所述运算单元,具体用于将所述数据拆解为多个子张量;对所述多个子张量进行变换运算并求和,根据求和运算的结果得到所述数据的winograd变换结果。
3.根据权利要求2所述的运算装置,其特征在于,
所述运算单元,具体用于从所述数据解析得到多个子张量,其中,所述数据为所述多个子张量之和,所述多个子张量的个数与所述数据中非0元素的个数相同,每个所述子张量中有单个非0元素,且在所述子张量中的非0元素与在所述数据中对应位置的非0元素相同。
4.根据权利要求2所述的运算装置,其特征在于,
所述运算单元,具体用于获取各子张量对应的元子张量的winograd变换结果,其中,所述元子张量是将所述子张量的非0元素置为1的张量;将所述子张量中非0的元素值作为系数乘以对应的元子张量的winograd变换结果,得到所述子张量的winograd变换结果;将多个子张量的winograd变换结果相加得到所述数据的winograd变换结果。
5.根据权利要求4所述的运算装置,其特征在于,所述运算单元,具体用于对于每一个所述子张量,将所述子张量对应的元子张量左边乘以左乘矩阵、右边乘以右乘矩阵,得到所述元子张量的winograd变换结果,其中,所述左乘矩阵和所述右乘矩阵都是由所述子张量的规模以及winograd变换类型确定的,其中所述winograd变换类型包括正变换的winograd变换类型和逆变换的winograd变换类型。
6.根据权利要求1至5任一所述的运算装置,其特征在于,
所述数据包括特征数据、权值数据中的至少一种;
所述winograd变换包括正变换和/或逆变换。
7.根据权利要求6所述的运算装置,其特征在于,
所述控制指令包括第一指令和第二指令,其中,所述第一指令包括正变换指令,所述第二指令包括对位乘指令和逆变换指令;
所述运算单元,用于响应所述第一指令,从所述存储单元中提取所述特征数据,对所述特征数据进行正变换,其中,所述运算单元将对所述特征数据的正变换拆解为求和运算,并根据所述求和运算完成所述特征数据的正变换,得到特征变换结果;
所述运算单元,还用于响应所述第二指令获取经过正变换的权值变换结果,对所述权值变换结果和特征变换结果进行对位乘,得到乘法运算结果;对所述乘法运算结果进行逆变换,其中,所述运算单元将对所述乘法运算结果的逆变换拆解为求和运算,并根据所述求和运算完成所述乘法运算结果的逆变换,得到运算结果。
8.根据权利要求7所述的运算装置,其特征在于,
所述存储单元,具体用于接收权值变换结果并存储;
所述运算单元,具体用于响应所述第二指令,从所述存储单元中提取所述权值变换结果。
9.根据权利要求7所述的运算装置,其特征在于,
所述存储单元,具体用于存储权值数据;
所述运算单元,具体用于从所述存储单元中提取所述权值数据,对所述权值数据进行正变换,其中,所述运算单元将对所述权值数据的正变换拆解为求和运算,并根据求和运算完成所述权值数据的正变换,获得权值变换结果。
10.根据权利要求7所述的运算装置,其特征在于,所述运算单元包括:
第一运算单元,用于响应所述第一指令,从所述存储单元提取特征数据,对所述特征数据进行正变换,其中,所述第一运算单元将对所述特征数据的正变换拆解为求和运算,并根据所述求和运算完成所述特征数据的正变换,得到特征变换结果;
第二运算单元,用于响应所述第二指令获取权值变换结果,对所述权值变换结果和特征变换结果进行对位乘,得到乘法运算结果;对所述乘法运算结果进行逆变换,其中,所述第二运算单元将所述逆变换中对所述乘法运算结果的逆变换运算拆解为求和运算,并根据所述求和运算完成所述乘法运算结果的逆变换,得到运算结果。
11.根据权利要求10所述的运算装置,其特征在于,所述第二运算单元包括:
乘法单元,用于响应所述第二指令,获取权值变换结果,对所述权值变换结果和特征变换结果进行对位乘,得到乘法运算结果;
逆变换单元,用于对所述乘法运算结果进行逆变换,其中,所述逆变换单元将所述逆变换中对所述乘法运算结果的变换运算拆解为求和运算,并根据所述求和运算完成所述乘法运算结果的逆变换,得到所述运算结果。
12.根据权利要求7所述的运算装置,其特征在于,所述运算单元包括:
加法运算单元,用于响应所述第一指令,从所述存储单元获取特征数据,对所述特征数据进行正变换,其中,所述加法运算单元将对所述特征数据的正变换拆解为求和运算,并根据所述求和运算完成所述特征数据的正变换,得到特征变换结果;
乘法运算单元,用于响应所述第二指令获取权值变换结果,对所述权值变换结果和特征变换结果进行对位乘,得到乘法运算结果;
所述加法运算单元,还用于响应所述第二指令,对所述乘法运算结果进行逆变换,其中,所述加法运算单元将对所述乘法运算结果的逆变换拆解为求和运算,并根据所述求和运算完成所述乘法运算结果的逆变换,得到运算结果。
13.一种人工智能芯片,其特征在于,所述芯片包括如权利要求1-12中任意一项所述的运算装置。
14.一种电子设备,其特征在于,所述电子设备包括如权利要求13所述的人工智能芯片。
15.一种板卡,其特征在于,所述板卡包括:存储器件、接口装置和控制器件以及如权利要求13所述的人工智能芯片;
其中,所述人工智能芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述人工智能芯片与外部设备之间的数据传输;
所述控制器件,用于对所述人工智能芯片的状态进行监控。
16.根据权利要求15所述的板卡,其特征在于,
所述存储器件包括:多组存储单元,每一组所述存储单元与所述人工智能芯片通过总线连接,所述存储单元为:DDR SDRAM;
所述芯片包括:DDR控制器,用于对每个所述存储单元的数据传输与数据存储的控制;
所述接口装置为:标准PCIE接口。
17.一种运算方法,其特征在于,应用于运算装置,所述运算装置包括:控制单元、存储单元、以及运算单元;其中,
所述控制单元发送控制指令,所述控制指令用于指示所述运算单元进行winograd卷积运算,
所述存储单元存储用于winograd卷积运算的数据;
所述运算单元响应所述控制指令,从所述存储单元中提取数据进行winograd卷积运算,其中,所述运算单元将所述winograd卷积运算中对所述数据的变换运算拆解为求和运算,并根据所述求和运算完成所述数据的winograd变换。
18.根据权利要求17所述的运算方法,其特征在于,
所述运算单元将所述数据拆解为多个子张量;对所述多个子张量进行变换运算并求和,根据求和运算的结果得到所述数据的winograd变换结果。
19.根据权利要求18所述的运算方法,其特征在于,
所述运算单元从所述数据解析得到多个子张量,其中,所述数据为所述多个子张量之和,所述多个子张量的个数与所述数据中非0元素的个数相同,每个所述子张量中有单个非0元素,且在所述子张量中的非0元素与在所述数据中对应位置的非0元素相同。
20.根据权利要求18所述的运算方法,其特征在于,
所述运算单元获取各子张量对应的元子张量的winograd变换结果,其中,所述元子张量是将所述子张量的非0元素置为1的张量;将所述子张量中非0的元素值作为系数乘以对应的元子张量的winograd变换结果,得到所述子张量的winograd变换结果;将多个子张量的winograd变换结果相加得到所述数据的winograd变换结果。
21.根据权利要求20所述的运算方法,其特征在于,所述运算单元对于每一个所述子张量,将所述子张量对应的元子张量左边乘以左乘矩阵、右边乘以右乘矩阵,得到所述元子张量的winograd变换结果,其中,所述左乘矩阵和所述右乘矩阵都是由所述子张量的规模以及winograd变换类型确定的,其中所述winograd变换类型包括正变换的winograd变换类型和逆变换的winograd变换类型。
22.根据权利要求17至21任一所述的运算方法,其特征在于,
所述数据包括特征数据、权值数据中的至少一种;
所述winograd变换包括正变换和/或逆变换。
23.根据权利要求22所述的运算方法,其特征在于,所述控制指令包括第一指令和第二指令,其中,所述第一指令包括正变换指令,所述第二指令包括对位乘指令和逆变换指令;
所述运算单元响应所述第一指令,从所述存储单元中提取所述特征数据,对所述特征数据进行winograd卷积运算,其中,所述运算单元将所述winograd卷积运算中对所述特征数据的变换运算拆解为求和运算,并根据所述求和运算完成所述特征数据的正变换,得到特征变换结果;
所述运算单元还响应所述第二指令获取经过正变换的权值变换结果,对所述权值变换结果和特征变换结果进行对位乘,得到乘法运算结果;对所述乘法运算结果进行逆变换,其中,所述运算单元将对所述乘法运算结果的逆变换拆解为求和运算,并根据所述求和运算完成所述乘法运算结果的逆变换,得到运算结果。
24.根据权利要求23所述的运算方法,其特征在于,
所述存储单元接收权值变换结果并存储;
所述运算单元响应所述第二指令,从所述存储单元中提取所述权值变换结果。
25.根据权利要求23所述的运算方法,其特征在于,
所述存储单元存储权值数据;
所述运算单元从所述存储单元中提取所述权值数据,对所述权值数据进行正变换,其中,所述运算单元将对所述权值数据的正变换拆解为求和运算,并根据求和运算完成所述权值数据的正变换,获得权值变换结果。
26.根据权利要求23所述的运算方法,其特征在于,所述运算单元包括:第一运算单元和第二运算单元;
所述第一运算单元响应所述第一指令,响应所述第一指令,从所述存储单元提取特征数据,对所述特征数据进行正变换,其中,所述第一运算单元将对所述特征数据的正变换拆解为求和运算,并根据所述求和运算完成所述特征数据的正变换,得到特征变换结果;
所述第二运算单元响应所述第二指令获取权值变换结果,对所述权值变换结果和特征变换结果进行对位乘,得到乘法运算结果;对所述乘法运算结果进行逆变换,其中,所述第二运算单元将对所述乘法运算结果的逆变换拆解为求和运算,并根据所述求和运算完成所述乘法运算结果的逆变换,得到运算结果。
27.根据权利要求26所述的运算方法,其特征在于,所述第二运算单元包括:乘法单元和逆变换单元;
所述乘法单元响应所述第二指令,获取经过正变换的权值变换结果,对所述权值变换结果和特征变换结果进行对位乘,得到乘法运算结果;
所述逆变换单元对所述乘法运算结果进行逆变换,其中,所述逆变换单元将对所述乘法运算结果的逆变换拆解为求和运算,并根据所述求和运算完成所述乘法运算结果的逆变换,得到运算结果。
28.根据权利要求23所述的运算方法,其特征在于,所述运算单元包括:加法运算单元和乘法运算单元;
所述加法运算单元响应所述第一指令,从所述存储单元获取特征数据,对所述特征数据进行正变换,其中,所述加法运算单元将对所述特征数据的正变换拆解为求和运算,并根据所述求和运算完成所述特征数据的正变换,得到特征变换结果;
所述乘法运算单元响应所述第二指令获取权值变换结果,对所述权值变换结果和特征变换结果进行对位乘,得到乘法运算结果;
所述加法运算单元,还用于响应所述第二指令,对所述乘法运算结果进行逆变换,其中,所述加法运算单元将对所述乘法运算结果的逆变换拆解为求和运算,并根据所述求和运算完成所述乘法运算结果的逆变换,得到运算结果。
CN201911061951.9A 2019-11-01 2019-11-01 运算装置 Pending CN112765542A (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201911061951.9A CN112765542A (zh) 2019-11-01 2019-11-01 运算装置
PCT/CN2020/113162 WO2021082723A1 (zh) 2019-11-01 2020-09-03 运算装置
US17/773,446 US20230039892A1 (en) 2019-11-01 2020-09-03 Operation apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911061951.9A CN112765542A (zh) 2019-11-01 2019-11-01 运算装置

Publications (1)

Publication Number Publication Date
CN112765542A true CN112765542A (zh) 2021-05-07

Family

ID=75692022

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911061951.9A Pending CN112765542A (zh) 2019-11-01 2019-11-01 运算装置

Country Status (3)

Country Link
US (1) US20230039892A1 (zh)
CN (1) CN112765542A (zh)
WO (1) WO2021082723A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111831337B (zh) * 2019-04-19 2022-11-29 安徽寒武纪信息科技有限公司 数据同步方法及装置以及相关产品

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170344876A1 (en) * 2016-05-31 2017-11-30 Samsung Electronics Co., Ltd. Efficient sparse parallel winograd-based convolution scheme
US10776694B2 (en) * 2017-05-16 2020-09-15 Samsung Electronics Co., Ltd. Optimized neural network input stride method and apparatus
US10387533B2 (en) * 2017-06-01 2019-08-20 Samsung Electronics Co., Ltd Apparatus and method for generating efficient convolution
US10990648B2 (en) * 2017-08-07 2021-04-27 Intel Corporation System and method for an optimized winograd convolution accelerator
CN109117187A (zh) * 2018-08-27 2019-01-01 郑州云海信息技术有限公司 卷积神经网络加速方法及相关设备
CN110097172B (zh) * 2019-03-18 2021-10-29 中国科学院计算技术研究所 一种基于winograd卷积运算的卷积神经网络数据处理方法及装置

Also Published As

Publication number Publication date
WO2021082723A1 (zh) 2021-05-06
US20230039892A1 (en) 2023-02-09

Similar Documents

Publication Publication Date Title
CN109062611B (zh) 神经网络处理装置及其执行向量缩放指令的方法
CN109522052B (zh) 一种计算装置及板卡
EP4156079A1 (en) Image data storage method, image data processing method and system, and related apparatus
CN111028136B (zh) 一种人工智能处理器处理二维复数矩阵的方法和设备
CN112416433A (zh) 一种数据处理装置、数据处理方法及相关产品
CN111125617A (zh) 数据处理方法、装置、计算机设备和存储介质
CN112784951B (zh) Winograd卷积运算方法及相关产品
WO2021083101A1 (zh) 数据处理方法、装置及相关产品
CN112765542A (zh) 运算装置
CN109740730B (zh) 运算方法、装置及相关产品
CN111143766A (zh) 人工智能处理器处理二维复数矩阵的方法和设备
EP4053753A1 (en) Operation apparatus and related product
CN111382856B (zh) 数据处理装置、方法、芯片及电子设备
CN111382852B (zh) 数据处理装置、方法、芯片及电子设备
US20220414183A1 (en) Winograd convolution operation method, apparatus, and device, and storage medium
CN114003198A (zh) 内积处理部件、任意精度计算设备、方法及可读存储介质
CN112784207B (zh) 运算方法及相关产品
CN112765539B (zh) 运算装置、方法及相关产品
CN111125627A (zh) 用于池化多维矩阵的方法及相关产品
CN113807489B (zh) 用于执行反卷积操作的方法、板卡及其计算装置
CN111061507A (zh) 运算方法、装置、计算机设备和存储介质
CN112766473B (zh) 运算装置及相关产品
TWI798591B (zh) 卷積神經網路運算方法及裝置
CN113536221B (zh) 运算方法、处理器以及相关产品
CN113762488B (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