CN112766473B - 运算装置及相关产品 - Google Patents

运算装置及相关产品 Download PDF

Info

Publication number
CN112766473B
CN112766473B CN201911060683.9A CN201911060683A CN112766473B CN 112766473 B CN112766473 B CN 112766473B CN 201911060683 A CN201911060683 A CN 201911060683A CN 112766473 B CN112766473 B CN 112766473B
Authority
CN
China
Prior art keywords
tensor
sub
wingrad
result
input data
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
Application number
CN201911060683.9A
Other languages
English (en)
Other versions
CN112766473A (zh
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 CN201911060683.9A priority Critical patent/CN112766473B/zh
Priority to PCT/CN2020/114057 priority patent/WO2021082747A1/zh
Publication of CN112766473A publication Critical patent/CN112766473A/zh
Application granted granted Critical
Publication of CN112766473B publication Critical patent/CN112766473B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining

Abstract

本公开涉及一种运算装置及相关产品。所述产品包括控制模块,所述控制模块包括:指令缓存单元、指令处理单元和存储队列单元;所述指令缓存单元,用于存储所述人工神经网络运算关联的计算指令;所述指令处理单元,用于对所述计算指令解析得到多个运算指令;所述存储队列单元,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个运算指令或计算指令。通过以上方法,本公开可以提高相关产品在进行神经网络模型的运算时的运算效率。

Description

运算装置及相关产品
技术领域
本公开涉及数据处理技术领域,特别是涉及一种运算装置及相关产品。
背景技术
在人工智能技术领域,神经网络算法是最近非常流行的一种机器学习算法,在各种领域中都取得了非常好的效果,比如图像识别,语音识别,自然语言处理等。随着神经网络算法的发展,算法的复杂度也越来越高,为了提高识别度,模型的规模也在逐渐增大。用GPU和CPU处理起这些大规模的模型,要花费大量的计算时间,并且耗电量很大。
发明内容
基于此,有必要针对上述技术问题,提供一种能够减小计算量、节约计算时间、节能的运算装置及相关产品。
根据本公开的一方面,提供了一种运算装置,所述运算装置包括:主指令处理单元、主功能单元、从指令处理单元、以及从功能单元,
其中,所述主指令处理单元用于在接收到输入指令后,根据所述输入指令向所述主功能单元发送第一控制信号;
所述主功能单元用于根据所述第一控制信号将输入数据的winograd正变换拆解为求和运算,并进行计算得到所述输入数据的winograd正变换结果,向所述从功能单元发送所述输入数据的winograd正变换结果,
其中,所述输入数据的winograd正变换结果包括输入神经元的winograd正变换结果;
所述主指令处理单元还用于向所述从指令处理单元发送第二控制信号,所述从指令处理单元用于将所述第二控制信号发送给从功能单元;
所述从功能单元用于根据所述第二控制信号对输入神经元的winograd正变换结果和权值的winograd正变换结果进行对位乘得到对位乘结果,将所述对位乘结果的winograd逆变换拆解为求和运算,并进行计算得到所述输入数据的winograd卷积结果。在一种可能的实现方式中,
根据本公开的另一方面,提供了一种人工智能芯片,所述芯片包括如上所述的运算装置
根据本公开的另一方面,提供了一种电子设备,其特征在于,所述电子设备包括如上所述的人工智能芯片。
根据本公开的运算装置,通过将输入数据的winograd正变换拆解为求和运算,进行计算得到所述输入数据的winograd正变换结果,所述输入数据的winograd正变换结果包括输入神经元的winograd正变换结果,然后对进行输入神经元的winograd正变换结果和权值的winograd正变换结果对位乘得到对位乘结果,通过将对位乘结果的winograd逆变换拆解为求和运算,并进行计算得到所述输入数据的winograd卷积结果。根据本公开的运算装置,将乘法运算拆解为求和运算可以节约计算时间、减少能耗。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出根据本公开一实施例的运算装置的框图;
图2示出根据本公开一实施例的根据第一子张量计算得到输入数据的winograd正变换结果的流程图;
图3示出根据本公开一实施例的运算装置的框图;
图4示出根据本公开一实施例的对对位乘结果进行winograd逆变换的流程图;
图5示出根据本公开一实施例的处理器的示意图;
图6示出根据本公开实施例的板卡的结构框图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
应当理解,本公开的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本公开的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本公开说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本公开。如在本公开说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本公开说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
winograd卷积是一种基于多项式插值算法的卷积加速实现方式。它通过对卷积操作的两个输入:神经元、权值进行一定规模切分后分别进行线性变换(winograd正变换),再将变换后的神经元和权值进行对位乘法,最后对对位乘法结果再次进行线性变换(winograd逆变换)得到与原卷积操作等价的卷积结果。
winograd变换的表达式如下所示:
对于一维的神经元和权值:S=AT((Gg)⊙(BTd))
对于二维的神经元和权值:S=AT((GgGT)⊙(BTdB))A
其中,g表示权值,G表示权值对应的左乘正变换矩阵,GT表示权值对应的右乘正变换矩阵,d表示输入神经元,B表示输入神经元对应的右乘正变换矩阵,BT表示输入神经元对应的左乘正变换矩阵,⊙表示对位乘运算,A表示右乘逆变换矩阵,AT表示左乘逆变换矩阵。对于不同维度的输入神经元,都有与其相对应的B和BT;同样的,对于不同维度的权值,都有与其相对应的G和GT
通过winograd卷积替代原始卷积操作能够带来硬件能效比和运算时间上的较大收益,同时也可以在不增加、或者增加较少的硬件开销的情况下实现更高的神经网络性能。但是,winograd卷积的弊端仍然较为明显,大量的乘法运算在计算过程中仍然消耗较长的运算时间。
为了解决上述技术问题,本公开提供了一种运算装置,该运算装置可以将winograd卷积过程中的乘法运算拆解为加法运算,从而节约计算时间、减少能耗。
图1示出根据本公开一实施例的运算装置的框图。如图1所示,本公开提供的运算装置可以包括主指令处理单元、主功能单元以及主内存单元,从指令处理单元、从功能单元以及从内存单元。
其中,所述主指令处理单元用于在接收到输入指令后,根据所述输入指令向所述主功能单元发送第一控制信号;
所述主功能单元用于根据所述第一控制信号将输入数据的winograd正变换拆解为求和运算,并进行计算得到所述输入数据的winograd正变换结果,向所述从功能单元发送所述输入数据的winograd正变换结果,
其中,所述输入数据的winograd正变换结果包括输入神经元的winograd正变换结果;
所述主指令处理单元还用于向所述从指令处理单元发送第二控制信号,所述从指令处理单元用于将所述第二控制信号发送给从功能单元;
所述从功能单元用于根据所述第二控制信号对输入神经元的winograd正变换结果和权值的winograd正变换结果进行对位乘得到对位乘结果,将所述对位乘结果的winograd逆变换拆解为求和运算,并进行计算得到所述输入数据的winograd卷积结果。
根据本公开的运算装置,通过将输入数据的winograd正变换拆解为求和运算,进行计算得到所述输入数据的winograd正变换结果,所述输入数据的winograd正变换结果包括输入神经元的winograd正变换结果,然后对进行输入神经元的winograd正变换结果和权值的winograd正变换结果对位乘得到对位乘结果,通过将对位乘结果的winograd逆变换拆解为求和运算,并进行计算得到所述输入数据的winograd卷积结果。根据本公开的运算装置,将乘法运算拆解为求和运算可以节约计算时间、减少能耗。
其中,上述的输入指令可以是指“WINO_CONV”指令,包含winograd正变换、对位乘和winograd逆变换的过程。输入指令中可以携带有输入指令对应的操作以及操作数的信息,操作数的信息可以包括:操作数的地址信息、操作数的尺寸等。举例来说,可以包括输入神经元的地址信息、权值的地址信息以及得到的输出操作数(下一层的输入操作数,或者说下一层的输入神经元)要存储的地址信息等等。
对于神经网络中的任意一层,该层的输入数据可以包括输入神经元,该层的输入神经元可以是上一层的输出结果,对于神经网络中的第一层,输入神经元可以为初始输入数据。初始输入数据可以是图像数据、声音数据或者视频数据等。
下面分别对winograd正变换、对位乘和winograd逆变换的过程进行说明。
winograd正变换
主指令处理单元还用于在接收到输入指令后,根据输入指令向所述主内存单元发送第一控制信号;所述主内存单元用于根据所述第一控制信号向所述主功能单元发送所述输入数据。
在一种可能的实现方式中,主指令处理单元接收到输入指令后,可以对输入指令进行译码、解析等,获得操作、操作数的地址信息等。然后主指令处理单元可以根据解析得到的信息向主内存单元和主功能单元发送第一控制信号。
主内存单元接收到第一控制信号后,可以根据第一控制信号获取输入数据,输入数据可以包括输入神经元等,输入数据可以是以张量形式表示的数据。以输入数据为图像数据为例,输入数据可以表示为NHWC(batch,height,width,channels)的形式,N表示图像的数量,HW可以分别表示在图像的高度和宽度方向的像素个数,C可以表示通道数,例如,C可以表示RGB(Red,Green,Blue)三个通道。需要说明的是,以上表示方式仅仅是本公开的一个示例,本公开不限于此。
主内存单元在获取输入数据后可以将输入数据发送给主功能单元。
主功能单元在接收到第一控制信号以及输入数据后,可以根据第一控制信号中的操作以及输入数据进行运算,将输入数据的winograd正变换拆解为求和运算,并进行计算得到所述输入数据的winograd正变换结果。
具体过程可以为,主功能单元用于根据所述第一控制信号将所述输入数据拆解为多个第一子张量,对所述多个第一子张量进行winograd正变换并求和得到所述输入数据的winograd正变换结果。
在一种可能的实现方式中,所述多个第一子张量的个数与所述输入数据的元素的个数相同。所述多个第一子张量中的每个第一子张量中有一个元素与所述输入数据中的对应位置的元素相同、其他元素均为0。
或者,在另一种可能的实现方式中,所述多个第一子张量的个数与所述输入数据的不为0的元素的个数相同,所述多个第一子张量中的每个第一子张量中有一个元素与所述输入数据中的对应位置的元素相同、其他元素均为0。
举例来说,假设输入神经元表示为:
输入神经元为4×4的矩阵,包括16个元素,因此,可以将输入数据拆解为16个第一子张量。
那么,按照本公开的拆解方式,16个第一子张量分别为:
每个第一子张量中有一个元素与所述输入数据中的对应位置的元素相同、其他元素均为0是指:以第一子张量d00为例,在第一行第一列位置的元素与输入神经元在第一行第一列的位置的元素相同,其他元素都为0,其他第一子张量也有相同的属性。
需要说明的是,以上拆解方式仅仅是本公开的一些示例,不以任何方式限制本公开,例如,如果输入数据中具有值为0的元素,拆解得到的第一子张量的数量可以少于输入数据的元素的个数,例如,多个第一子张量的个数与所述输入数据的不为0的元素的个数相同。
图2示出根据本公开一实施例的根据第一子张量计算得到输入数据的winograd正变换结果的流程图。如图2所示,在一种可能的实现方式中,对所述多个第一子张量进行winograd正变换并求和得到所述输入数据的winograd正变换结果,可以包括以下过程:
步骤S21,获取第一子张量对应的第一元子张量的winograd正变换结果;其中,第一子张量对应的第一元子张量为:在第一元子张量中第一位置的元素的值为1,其中,第一位置在第一元子张量中所处的位置与第一子张量中的非0元素所处的位置相同;
步骤S22,将第一子张量中不为0的元素值作为系数乘以对应的第一元子张量的winograd正变换结果,得到第一子张量的winograd正变换结果;
步骤S23,将多个第一子张量的winograd正变换结果相加得到所述输入数据的winograd正变换结果。
对于步骤S21,仍然以第一子张量d00为例,d00对应的第一原子张量可以为也就是说,第一元子张量是将第一子张量中的非0元素值提取出来,非0元素的值可以作为第一元子张量的系数。
其中,第一子张量对应的第一元子张量的winograd正变换结果可以是通过以下过程预先得到的:对于每一个第一子张量,将该第一子张量对应的第一元子张量左边乘以正变换左乘矩阵、右边乘以正变换右乘矩阵得到第一元子张量的winograd正变换结果。
对于不同尺寸的矩阵,对应的第一元子张量的形式是确定的,对应的正变换左乘矩阵和正变换右乘矩阵也是确定的。
因此,可以预先计算出第一元子张量的winograd正变换结果,具体过程如上所述。举例来说,仍然以d00为例,其对应的第一元子张量的winograd正变换结果为:
再比如,以d01为例,其对应的第一元子张量的winograd正变换结果为:
由于正变换左乘矩阵和正变换右乘矩阵的元素值都是0、±1,第一元子张量的元素值为0或1,第一元子张量的winograd正变换结果中的元素也是0、±1。因此,可以将矩阵乘操作拆解为加法操作。
计算第一元子张量的winograd正变换结果的过程涉及较多的乘法运算,通过本公开的方式,可以将预先计算好的各种规模的第一元子张量的winograd正变换结果保存在运算装置中,这样,在实际的运算过程中,可以直接获取,而不需要重复运算,从而缩短计算时间、节约计算资源。
在获得第一子张量对应的第一元子张量的winograd正变换结果,可以将第一子张量中不为0的元素值乘以对应的第一元子张量的winograd正变换结果,就可以得到第一子张量的winograd正变换结果。举例来说,仍然以d00为例,其对应的winograd正变换结果为:
再比如,以d01为例,d01的winograd正变换结果为
通过以上过程计算得到所有第一子张量的winograd正变换结果,将多个第一子张量的winograd正变换结果相加,即可得到所述输入数据的winograd正变换结果。
由于转换得到的第一元子张量的winograd正变换结果中的元素也是0、±1,因此,上述等式(1)、(2)右侧仅涉及求和运算。
根据本公开上述实施方式可知,通过将输入数据进行拆解得到多个第一子张量,根据预先计算得到的第一子张量对应的第一元子张量的winograd正变换结果以及第一子张量的非0元素值即可进行求和运算得到输入数据的winograd正变换结果。根据本公开的上述运算装置,将乘法运算拆解为求和运算可以节约计算时间、减少能耗。
在一种可能的实现方式中,所述主功能单元包括缓存模块,所述主功能单元将所述输入数据的winograd正变换结果存储到所述缓存模块中。
图3示出根据本公开一实施例的运算装置的框图。如图3所示,所述主功能单元可以包括主处理模块以及缓存模块,主处理模块可以用于执行上文提到的所有实施方式的主功能单元根据所述第一控制信号将输入数据的winograd正变换拆解为求和运算,并进行计算得到所述输入数据的winograd正变换结果。主功能单元可以将所述输入数据的winograd正变换结果存储到所述缓存模块中,由缓存模块将输入数据的winograd正变换结果发送给从功能单元,从而便于运算装置的从功能单元对winograd正变换结果进行对位乘以及winograd逆变换的过程。
如图3所示,主指令处理单元还用于向从指令处理单元发送第二控制信号,比如说,在winograd正变换过程完成后,输入数据的winograd正变换结果已就绪,主指令处理单元可以根据WINO_MIT指令向从指令处理单元发送第二控制信号,主功能单元(缓存模块)还用于将输入数据的winograd正变换结果发送给从功能单元。第二控制信号可以用于指示从指令处理单元控制从功能单元对输入数据的winograd正变换结果进行进一步的处理。
对位乘、winograd逆变换
具体地,所述从指令处理单元用于接收主指令处理单元发送的第二控制信号,并将所述第二控制信号发送给所述从功能单元和从内存单元。从内存单元用于根据所述第二控制信号向所述从功能单元发送权值的winograd正变换结果。从功能单元用于接收主功能单元发送的输入数据的winograd正变换结果,所述输入数据的winograd正变换结果包括输入神经元的winograd正变换结果。
其中,所述权值的winograd正变换结果可以是预先计算好的,权值的winograd正变换结果的计算方式可以采用传统的矩阵乘法运算,也可以参照上文提到的拆解为求和运算进行计算得到的。
比如说,将所述权值拆解为多个第一子张量,对所述多个第一子张量进行winograd正变换并求和得到权值的winograd正变换结果。
假设权值可以表示为:
权值为3×3的矩阵,包括9个元素,因此,可以将输入数据拆解为9个第一子张量。
那么,按照本公开的拆解方式,9个第一子张量分别为:
同样的,每个第一子张量中有一个元素与权值中的对应位置的元素相同、其他元素均为0。
参见步骤S21-步骤S23的过程,可以计算得到权值的winograd正变换结果,不在赘述。
所述功能单元用于根据所述第二控制信号对输入神经元的winograd正变换结果和权值的winograd正变换结果进行对位乘得到对位乘结果,将所述对位乘结果的winograd逆变换拆解为求和运算,并进行计算得到所述输入数据的winograd卷积结果。
其中,对位乘可以是指对两个张量对应位置的数据相乘得到的数据作为对位乘结果中相应位置的值。
假设输入神经元的winograd正变换结果BTd4×4B可以表示为:
权值的winograd正变换结可以表示为:/>
对位乘结果可以为:
输入数据的winograd卷积结果可以表示为S4×4=AT(G4×4⊙D4×4)A,本公开的从功能处理单元可以将AT(G4×4⊙D4×4)A拆解为求和运算,并进行计算得到所述输入数据的winograd卷积结果,从而可以进一步节约计算时间、减少能耗。
具体过程与上述winograd正变换拆解的方式类似,在一种可能的实现方式中,所述从功能单元用于将所述对位乘结果拆解为多个第二子张量,对所述多个第二子张量进行winograd逆变换并求和得到所述输入数据的winograd卷积结果。
在一种可能的实现方式中,所述多个第二子张量的个数与对位乘结果的元素的个数相同,所述多个第二子张量中的每个第二子张量中有一个元素与对位乘结果中的对应位置的元素相同、其他元素均为0。
在一种可能的实现方式中,所述多个第二子张量的个数与对位乘结果的非0元素的个数相同,所述多个第二子张量中的每个第二子张量中有一个元素与对位乘结果中的对应位置的元素相同、其他元素均为0。
假设对位乘结果为:
将对位乘结果拆解为多个第二子张量,例如可以拆解为16个,16个第二子张量分别为:
在拆解完后,可以对所述多个第二子张量进行winograd逆变换并求和得到所述输入数据的winograd卷积结果。
图4示出根据本公开一实施例的对对位乘结果进行winograd逆变换的流程图。如图4所示,在一种可能的实现方式中,对所述多个第二子张量进行winograd逆变换并求和得到所述输入数据的winograd卷积结果,可以包括以下过程:
步骤S41,获取第二子张量对应的第二元子张量的winograd逆变换结果;其中,第二子张量对应的第二元子张量为:在第二元子张量中第二位置的元素的值为1,其中,第二位置在第二元子张量中所处的位置与第二子张量中的非0元素所处的位置相同;
步骤S42,将第二子张量中不为0的元素值作为系数乘以对应的第二元子张量的winograd逆变换结果,得到第二子张量的winograd逆变换结果;
步骤S43,将多个第二子张量的winograd逆变换结果相加得到所述输入数据的winograd卷积结果。
第二子张量对应的第二元子张量确定的方式和上文中第一元子张量确定的方式相同,不再赘述。其中,第二元子张量的winograd逆变换结果是通过以下过程预先得到的:对于每一个第二子张量,将该第二子张量对应的第二元子张量左边乘以逆变换左乘矩阵、右边乘以逆变换右乘矩阵得到第二元子张量的winograd逆变换结果。
对于不同尺寸的矩阵,对应的第二元子张量的形式是确定的,对应的逆变换左乘矩阵和逆变换右乘矩阵也是确定的。因此,可以预先计算出第二元子张量的winograd逆变换结果,具体过程如上所述。对于本文上述列举的示例,逆变换左乘矩阵为2×4的矩阵,例如可以为:
逆变换右乘矩阵为4×2的矩阵,例如可以为
逆变换矩阵的维度可以根据输入神经元的维度以及权值的维度和卷积步长确定,上文仅仅是一个示例,不以任何方式限制本公开。
逆变换矩阵由构成,因此逆变换的矩阵乘操作可以拆解为加法和移位操作实现。将逆变换矩阵乘以第二元子张量即可得到第二元子张量的winograd逆变换结果,第二元子张量的winograd逆变换结果内的元素值由/>等构成,分数可以通过简单的移位操作计算,相比于乘法操作仍然可以节省计算时间。
对于步骤S42和S43的具体过程可以参照上文的步骤S22和S23,只不过第二元子张量的winograd逆变换结果不完全由0、±1,但分数可以通过简单的移位操作计算,相比于乘法操作,本公开将普通的逆变换过程拆解后仍然可以实现节约计算时间、减少能耗的效果。
根据本公开上述实施方式可知,通过将对位乘结果进行拆解得到多个第二子张量,根据预先计算得到的第二子张量对应的第二元子张量的winograd逆变换结果以及第二子张量的非0元素值即可进行求和运算得到输入数据的winograd卷积结果。根据本公开的上述运算装置,将乘法运算拆解为求和运算可以节约计算时间、减少能耗。
在一种可能的实现方式中,如图3所示,所述从功能单元可以包括对位乘模块和逆变换模块,其中,对位乘模块可以用于执行上文中的对位乘操作得到对位乘结果,可以将对位乘结果发送给逆变换模块,由逆变换模块执行上文所述的将所述对位乘结果的winograd逆变换拆解为求和运算,并进行计算得到所述输入数据的winograd卷积结果。
在一种可能的实现方式中,所述从功能单元还用于对所述输入数据的winograd卷积结果进行后处理,所述后处理包括按位取整操作和转数操作。
其中,取整操作可以根据设置的取整的位数对输入数据的winograd卷积结果进行取整。转数操作可以是指对输入数据的winograd卷积结果的摆放方式进行处理,例如,可以根据存储的需求改变输入数据的winograd卷积结果的摆放方式。通过对输入数据的winograd卷积结果的后处理更有利于后续的操作和计算。
在一种可能的实现方式中,所述从功能单元还用于将所述输入数据的winograd卷积结果发送给所述主内存单元,作为下一层卷积运算的输入神经元。
根据本公开实施例的运算装置可应用于处理器中,该处理器可以是通用处理器,例如CPU(CentralProcessing Unit,中央处理器),也可以是用于执行人工智能运算的人工智能处理器(IPU)。人工智能运算可包括机器学习运算,类脑运算等。其中,机器学习运算包括神经网络运算、k-means运算、支持向量机运算等。该人工智能处理器可例如包括GPU(Graphics Processing Unit,图形处理单元)、NPU(Neural-Network Processing Unit,神经网络处理单元)、DSP(Digital Signal Process,数字信号处理单元)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)芯片中的一种或组合。本公开对处理器的具体类型不作限制。
在一种可能的实现方式中,本公开中所提及的处理器可包括多个处理单元,每个处理单元可以独立运行所分配到的各种任务,如:卷积运算任务、池化任务或全连接任务等。本公开对处理单元及处理单元所运行的任务不作限制。
图5示出根据本公开一实施例的处理器的示意图。参阅图5,该处理器用于执行机器学习计算,该处理器包括:控制器单元141和运算单元142,其中,控制器单元141与运算单元142连接,该运算单元142包括:一个主处理电路和多个从处理电路;
控制器单元141,用于获取输入数据以及计算指令;控制器单元141获取的计算指令可以是由第一处理器对算子进行融合后的第一融合集合中的一个或多个算子。
在一种可选方案中,一个主处理电路和多个从处理电路可以为树型结构、H型结构或者脉冲阵列机结构,本公开对主处理电路和从处理电路之前的连接方式不作限定。
在一种可选方案中,具体的,获取输入数据以及计算指令方式可以通过数据输入输出单元得到,该数据输入输出单元具体可以为一个或多个数据I/O接口或I/O引脚。
上述计算指令包括但不限于:正向运算指令或反向训练指令,或其他神经网络运算指令等等,例如卷积运算指令,或者也可以是上文所述的“WINO_CONV”指令,本申请具体实施方式并不限制上述计算指令的具体表现形式。
控制器单元141,还用于解析该计算指令得到多个运算指令,将该多个运算指令以及所述输入数据发送给所述主处理电路;
主处理电路101,用于对所述输入数据执行前序处理以及与所述多个从处理电路之间传输数据以及运算指令;
多个从处理电路102,用于依据从所述主处理电路传输的数据以及运算指令并行执行中间运算得到多个中间结果,并将多个中间结果传输给所述主处理电路;
主处理电路101,用于对所述多个中间结果执行后续处理得到所述计算指令的计算结果。
本申请提供的技术方案将运算单元设置成一主多从结构,对于正向运算的计算指令,其可以将依据正向运算的计算指令将数据进行拆分,这样通过多个从处理电路即能够对计算量较大的部分进行并行运算,从而提高运算速度,节省运算时间,进而降低功耗。
可选的,上述机器学习计算具体可以包括:人工神经网络运算,上述输入数据具体可以包括:输入神经元数据和权值数据。上述计算结果具体可以为:人工神经网络运算的结果即输出神经元数据。
对于神经网络中的运算可以为神经网络中的一层的运算,对于多层神经网络,其实现过程是,在正向运算中,当上一层人工神经网络执行完成之后,下一层的运算指令会将运算单元中计算出的输出神经元作为下一层的输入神经元进行运算(或者是对该输出神经元进行某些操作再作为下一层的输入神经元),同时,将权值也替换为下一层的权值;在反向运算中,当上一层人工神经网络的反向运算执行完成后,下一层运算指令会将运算单元中计算出的输入神经元梯度作为下一层的输出神经元梯度进行运算(或者是对该输入神经元梯度进行某些操作再作为下一层的输出神经元梯度),同时将权值替换为下一层的权值。
上述机器学习计算还可以包括支持向量机运算,k-近邻(k-nn)运算,k-均值(k-means)运算,主成分分析运算等等。为了描述的方便,下面以人工神经网络运算为例来说明机器学习计算的具体方案。
对于人工神经网络运算,如果该人工神经网络运算具有多层运算,多层运算的输入神经元和输出神经元并非是指整个神经网络的输入层中神经元和输出层中神经元,而是对于网络中任意相邻的两层,处于网络正向运算下层中的神经元即为输入神经元,处于网络正向运算上层中的神经元即为输出神经元。以卷积神经网络为例,设一个卷积神经网络有层,,对于第层和第层来说,我们将第层称为输入层,其中的神经元为所述输入神经元,第层称为输出层,其中的神经元为所述输出神经元。即除最顶层外,每一层都可以作为输入层,其下一层为对应的输出层。
可选的,上述处理器还可以包括:该存储单元140和直接内存访问单元50,存储单元140可以包括:寄存器、缓存中的一个或任意组合,具体的,所述缓存,用于存储所述计算指令;所述寄存器,用于存储所述输入数据和标量;所述缓存为高速暂存缓存。直接内存访问单元50用于从存储单元10读取或存储数据。
可选的,该控制器单元包括:指令存储单元410、指令处理单元411和存储队列单元413;
指令存储单元410,用于存储所述人工神经网络运算关联的计算指令;
所述指令处理单元411,用于对所述计算指令解析得到多个运算指令;
存储队列单元413,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个运算指令或计算指令。
举例说明,在一个可选的技术方案中,主运算处理电路也可以包括一个控制器单元,该控制器单元可以包括主指令处理单元,具体用于将指令译码成微指令。当然在另一种可选方案中,从运算处理电路也可以包括另一个控制器单元,该另一个控制器单元包括从指令处理单元,具体用于接收并处理微指令。上述微指令可以为指令的下一级指令,该微指令可以通过对指令的拆分或解码后获得,能被进一步解码为各部件、各单元或各处理电路的控制信号。
在一种可选方案中,该计算指令的结构可以如下表所示。
操作码 寄存器或立即数 寄存器/立即数
上表中的省略号表示可以包括多个寄存器或立即数。
在另一种可选方案中,该计算指令可以包括:一个或多个操作域以及一个操作码。该计算指令可以包括神经网络运算指令。以神经网络运算指令为例,如表1所示,其中,寄存器号0、寄存器号1、寄存器号2、寄存器号3、寄存器号4可以为操作域。其中,每个寄存器号0、寄存器号1、寄存器号2、寄存器号3、寄存器号4可以是一个或者多个寄存器的号码。
上述寄存器可以为片外存储器,当然在实际应用中,也可以为片内存储器,用于存储数据,该数据具体可以为n维数据,n为大于等于1的整数,例如,n=1时,为1维数据,即向量,如n=2时,为2维数据,即矩阵,如n=3或3以上时,为多维张量。
可选的,该控制器单元还可以包括:
所述依赖关系处理单元412,用于在具有多个运算指令时,确定第一运算指令与所述第一运算指令之前的第零运算指令是否存在关联关系,如所述第一运算指令与所述第零运算指令存在关联关系,则将所述第一运算指令缓存在所述指令存储单元内,在所述第零运算指令执行完毕后,从所述指令存储单元提取所述第一运算指令传输至所述运算单元;
所述确定该第一运算指令与第一运算指令之前的第零运算指令是否存在关联关系包括:
依据所述第一运算指令提取所述第一运算指令中所需数据(例如矩阵)的第一存储地址区间,依据所述第零运算指令提取所述第零运算指令中所需矩阵的第零存储地址区间,如所述第一存储地址区间与所述第零存储地址区间具有重叠的区域,则确定所述第一运算指令与所述第零运算指令具有关联关系,如所述第一存储地址区间与所述第零存储地址区间不具有重叠的区域,则确定所述第一运算指令与所述第零运算指令不具有关联关系。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本公开并不受所描述的动作顺序的限制,因为依据本公开,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本公开所必须的。
进一步需要说明的是,虽然流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
应该理解,上述的装置实施例仅是示意性的,本公开的装置还可通过其它的方式实现。例如,上述实施例中所述单元/模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如,多个单元、模块或组件可以结合,或者可以集成到另一个系统,或一些特征可以忽略或不执行。
另外,若无特别说明,在本公开各个实施例中的各功能单元/模块可以集成在一个单元/模块中,也可以是各个单元/模块单独物理存在,也可以两个或两个以上单元/模块集成在一起。上述集成的单元/模块既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
所述集成的单元/模块如果以硬件的形式实现时,该硬件可以是数字电路,模拟电路等等。硬件结构的物理实现包括但不局限于晶体管,忆阻器等等。若无特别说明,所述人工智能处理器可以是任何适当的硬件处理器,比如CPU、GPU、FPGA、DSP和ASIC等等。若无特别说明,所述存储单元可以是任何适当的磁存储介质或者磁光存储介质,比如,阻变式存储器RRAM(Resistive 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接口传递至所述芯片,实现数据转移。优选的,当采用PCIE3.0X 16接口传输时,理论带宽可达到16000MB/s。在另一个实施例中,所述接口装置还可以是其他的接口,本公开并不限制上述其他的接口的具体表现形式,所述接口单元能够实现转接功能即可。另外,所述人工智能芯片的计算结果仍由所述接口装置传送回外部设备(例如服务器)。
所述控制器件与所述人工智能芯片电连接。所述控制器件用于对所述人工智能芯片的状态进行监控。具体的,所述人工智能芯片与所述控制器件可以通过SPI接口电连接。所述控制器件可以包括单片机(Micro Controller Unit,MCU)。如所述人工智能芯片可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,所述人工智能芯片可以处于多负载和轻负载等不同的工作状态。通过所述控制装置可以实现对所述人工智能芯片中多个处理芯片、多个处理和或多个处理电路的工作状态的调控。
在一种可能的实现方式中,公开了一种电子设备,其包括了上述人工智能芯片。电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
本公开实施例还提出一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述方法。计算机可读存储介质可以是非易失性计算机可读存储介质。
本公开实施例还提出一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为调用所述存储器存储的指令,以执行上述方法。
依据以下条款可更好地理解前述内容:
条款A1.一种运算装置,所述运算装置包括:主指令处理单元、主功能单元、从指令处理单元、以及从功能单元,
其中,所述主指令处理单元用于在接收到输入指令后,根据所述输入指令向所述主功能单元发送第一控制信号;
所述主功能单元用于根据所述第一控制信号将输入数据的winograd正变换拆解为求和运算,并进行计算得到所述输入数据的winograd正变换结果,向所述从功能单元发送所述输入数据的winograd正变换结果,
其中,所述输入数据的winograd正变换结果包括输入神经元的winograd正变换结果;
所述主指令处理单元还用于向所述从指令处理单元发送第二控制信号,所述从指令处理单元用于将所述第二控制信号发送给从功能单元;
所述从功能单元用于根据所述第二控制信号对输入神经元的winograd正变换结果和权值的winograd正变换结果进行对位乘得到对位乘结果,将所述对位乘结果的winograd逆变换拆解为求和运算,并进行计算得到所述输入数据的winograd卷积结果。
条款A2.根据条款A1所述的运算装置,所述主功能单元用于根据所述第一控制信号将所述输入数据拆解为多个第一子张量,对所述多个第一子张量进行winograd正变换并求和得到所述输入数据的winograd正变换结果。
条款A3.根据条款A2所述的运算装置,所述输入数据以张量形式表示,所述多个第一子张量的个数与所述输入数据的不为0的元素的个数相同,所述多个第一子张量中的每个第一子张量中有一个元素与所述输入数据中的对应位置的元素相同、其他元素均为0。
条款A4.根据条款A3所述的运算装置,对所述多个第一子张量进行winograd正变换并求和得到所述输入数据的winograd正变换结果,包括:
获取第一子张量对应的第一元子张量的winograd正变换结果;其中,第一子张量对应的第一元子张量为:在第一元子张量中第一位置的元素的值为1,其中,第一位置在第一元子张量中所处的位置与第一子张量中的非0元素所处的位置相同;
将第一子张量中不为0的元素值作为系数乘以对应的第一元子张量的winograd正变换结果,得到第一子张量的winograd正变换结果;
将多个第一子张量的winograd正变换结果相加得到所述输入数据的winograd正变换结果。
条款A5.根据条款A4所述的运算装置,第一子张量对应的第一元子张量的winograd正变换结果是通过以下过程预先得到的:
对于每一个第一子张量,将该第一子张量对应的第一元子张量左边乘以正变换左乘矩阵、右边乘以正变换右乘矩阵得到第一元子张量的winograd正变换结果。
条款A6.根据条款A2所述的运算装置,所述主功能单元包括缓存模块,所述主功能单元将所述输入数据的winograd正变换结果存储到所述缓存模块中,所述缓存模块还用于向所述从功能单元发送所述输入数据的winograd正变换结果。
条款A7.根据条款A1所述的运算装置,所述运算装置包括:主内存单元,
所述主指令处理单元用于在接收到输入指令后,根据输入指令向所述主内存单元发送第一控制信号;
所述主内存单元用于根据所述第一控制信号向所述主功能单元发送所述输入数据。
条款A8.根据条款A1所述的运算装置,所述从功能单元用于将所述对位乘结果拆解为多个第二子张量,对所述多个第二子张量进行winograd逆变换并求和得到所述输入数据的winograd卷积结果。
条款A9.根据条款A8所述的运算装置,所述多个第二子张量的个数与对位乘结果的不为0的元素的个数相同,所述多个第二子张量中的每个第二子张量中有一个元素与对位乘结果中的对应位置的元素相同、其他元素均为0。
条款A10.根据条款A9所述的运算装置,对所述多个第二子张量进行winograd逆变换并求和得到所述输入数据的winograd卷积结果,包括:
获取第二子张量对应的第二元子张量的winograd逆变换结果;其中,第二子张量对应的第二元子张量为:在第二元子张量中第二位置的元素的值为1,其中,第二位置在第二元子张量中所处的位置与第二子张量中的非0元素所处的位置相同;
将第二子张量中不为0的元素值作为系数乘以对应的第二元子张量的winograd逆变换结果,得到第二子张量的winograd逆变换结果;
将多个第二子张量的winograd逆变换结果相加得到所述输入数据的winograd卷积结果。
条款A11.根据条款A10所述的运算装置,第二元子张量的winograd逆变换结果是通过以下过程预先得到的:
对于每一个第二子张量,将该第二子张量对应的第二元子张量左边乘以逆变换左乘矩阵、右边乘以逆变换右乘矩阵得到第二元子张量的winograd逆变换结果。
条款A12.根据条款A1所述的运算装置,所述运算装置还包括:从内存单元,
从指令处理单元还用于将所述第二控制信号发送给从内存单元;
从内存单元用于根据所述第二控制信号向所述从功能单元发送权值的winograd正变换结果。
条款A13.根据条款A7-A12任意一项所述的运算装置,所述运算装置还包括主内存单元,所述从功能单元还用于将所述输入数据的winograd卷积结果发送给所述主内存单元。
条款A14.根据条款A7-A12任意一项所述的运算装置,所述从功能单元还用于对所述输入数据的winograd卷积结果进行后处理,所述后处理包括按位取整操作和转数操作。
条款A14、一种人工智能芯片,所述芯片包括如条款A1-A14中任意一项所述的运算装置。
条款A15、一种电子设备,所述电子设备包括如条款A14所述的人工智能芯片。
以上对本公开实施例进行了详细介绍,本文中应用了具体个例对本公开的原理及实施方式进行了阐述,以上实施例的说明仅用于帮助理解本公开的方法及其核心思想。同时,本领域技术人员依据本公开的思想,基于本公开的具体实施方式及应用范围上做出的改变或变形之处,都属于本公开保护的范围。综上所述,本说明书内容不应理解为对本公开的限制。

Claims (14)

1.一种运算装置,其特征在于,所述运算装置包括:主指令处理单元、主功能单元、从指令处理单元、以及从功能单元,
其中,所述主指令处理单元用于在接收到输入指令后,根据所述输入指令向所述主功能单元发送第一控制信号;所述主功能单元用于根据所述第一控制信号将输入数据的winograd正变换拆解为求和运算,并进行计算得到所述输入数据的winograd正变换结果,向所述从功能单元发送所述输入数据的winograd正变换结果,其中,所述输入数据的winograd正变换结果包括输入神经元的winograd正变换结果;所述主功能单元还用于根据所述第一控制信号将所述输入数据拆解为多个第一子张量,对所述多个第一子张量进行winograd正变换并求和得到所述输入数据的winograd正变换结果;
所述主指令处理单元还用于向所述从指令处理单元发送第二控制信号,所述从指令处理单元用于将所述第二控制信号发送给从功能单元;
所述从功能单元用于根据所述第二控制信号对输入神经元的winograd正变换结果和权值的winograd正变换结果进行对位乘得到对位乘结果,将所述对位乘结果的winograd逆变换拆解为求和运算,并进行计算得到所述输入数据的winograd卷积结果;
其中,对所述多个第一子张量进行winograd正变换并求和得到所述输入数据的winograd正变换结果,包括:获取第一子张量对应的第一元子张量的winograd正变换结果;其中,第一子张量对应的第一元子张量为:在第一元子张量中第一位置的元素的值为1,其中,第一位置在第一元子张量中所处的位置与第一子张量中的非0元素所处的位置相同;将第一子张量中不为0的元素值作为系数乘以对应的第一元子张量的winograd正变换结果,得到第一子张量的winograd正变换结果;将多个第一子张量的winograd正变换结果相加得到所述输入数据的winograd正变换结果。
2.根据权利要求1所述的运算装置,其特征在于,所述输入数据以张量形式表示,所述多个第一子张量的个数与所述输入数据的不为0的元素的个数相同,所述多个第一子张量中的每个第一子张量中有一个元素与所述输入数据中的对应位置的元素相同、其他元素均为0。
3.根据权利要求1所述的运算装置,其特征在于,第一子张量对应的第一元子张量的winograd正变换结果是通过以下过程预先得到的:
对于每一个第一子张量,将该第一子张量对应的第一元子张量左边乘以正变换左乘矩阵、右边乘以正变换右乘矩阵得到第一元子张量的winograd正变换结果。
4.根据权利要求1所述的运算装置,其特征在于,所述主功能单元包括缓存模块,所述主功能单元将所述输入数据的winograd正变换结果存储到所述缓存模块中,所述缓存模块还用于向所述从功能单元发送所述输入数据的winograd正变换结果。
5.根据权利要求1所述的运算装置,其特征在于,所述运算装置包括:主内存单元,
所述主指令处理单元用于在接收到输入指令后,根据输入指令向所述主内存单元发送第一控制信号;
所述主内存单元用于根据所述第一控制信号向所述主功能单元发送所述输入数据。
6.根据权利要求1所述的运算装置,其特征在于,所述从功能单元用于将所述对位乘结果拆解为多个第二子张量,对所述多个第二子张量进行winograd逆变换并求和得到所述输入数据的winograd卷积结果。
7.根据权利要求6所述的运算装置,其特征在于,所述多个第二子张量的个数与对位乘结果的不为0的元素的个数相同,所述多个第二子张量中的每个第二子张量中有一个元素与对位乘结果中的对应位置的元素相同、其他元素均为0。
8.根据权利要求7所述的运算装置,其特征在于,对所述多个第二子张量进行winograd逆变换并求和得到所述输入数据的winograd卷积结果,包括:
获取第二子张量对应的第二元子张量的winograd逆变换结果;其中,第二子张量对应的第二元子张量为:在第二元子张量中第二位置的元素的值为1,其中,第二位置在第二元子张量中所处的位置与第二子张量中的非0元素所处的位置相同;
将第二子张量中不为0的元素值作为系数乘以对应的第二元子张量的winograd逆变换结果,得到第二子张量的winograd逆变换结果;
将多个第二子张量的winograd逆变换结果相加得到所述输入数据的winograd卷积结果。
9.根据权利要求8所述的运算装置,其特征在于,第二元子张量的winograd逆变换结果是通过以下过程预先得到的:
对于每一个第二子张量,将该第二子张量对应的第二元子张量左边乘以逆变换左乘矩阵、右边乘以逆变换右乘矩阵得到第二元子张量的winograd逆变换结果。
10.根据权利要求1所述的运算装置,其特征在于,所述运算装置还包括:从内存单元,
从指令处理单元还用于将所述第二控制信号发送给从内存单元;
从内存单元用于根据所述第二控制信号向所述从功能单元发送权值的winograd正变换结果。
11.根据权利要求5-10任意一项所述的运算装置,其特征在于,所述运算装置还包括主内存单元,所述从功能单元还用于将所述输入数据的winograd卷积结果发送给所述主内存单元。
12.根据权利要求5-10任意一项所述的运算装置,其特征在于,所述从功能单元还用于对所述输入数据的winograd卷积结果进行后处理,所述后处理包括按位取整操作和转数操作。
13.一种人工智能芯片,其特征在于,所述芯片包括如权利要求1-12中任意一项所述的运算装置。
14.一种电子设备,其特征在于,所述电子设备包括如权利要求13所述的人工智能芯片。
CN201911060683.9A 2019-11-01 2019-11-01 运算装置及相关产品 Active CN112766473B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201911060683.9A CN112766473B (zh) 2019-11-01 2019-11-01 运算装置及相关产品
PCT/CN2020/114057 WO2021082747A1 (zh) 2019-11-01 2020-09-08 运算装置及相关产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911060683.9A CN112766473B (zh) 2019-11-01 2019-11-01 运算装置及相关产品

Publications (2)

Publication Number Publication Date
CN112766473A CN112766473A (zh) 2021-05-07
CN112766473B true CN112766473B (zh) 2023-12-05

Family

ID=75692128

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911060683.9A Active CN112766473B (zh) 2019-11-01 2019-11-01 运算装置及相关产品

Country Status (2)

Country Link
CN (1) CN112766473B (zh)
WO (1) WO2021082747A1 (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108229654A (zh) * 2016-12-14 2018-06-29 上海寒武纪信息科技有限公司 神经网络卷积运算装置及方法
CN109325591A (zh) * 2018-09-26 2019-02-12 中国科学院计算技术研究所 面向Winograd卷积的神经网络处理器
CN110163349A (zh) * 2018-02-12 2019-08-23 上海寒武纪信息科技有限公司 一种网络模型的计算方法及装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108229656A (zh) * 2016-12-14 2018-06-29 上海寒武纪信息科技有限公司 神经网络运算装置及方法
CN107168928A (zh) * 2017-05-03 2017-09-15 荣成市鼎通电子信息科技有限公司 无需重新排序的八点Winograd傅里叶变换器
US10990648B2 (en) * 2017-08-07 2021-04-27 Intel Corporation System and method for an optimized winograd convolution accelerator
CN110147249B (zh) * 2018-02-12 2021-02-09 上海寒武纪信息科技有限公司 一种网络模型的计算方法及装置
CN109117187A (zh) * 2018-08-27 2019-01-01 郑州云海信息技术有限公司 卷积神经网络加速方法及相关设备
CN110096309B (zh) * 2018-11-14 2020-04-14 上海寒武纪信息科技有限公司 运算方法、装置、计算机设备和存储介质
CN110288086B (zh) * 2019-06-13 2023-07-21 天津大学 一种基于Winograd的可配置卷积阵列加速器结构

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108229654A (zh) * 2016-12-14 2018-06-29 上海寒武纪信息科技有限公司 神经网络卷积运算装置及方法
CN110163349A (zh) * 2018-02-12 2019-08-23 上海寒武纪信息科技有限公司 一种网络模型的计算方法及装置
CN109325591A (zh) * 2018-09-26 2019-02-12 中国科学院计算技术研究所 面向Winograd卷积的神经网络处理器

Also Published As

Publication number Publication date
WO2021082747A1 (zh) 2021-05-06
CN112766473A (zh) 2021-05-07

Similar Documents

Publication Publication Date Title
US11704125B2 (en) Computing device and method
JP6905573B2 (ja) 計算装置と計算方法
CN110163357B (zh) 一种计算装置及方法
WO2021082725A1 (zh) Winograd卷积运算方法及相关产品
WO2021083101A1 (zh) 数据处理方法、装置及相关产品
CN112766471B (zh) 运算装置及相关产品
CN109740730B (zh) 运算方法、装置及相关产品
CN112766473B (zh) 运算装置及相关产品
CN112784951B (zh) Winograd卷积运算方法及相关产品
CN112784207B (zh) 运算方法及相关产品
CN112784206A (zh) winograd卷积运算方法、装置、设备及存储介质
CN111222632B (zh) 计算装置、计算方法及相关产品
JP2023532573A (ja) 計算装置、集積回路チップ、ボードカード、電子機器と計算方法
CN115222027A (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