WO2021129718A1 - 神经网络运算的方法及装置、芯片和设备 - Google Patents
神经网络运算的方法及装置、芯片和设备 Download PDFInfo
- Publication number
- WO2021129718A1 WO2021129718A1 PCT/CN2020/138905 CN2020138905W WO2021129718A1 WO 2021129718 A1 WO2021129718 A1 WO 2021129718A1 CN 2020138905 W CN2020138905 W CN 2020138905W WO 2021129718 A1 WO2021129718 A1 WO 2021129718A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- arithmetic
- module
- multiplication
- addition
- modules
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Abstract
一种神经网络运算的方法、装置、芯片及其处理设备,所述方法包括至少一个运算周期,至少一个所述运算周期包括:进行多个次级乘加运算,获得多个次级乘加值,其中,每个次级乘加运算都包括多次乘加运算(S110);多个次级乘加运算后,将该多个次级乘加值进行累加运算,得到最终运算结果(S120);其中,参与所述次级乘加运算的参数、获得的次级乘加值、参与所述累加运算的参数、以及累加运算的结果均以预定精度存储在存储模块中。该装置和方法,将大批量的乘加任务分拆成几个小批量的乘加任务,可极大的降低单层神经网络的计算误差。
Description
本公开涉及人工智能技术领域,具体涉及一种神经网络运算的方法、一种神经网络运算的装置、一种神经网络处理芯片和一种计算处理设备。
当今时代,人工智能技术日新月异,澎湃发展,从各方面影响着人们的生产和生活,推动着世界的发展和进步。近几年,研究者们发现神经网络算法对处理非结构化数据非常有效,比如人脸识别,语音识别,图像分类等任务。随着这些非结构化数据的指数级增长,对处理器的算力提出巨大的需求。传统的中央处理器(CPU,Central Processing Unit)和数字信号处理器(DSP,Digital Signal Processing)已不能满足需求,亟需专业的为神经网络算法定制的处理器。开发神经网络专用处理器,提升芯片应对各种人工智能的有效算力,并且节省功耗,成为人工智能芯片领域专家们共同努力的目标。
发明内容
本公开提供一种神经网络运算的方法、一种神经网络运算的装置、一种神经网络处理芯片和一种计算处理设备。
鉴于此,本公开提供了一种神经网络运算的方法,所述方法包括至少一个运算周期,至少一个所述运算周期包括:
进行多个次级乘加运算,获得多个次级乘加值,其中,每个次级乘加运算都包括多次乘加运算;
多个次级乘加运算后,将该多个次级乘加值进行累加运算,得到最终运算结果,其中,参与所述次级乘加运算的参数、获得的次级乘加值、参与所述累加运算的参数、以及累加运算的结果均以预定精度存储在存储模块中。
可选地,在进行多个次级乘加运算的步骤中,利用第一运算模块依次执行多个所述次级乘加运算;
在将所有次级乘加值进行累加运算的步骤中,利用第二运算模块执行所述累加运算,
在进行多个次级乘加运算的步骤中,所述第一运算模块将所述次级乘加值传输至所述第二运算模块;
所述方法还包括在相邻两个次级乘加运算之间进行的以下步骤:
将所述第一运算模块清零。
可选地,当一个次级乘加运算中进行的次级乘加运算的次数达到第一预设值时,结束当前个次级乘加运算。
可选地,在进行多个次级乘加运算的步骤中,利用多个第一运算模块分别执行多个所述次级乘加运算;
在将所有次级乘加值进行累加运算的步骤中,利用第二运算模块执行所述累加运算,在进行多个次级乘加运算的步骤中,所述第一运算模块将所述次级乘加值传输至所述第二运算模块;
多个次级乘加运算后,将该多个次级乘加值进行累加运算包括:
依次将多个所述第一运算模块与所述第二运算模块导通,以分别将各个所述第一运算模块产生的次级乘加值传输至所述第二运算模块;
控制所述第二运算模块将各个所述第一运算模块传输至该第二运算模块的次级乘加值进行对位累加。
可选地,在至少一个运算周期中,所述方法还包括:
在所述第二运算模块中累加运算的次数达到第二预设值后,控制所述第二运算模块输出累加结果。
可选地,所述预定精度包括以下精度中的任意一种:
半精度浮点、8位定点整数、4位定点整数。
作为本公开的另一个方面,提供一种进行神经网络运算的装置,包括:
至少一个第一运算模块,其执行乘加运算且至少设置一个,所述第一运算模块具有第一输入端和第二输入端,并且所述第一运算模块执行乘法运算产生乘积值,所述第一运算模块将乘积值执行累加运算,输出次级乘加值;
至少一个第二运算模,所述第二运算模块用于执行累加运算,所述 第二运算模块接收各个所述第一运算模块的次级乘加值,并执行累加运算,输出累加值作为最终运算结果;
存储模块,参与所述次级乘加运算的参数、以及获得的次级乘加值以预定精度存储在所述存储模块中。
可选地,所述装置包括一个所述第一运算模块和一个所述第二运算模块,所述第一运算模块用于在将所述次级乘加值传递输出给所述第二运算模块后,所述模块A清零并继续执行下一个次级乘加运算。
可选地,所述装置还包括:
第一时钟模块,所述第一时钟模块用于对所述第一运算模块的次级乘加运算次数计数;
第二时钟模块,所述第二时钟模块用于对所述第二运算模块的累加运算次数计数。
可选地,当所述第一运算模块用于在的乘加运算次数达到第一预设值后,所述模块将获得的次级乘加值传递给所述第二运算模块;
所述第二运算模块用于在累加运算次数达到第二预设值后,将获得的累加值作为最终运算结果。
可选地,所述装置还包括选通器MUX,所述装置包括多个所述第一运算模块和一个所述第二运算模块;
N多个所述第一运算模块通过所述选通器MUX并联,所述选通器MUX的输出端与所述第二运算模块的输入端相连,且所述选通器MUX用于每次将一个所述第一运算模块与所述第二运算模块选通,所述第二运算模块用于将各个所述第一预算模块传递至该第二运算模块的次级乘加值进行对位累加,最终输出N个累加值。
可选地,所述装置还包括N个时钟模块,该N个时钟模块分别对N个第一运算模块的乘加运算次数计数。
可选地,所述MUX被设置为在一个运算子周期内,当N个第一运算模块的乘加运算次数分别达到第一预设值后,依次将N个所述第一运算模块与所述第二运算模块选通,并使得N个所述第一运算模块将各自的次级乘加值传递给所述第二运算模块并进入下一个运算子周期;
所述第二运算模块能够对接收到的各个次级乘加值进行对位累加;
所述第二运算模块被设置为在该第二运算模块的累加运算次数达到第二预设值后,将所述第二运算模块的N个累加值作为最终输出值。
可选地,所述装置还包括选通器MUX,所述装置包括N个第一运算模块和Z个第二运算模块,Z≤N;
N个所述第一运算模块通过所述选通器MUX并联,所述选通器MUX能够将每次将Z个所述第一运算模块分别与Z个所述第二运算模块选通,以使得N个所述第一运算模块产生的次级乘加值被传递至Z个所述第二运算模块进行对位累加,并使得Z个所述第二运算模块输出N个累加值。
可选地,所述装置还包括N个时钟模块,N个时钟模块分别对N个所述第一运算模块的次级乘加运算次数计数。
可选地,所述选通器MUX设置为一个运算子周期内,N个第一运算模块的乘加运算次数分别达到第一预设值后,一次将Z个所述第一运算模块与Z个所述第二运算模块选通,以使得N个所述第一运算模块的次级乘加值传递给Z个所述第二运算模块并进入下一个运算子周期,Z≤N;
Z个所述第二运算模块能够对接收到的各个次级乘加值进行对位累加;
Z个所述第二运算模块能够当Z个所述第二运算模块的累加运算次数均达到第二预设值后,获得N个累加值,并且Z个所述第二运算模块能够将各自的累加值输出,以获得最终运算结果。
作为本公开的第三个方面,提供一种神经网络处理芯片,其中,所述神经网络处理芯片中内嵌如本公开第二个方面所述的装置。
作为本公开的第四个方面,提供一种计算处理设备,其中,所述计算处理设备存储执行本公开第一个方面所述的方法的计算机程序指令。
通过参照附图详细描述其示例实施例,本公开的上述和其它目标、特征及优点将变得更加显而易见。下面描述的附图仅仅是本公开的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提 下,还可以根据这些附图获得其他的附图。
图1是针对参数类型为半精度浮点时,神经网络进行乘加运算的平均误差分析的示意图;
图2是本公开第一个方面所提供的方法的一种实施方式的流程图;
图3是将1024次乘加任务分成4个256次次级乘加运算小任务的示意图;
图4是本公开所提供的方法与普通乘加模式(半精度浮点)的相对标准偏差分析的示意图;
图5是公开所提供的进行神经网络运算的装置的示意图;
图6是本公开所提供的方法中,步骤S120的一种实施方式的流程图;
图7是本公开第一实施例所述的装置的电路级示意图,该装置针对一个乘加单元;
图8是本公开第二实施例所提供的装置的电路级示意图,该装置针对多个乘加单元和一个累加单元;
图9是图8中所示装置的改进装置的电路级示意图;
图10是本公开第四实施例所提供的装置的电路级示意图,该装置针对多个乘加单元和多个累加单元;
图11是图10中所提供的装置的改进装置的电路级示意图。
下面将参照附图更详细地描述本公开的示例性实施例。
虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员以使得本公开所属技术领域的技术人员能够容易实施。正如本公开所属技术领域的技术人员能够容易理解,将在后面描述的实施例在不脱离本公开的概念和范围的基础上可变形为多种形式。在附图中尽量将相同或相似的部分用相同的附图标记表示。
在此使用的专业术语只是用来说明特定实施例而提供的,并不是用 来限制本公开。在此使用的单数形式在没有表示明确的相反含义的情况下也包含复数形式。在说明书中使用的“包含”的具体化了特定的特性、领域、常数、步骤、动作、要素及/或成分,并不排除其他特定的特性、领域、常数、步骤、动作、要素、成分及/或组的存在或附加。
本公开中所提到的“控制”可以是指通过软件程序(例如,代码)实现的控制,也可以是指通过硬件实现的控制。
将下面使用的技术用语及科学用语包括在内的所有用语具有与本公开所属技术领域的技术人员一般理解的含义相同的含义。在词典中所定义的用语被补充解释为与相关技术文献和当前公开的内容相符的含义,在没有定义的情况下,不能被解释为具有非常正式的含义。
在神经网络计算中,采用低精度的参数(例如,所述参数的类型可以为半精度浮点(FP16)、8位定点整数(INT8)、4位定点整数(INT4)等中的任意一者)进行计算,可极大的降低参数的存储消耗,减少乘加器的面积、功耗、和数据传输的消耗。然而,低精度的参数计算不可避免的带来计算误差。
图1是针对类型为半精度浮点的参数进行神经网络计算时的平均误差分析示意图。误差的计算方法采用欧式距离公式,比较半精度计算结果和全精度计算结果之间的相对平均误差。由图1可以看到,随着乘加次数的增加,平均误差在快速增大。当乘加次数达到1024次的时候,平均误差达到了0.7%;当乘加次数达到8196次的时候,平均误差则达到了21%。该误差会极大的影响单层神经网络的准确率,严重影响到神经网络的推理结果,甚至给出错误的结果。
有鉴于此,作为本公开的第一个方面,提供神经网络运算的方法,所述方法包括至少一个运算周期,如图2所示,至少一个所述运算周期包括:
在步骤S110中,进行多个次级乘加运算,获得多个次级乘加值,其中,每个次级乘加运算都包括多次乘加运算;
在步骤S120中,多个次级乘加运算后,将该多个次级乘加值进行累加运算,得到最终运算结果,其中,参与所述次级乘加运算的参数、获得的次级乘加值、参与所述累加运算的参数、以及累加运算的结果均 以预定精度存储在存储模块中。
如上文中所述,乘加次数越多、误差越大,乘加次数越少,误差越小。在上述包括步骤S110和步骤S120的周期中,通过进行多个乘加次数较少的次级乘加运算、以及累加运算,实现原本通过更多次的乘加运算实现的运算,可以降低神经网络层的计算误差。每个次级乘加运算的误差均较低,因此,本公开所提供的方法误差更低。
在本公开中,对“以预定精度存储在存储模块中”不做特殊的限定,只要参与所述次级乘加运算的参数、获得的次级乘加值、参与所述累加运算的参数、以及累加运算的结果具有较低的存储消耗即可。可选地,上述各个数据的类型可以为以下类型中的任意一种:
半精度浮点、8位定点整数、4位定点整数。
换言之,所述预定精度包括以下精度中的任意一种:
半精度浮点、8位定点整数、4位定点整数。
下面通过图3中所示的实施例对上述包括步骤S110和步骤S120的周期的原理以及有益效果。
将单神经网络层中的1024次乘加任务分成4个256次次级乘加,先依次进行256次乘加运算,再将4个次级乘加结果相加。依靠这种拆分模式,可以将平均误差由0.7%(1024次乘加任务直接计算产生)降低为0.04%平均误差可缩小17倍。另外,每个次级乘加中的乘加次数越少,平均误差越低。
图4中所示的是直接进行1024次乘加任务的平均误差的曲线与采用本公开中所提供的运算方法实现4个256次次级乘加运算的平均误差的曲线,如图4所示,随着乘加次数的增加,采用两种方式所产生的平均误差的差别越大,即,采用本公开的这种方法,可以大大减小相对标准偏差。
在本公开中,可以利用第一运算模块A执行多个次级乘加运算、利用第二运算模块B执行累加运算。
如图5中所示,第一运算模块A可以包括乘法器和加法器,第一运算模块A的乘法器具有第一输入端X和第二输入端Y,通过所述乘法器可以得到通过第一输入端X输入的参数、以及第二输入端Y输入参数的 乘积XY,通过所述加法器可以得到各个乘积的和,因此,通过第一运算模块A可以得到第一输入端X输入的参数和第二输入端Y输入的参数的次级乘加值ΣXY。
第二运算模块B可以对输入至该第二运算模块B的多个数据进行累加运算。
在本公开中,对如何通过第一运算模块A和第二运算模块B实现步骤S110和步骤S120不做特殊限定。
作为一种可选实施方式,如图5所示,在进行多个次级乘加运算的步骤S110中,利用第一运算模块A依次执行多个所述次级乘加运算;在将所有次级乘加值进行累加运算的步骤S120中,利用第二运算模块B执行所述累加运算。相应地,在进行多个次级乘加运算的步骤S110中,第一运算模块A将所述次级乘加值ΣXY传输至第二运算模块B。在步骤S120中,第二运算模块B对接收到的多个次级乘加值ΣXY进行累加运算。
所述方法还包括在相邻两个次级乘加运算之间进行的以下步骤:
将第一运算模块A清零。
通过在进行下一个次级乘加运算之前将第一运算模块A清零,本次次级乘加运算的运算结果不会对下次次级乘加运算的结果造成影响,以使得计算结果更加准确。
作为另一种可选实施方式,可以分别利用多个第一运算模块A执行多个次级乘加运算,并利用一个第二运算模块B来执行所述累加运算。这种情况下,可以利用选通器MUX将多个第一运算模块A并联,并且,选通器MUX的输出端与第二运算模块B的输入端相连,选通器MUX可以依次将多个第一运算模块A的输出端与第二预算模块B的输入端导通,这样第二运算模块B可以对各个第一运算模块A输出的次级乘加值进行累加运算。
相应地,如图6所示,步骤S120可以包括:
在步骤S121中,依次将多个第一运算模块A与第二运算模块B导通,以分别将各个第一运算模块A产生的次级乘加值传输至第二运算模块B;
在步骤S122中,控制第二运算模块B将各个第一运算模块A传输 至该第二运算模块B的次级乘加值进行对位累加。
在本公开中,对如何确定步骤S110中执行的次级乘加运算的次数不做特殊的限定。例如,步骤S110可以包括:
确定对预定数量的输入参数进行处理所需要的初级乘加运算次数C;
根据所述初级乘加运算次数C确定各个次级乘加运算中所包括的次乘加运算的次数,其中,所有次级乘加运算次数之和为C。
当然,本公开并不限于此,例如,可以预先设定各个次级乘加运算的次数(例如,将其设定为第一预设值),当一个次级乘加运算中进行的次级乘加运算的次数达到第一预设值时,结束当前个次级乘加运算。
同样地,在本公开中,对如何确定第二运算模块B中累加运算的次数也不做特殊限定。例如,在所述第二运算模块B中累加运算的次数达到第二预设值后,控制所述第二运算模块B输出累加结果。
作为本公开的第二个方面,提供一种进行神经网络运算的装置如图5所示,本公开提供了一种降低精度损失的装置包括至少一个第一运算模块A和至少一个第二运算模块B。第一运算模块A执行乘加运算,具有第一输入端输入X和第二输入端Y,并且第一运算模块A执行乘法运算产生乘积值XY,第一运算模块A将乘积值XY执行累加运算,输出次级乘加值ΣXY。
第二运算模块B执行累加运算,接收各个第一运算模块A的次级乘加值,并执行累加运算,输出累加值作为最终运算结果。
作为一种可选实施方式,第一运算模块(A)是标准的乘加单元,针对第一输入端X输入的参数和第二输入端Y输入的参数两个输入,先进行乘法,然后再进行累加。第二运算模块B是累加单元,将第一运算模块A输入的次级乘加值与上一个次级乘加值进行累加。
通过本公开的装置可以实现本公开所提供的上述神经网络运算的方法,具体地,通过进行多个乘加次数较少的次级乘加运算、以及累加运算,实现原本通过更多次的乘加运算实现的运算,可以降低神经网络层的计算误差。每个次级乘加运算的误差均较低,因此,本公开所提供的装置进行运算时误差更低。
下面通过5个不同的实施例对本公开所提供的装置进行介绍。
实施例1,如图7所示,本公开装置,包括一个第一运算模块A和一个第二运算模块B。第一运算模块A执行一个次级乘加运算任务后,将次级乘加值传递给第二模块B,第一运算模块A清零,第一运算模块A继续执行下一个次级乘加运算任务,并将次级乘加值传递给第二运算模块B,以供第二运算模块将接收到的次级乘加值与上一个次级乘加值进行累加,第一运算模块A清零,依次执行后,完成多个乘加运算任务,将第二运算模块B的累加值作为最终输出值输出。
在一种可能的实现方式中,第一运算模块A中的次级乘加值存储在寄存器1中,第二运算模块B中的累加值存储在寄存器2中。第一时钟模块输出的时钟信号(图中表示为时钟CLK1)对第一运算模块A的次级乘加运算次数计数,第二时钟模块输出的时钟信号(图中表示为时钟CLK2)对第二运算模块B的累加运算次数计数。
在一种可能的实现方式中,当第一运算模块A的次级乘加运算次数达到第一预设值(比如64次,128次等)后,第一运算模块A将乘加值传递给第二运算模块B(例如,将寄存器1中的乘加值传递给寄存器2),当第二运算模块B的累加运算次数达到第二预设值后,第二运算模块B中存储的累加值(例如存储在寄存器2中的累加值)作为最终运算结果。
实施例2,如图8所示,本公开的一种进行伸进网络运算的装置,包括N个第一运算模块A和一个第二运算模块B。
在一种可能的实现方式中,N个第一运算模块A中的乘加值分别N存储在寄存器(用寄存器i表示,其中,i表示序号,i=1,2,…,N)中。例如,第一个第一运算模块A(第一输入端输入的值为X
1,第二输入端输入的值为Y
1)的次级乘加值存储在寄存器1中,第二个第一运算模块A(第一输入端输入的值为X
2,第二输入端输入的值为Y
2)的次级乘加值存储在寄存器2中,……,第N个第一运算模块A(第一输入端输入的值为X
N,第二输入端输入的值为Y
N)的次级乘加值存储在寄存器N中。
在一种可能的实现方式中,N个时钟模块分别对N个模块A的乘加 运算次数计数,其中,N个时钟模块输出的时钟信号分别用时钟CLK i表示,i表示序号,i=1,2,…,N。例如,时钟CLK1对第一个第一运算模块A的次级乘加运算次数计数,时钟CLK2对第二个第一运算模块A的次级乘加运算次数计数,……,时钟CLK N对第N个第一运算模块A的次级乘加运算次数计数。
在一种可能的实现方式中,N个第一运算模块A通过选通器MUX(该选通器MUX为N:1的多路选通器)并联(即,N个第一运算模块A的输出端均与选通器MUX的输入端相连),选通器MUX的后面可共用一个加法器(即第二运算模块B),第i个第一运算模块A所对应的寄存器i中的乘加值被传递至第二运算模块B进行对位累加,最终输出N个累加值。通过共用加法器,节省面积和开销。
如上文中所述,所述神经网络运算的方法包括多个运算周期,在同一个运算周期内,第一运算模块执行多个运算子周期。
在一种可能的实现方式中,一个运算子周期内,N个第一运算模块A的次级乘加运算次数分别达到第一预设值后,MUX依次将N个第一运算模块A与第二运算模块B选通,并将N个次级乘加值传递给第二运算模块B进行对位累加。在每个循环中,所有N个第一运算模块A被遍历一遍,然后N个第一运算模块A继续进入下一个运算子周期。时钟CLK M对第二运算模块B的累加运算次数计数,当累加运算次数达到第二预设值后,第二运算模块B对应的寄存器M中的N个累加值作为最终输出值。例如,将1024次乘加任务拆为4个256次乘加小任务。第一个256次乘加运算子周期内,N个第一运算模块A分别执行256次乘加运算,各第一运算模块A的寄存器均存储256次乘加运算得到的乘加值,MUX依次将N个第一运算模块A与第二运算模块B选通,256次次级乘加运算得到的次级乘加值传递到模块B(例如,存储在第二运算模块B的寄存器中),第二运算模块B共存了N个累加值。下一个256次乘加运算子周期,依旧是N个第一运算模块A分别执行256次次级乘加运算,各第一运算模块A的寄存器存储256次乘加运算得到的乘加值,选通器MUX依次将N个第一晕眩模块A与第二运算模块B选通,256次乘加运算得到的次级乘加值传递到第二运算模块B,按照第一个 第一运算模块A到第N个第一运算模块A对应和上一运算子周期的N个累加值进行累加。一直到4次累加运算结束后,第二运算模块B输出N个累加值。
实施例3,如图9所示,本公开的进行神经网络运算的装置,包括N个第一运算模块A和一个第二运算模块B。与实施例2不同之处在于,所述装置还包括:寄存器L,其位于选通器MUX之前,存储所有寄存器i存储的乘加值,选通器MUX依次选通寄存器L中的乘加值并传递至第二运算模块B。在选通器MUX插入额外的寄存器L,可以实现寄存器i的依次选通和无缝的子任务切换,简化乘加器阵列之中的时序控制,降低复杂度。
在一种可能的实现方式中,N个第一运算模块A可通过同一时钟信号来对乘加运算次数计数(例如,时钟CLK 1、时钟CLK 2、…、时钟CLK N均采用时钟CLK 1),N个第一运算模块A的乘加运算次数同时达到第一预设值后,N个第一运算模块A所对应的寄存器i中的值同时传递给寄存器L,各个寄存器i清零后立刻进行下一运算子周期的计算。寄存器L中的乘加值通过选通器MUX传递至第二运算模块B进行累加运算,累加后的值存入寄存器M中。时钟CLK M对第二运算模块B的累加运算次数计数,当第二运算模块B的累加运算次数达到第二预设值后,寄存器M中的累加值作为最终输出值。
实施例4,如图10所示,本公开的一种进行神经网络运算的装置,包括N个第一运算模块A和Z个第二运算模块B,Z≤N。
N个第一运算模块A中的次级乘加值分别存储在N个寄存器中,N个寄存器可以用寄存器i来表示,其中,i表示序号,i=1,2,…,N。例如,第一个第一运算模块A的乘加值存储在寄存器1中,第二个第一运算模块A的乘加值存储在寄存器2中,……,第N个第一运算模块A的乘加值存储在寄存器N中。
N个时钟模块的时钟信号分别对N个模块A的乘加运算次数计数,其中,用时钟CLK i表示时钟模块的时钟信号,i表示序号,i=1,2,…,N。 例如,时钟CLK1对第一个第一运算模块A的次级乘加运算次数计数,时钟CLK2对第二个第一运算模块A的次级乘加运算次数计数,……,时钟CLK N对第N个第一运算模块A的次级乘加运算次数计数。
N个第一运算模块A通过选通器MUX(该MUX为N:Z的多路选通器)并联。每个运算子周期内,会有Z个第一运算模块A被选通器MUX选通(即,选通器MUX将Z个第一运算模块A分别与Z个第二运算模块B选通),N个第一运算模块A各自对应的寄存器i中的次级乘加值被分别传递至Z个第二运算模块B,与第二运算模块B所对应的寄存器i
/中的值进行对位累加。
Z个第二模块B中的累加值分别存储在Z寄存器中,其中,各个寄存器用寄存器i
/表示,i
/表示序号,i
/=1,2,…,Z。例如,第一个第二运算模块B的累加值存储在寄存器1
/中,第二个第二运算模块B的累加值存储在寄存器2
/中,…,第Z个第二运算模块B的累加值存储在寄存器Z
/中。
时钟CLK i
/分别对Z个第二运算模块B的累加运算次数计数,其中,i
/表示序号,i
/=1,2,…,Z。例如,时钟CLK 1
/对第一个第二运算模块B的累加运算次数计数,时钟CLK 2
/对第二个第二运算模块B的累加运算次数计数,…,时钟CLK Z
/对第Z个第二运算模块B的累加运算次数计数。
一个运算子周期内,N个第一运算模块A的次级乘加运算次数分别达到第一预设值后,选通器MUX一次将Z个第一运算模块A与Z个第二运算模块B选通,并将N个第一运算模块A的乘加值传递给Z个第二运算模块B进行对位累加,然后N个第一运算模块A再继续进入下一个运算子周期,当Z个第二运算模块B的累加运算次数均达到第二预设值后,将Z个第二运算模块B的N个累加值作为最终输出值。例如,将1024次乘加任务拆为4个256次乘加小任务。第一个256次乘加运算子周期内,N个第一运算模块A分别执行256次乘加运算,各第一运算模块A的寄存器均存储256次乘加运算得到的乘加值,选通器MUX一次选通Z个第一运算模块A,N个第一运算模块A分别对应的256次乘加运算得到的乘加值分别传递到Z个第二运算模块B进行对位累加,Z 个第二运算模块B共存了N个累加值。下一个256次乘加运算子周期,依旧是N个第一运算模块A分别执行256次乘加运算,各第一运算模块A的寄存器存储256次乘加运算得到的乘加值,选通器MUX一次选通Z个第一运算模块A,N个模块A分别对应的256次乘加运算得到的乘加值分别传递到Z个第二运算模块B,按照第一个第一运算模块A到第N个第一运算模块A对应和上一运算子周期的N个累加值进行累加。一直到4次累加运算结束后,第二运算模块B输出N个累加值。
实施例5,如图11所示,本公开的一种降低精度损失的装置,包括N个第一运算模块A和Z个第二运算模块B,Z≤N。与实施例4不同之处在于,所述装置还包括:寄存器L,其位于选通器MUX之前,存储所有寄存器i存储的次级乘加值,选通器MUX一次选通寄存器L中的N个次级乘加值并分别传递至Z个第二运算模块B。在选通器MUX插入额外的寄存器L,可以实现寄存器i的依次选通和无缝的子任务切换,简化乘加器阵列之中的时序控制,降低复杂度。N个模块A可通过同一时钟信号来对乘加运算次数计数(也即时钟CLK 1、时钟CLK 2、…、时钟CLK N均采用时钟CLK 1),N个第一运算模块A的次级乘加运算次数同时达到第一预设值后,N个第一运算模块A所对应的寄存器i中的次级乘加值同时传递给寄存器L,各个寄存器i清零后立刻进行下一运算子周期的计算。寄存器L中的乘加值通过选通器MUX传递至Z个第二运算模块B进行对位累加运算,时钟CLK i
/分别对Z个第二运算模块B的累加运算次数计数,当Z个第二运算模块B的累加运算次数均达到第二预设值后,Z个第二运算模块B各自对应的寄存器i
/中的N个累加值作为最终输出值。
下面通过实施例6至实施例10介绍本公开所提供的装置如何执行本公开所述的方法。
实施例6,一种利用本公开所提供的装置所执行的神经网络运算的方法,针对一个乘加单元(即一个第一运算模块A)和一个累加单元(即一个第二运算模块B),第一运算模块A执行一个E次的次级乘加运算后,将获得的次级乘加值传递给第二运算模块B,第一运算模块A清零, 第一运算模块A继续执行下一个E次的次级乘加运算,并将获得的次级乘加值传递给第二运算模块B与上一个次级乘加值进行累加,第一运算模块A清零,依次执行后,完成D个E次的次级乘加运算,将第二运算模块B的累加值输出。
在一种可能的实现方式中,当第一运算模块A的乘加运算次数达到第一预设值(比如64次,128次等)后,第一运算模块A将乘加值传递给第二运算模块B(例如,将寄存器1中的乘加值传递给寄存器2),当第二运算模块B的累加运算次数达到第二预设值后,第二运算模块B中存储的累加值(例如存储在寄存器2中的累加值)作为最终输出值。例如将单神经网络层中的1024次乘加任务分成4个256次乘加小任务,先依次进行256次乘加运算,再将4个乘加结果进行累加运算。
实施例7,一种利用本公开所提供的装置所执行的神经网络运算的方法,针对多个乘加单元(即N个第一运算模块A)和一个累加单元(即一个第二运算模块B),N个第一运算模块A分别执行一个E次的次级乘加运算,寄存器i对应存储N个第一运算模块A的乘加值(其中,i表示序号,i=1,2,…,N。例如,第一个第一运算模块A的乘加值存储在寄存器1中,第二个第一运算模块A的乘加值存储在寄存器2中,……,第N个第一运算模块A的乘加值存储在寄存器N中。),时钟CLK i分别对N个第一运算模块A的乘加运算次数计数(,其中,i表示序号,i=1,2,…,N。例如,时钟CLK 1对第一个第一运算模块A的乘加运算次数计数,时钟CLK 2对第二个第一运算模块A的乘加运算次数计数,……,时钟CLK N对第N个第一运算模块A的乘加运算次数计数)。一个运算子周期内,N个第一运算模块A的次级乘加运算次数分别达到第一预设值后,依次被选通器MUX与第二运算模B选通,并将各自的次级乘加值依次传递给第二运算模块B进行对位累加,在每个循环中,所有N个第一运算模块A需被遍历一遍,然后N个第一运算模块A继续进入下一个运算子周期。时钟CLK M对第二运算模块B的累加运算次数计数,当累加运算次数达到第二预设值后,第二运算模块B(对应的寄存器M)中的N个累加值作为最终运算结果输出。例如,将1024次乘加任务拆为4个256次乘加小任务。第一个256次乘加运算子周期 内,N个第一运算模块A分别执行256次乘加运算,各第一运算模块A的寄存器均存储256次乘加运算得到的乘加值,N个第一运算模块A依次被选通器MUX与第二运算模块B选通,256次乘加运算得到的次级乘加值传递到第二运算模块B(例如,存在第二运算模块B的寄存器中),共存了N个累加值。下一个256次乘加运算子周期,依旧是N第一运算个模块A分别执行256次乘加运算,各第一运算模块A的寄存器存储256次乘加运算得到的乘加值,N个第一运算模块A依次被选通器MUX与第二运算模块B选通,256次乘加运算得到的次级乘加值传递到第二运算模块B,按照第一个第一运算模块A到第N个第一运算模块A对应和上一运算子周期的N个累加值进行累加。一直到4次累加运算结束后,第二运算模块B输出N个累加值。
实施例8,一种利用本公开所提供的装置所执行的神经网络运算的方法,针对多个乘加单元(即N个第一运算模块A)和一个累加单元(即一个第二运算模块B),与实施例7不同之处在于,在选通器MUX插入额外的寄存器L,可以实现寄存器i的依次选通和无缝的子任务切换,简化乘加器阵列之中的时序控制,降低复杂度。N个第一运算模块A通过同一个时钟来对乘加运算次数计数(也即时钟CLK 1、时钟CLK 2、…、时钟CLK N均采用时钟CLK 1),N个第一运算模块A的乘加运算次数同时达到第一预设值后,N个第一运算模块A所对应的寄存器i中的值同时传递给寄存器L,各个寄存器i清零后立刻进行下一周期的计算。寄存器L中的乘加值通过选通器MUX传递至模块B进行累加运算,累加后的值存入寄存器M中。时钟CLK M对第二运算模块B的累加运算次数计数,当第二运算模块B的累加运算次数达到第二预设值后,寄存器M中的累加值作为最终输出值。
实施例9,一种利用本公开所提供的装置所执行的神经网络运算的方法,针对多个乘加单元(即N个第一运算模块A)和多个累加单元(Z个第二运算模块B)。N个第一运算模块A分别执行一个E次乘加运算,一个寄存器i对应存储一个第一运算模块A的乘加值(其中,i表示序号, i=1,2,…,N。例如,第一个第一运算模块A的乘加值存储在寄存器1中,第二个第一运算模块A的乘加值存储在寄存器2中,……,第N个第一运算模块A的乘加值存储在寄存器N中。),时钟CLK i对N个模块A的乘加运算次数计数(其中,i表示序号,i=1,2,…,N。例如,时钟CLK 1对第一个第一运算模块A的乘加运算次数计数,时钟CLK 2对第二个第一运算模块A的乘加运算次数计数,……,时钟CLK N对第N个第一运算模块A的乘加运算次数计数),每个运算子周期内,Z个第一运算模块A被选通器MUX与第二运算模块B选通,N个第一运算模块A各自对应的寄存器i中的次级乘加值被传递至Z个第二运算模块B,与Z个第二运算模块B各自对应的寄存器i
/内存储的值进行对位累加。Z个第二运算模块B中的累加值分别存储在一个寄存器i
/中,其中,i
/表示序号,i
/=1,2,…,Z。(例如,第一个第二运算模块B的累加值存储在寄存器1
/中,第二个第二运算模块B的累加值存储在寄存器2
/中,…,第Z个第二运算模块B的累加值存储在寄存器Z
/中。)时钟CLK i
/分别对Z个第二运算模块B的累加运算次数计数,其中,i
/表示序号,i
/=1,2,…,Z。例如,时钟CLK 1
/对第一个第二运算模块B的累加运算次数计数,时钟CLK 2
/对第二个第二运算模块B的累加运算次数计数,…,时钟CLK Z
/对第Z个第二运算模块B的累加运算次数计数。
在一种可能的实现方式中,一个运算子周期内,N个第一运算模块A的次级乘加运算次数分别达到第一预设值后,选通器MUX一次选通Z个第一运算模块A,并将N个第一运算模块A的乘加值分别传递给Z个第二运算模块B,然后N个第一运算模块A再继续进入下一个运算子周期,当Z个第二运算模块B的累加运算次数均达到第二预设值后,将Z个第二运算模块B的N个累加值作为最终输出值。例如,将1024次乘加任务拆为4个256次乘加小任务。第一个256次乘加运算子周期内,N个第一运算模块A分别执行256次乘加运算,各模块A的寄存器均存储256次乘加运算得到的乘加值,选通器MUX一次选通3个第一运算模块A与3个第二运算模块B,N个第一运算模块A分别对应的256次乘加运算得到的乘加值分别传递到3个第二运算模块B,3个第二运算模块B共存了N个累加值。下一个256次乘加运算子周期,依旧是N 个第一运算模块A分别执行256次乘加运算,各第一运算模块A的寄存器存储256次乘加运算得到的乘加值,选通器MUX一次选通3个第一运算模块A,N个第一运算模块A分别对应的256次乘加运算得到的乘加值分别传递到3个第二运算模块B,按照第一个第一运算模块A到第N个第一运算模块A对应和上一运算子周期的N个累加值进行对位累加。一直到4次累加运算结束后,3个第二运算模块B输出N个累加值。
实施例10,一种利用本公开所提供的装置所执行的神经网络运算的方法,针对多个乘加单元(即N个第一运算模块A)和多个累加单元(Z个第二运算模块B),与实施例9不同之处在于,在选通器MUX插入额外的寄存器L,可以实现寄存器i的依次选通和无缝的子任务切换,简化乘加器阵列之中的时序控制,降低复杂度。N个第一运算模块A可通过同一时钟信号来对乘加运算次数计数(也即时钟CLK 1、时钟CLK 2、…、时钟CLK N均采用时钟CLK 1),N个第一运算模块A的乘加运算次数同时达到第一预设值后,N个第一运算模块A所对应的寄存器i中的值同时传递给寄存器L,各个寄存器i清零后立刻进行下一运算子周期的计算。寄存器L中的乘加值通过选通器MUX传递至Z个第二运算模块B进行累加运算,时钟CLK i
/分别对Z个第二运算模块B的累加运算次数计数,当Z个第二运算模块B的累加运算次数均达到第二预设值后,Z个第二运算模块B各自对应的寄存器i
/中的N个累加值作为最终输出值。
作为本公开的第三个方面,提供一种神经网络处理芯片,内嵌一种进行神经网络运算的装置。在执行运算时,采用所述装置能够降低精度损失,该装置可以选用如实施例1、实施例2、实施例3、实施例4和实施例5的装置。该神经网络处理芯片可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为独立软件执行、部分在用户设备上执行部分在远程计算设备上执行、完全在远程计算设备或完全在服务器上执行等。
作为本公开的第四个方面,提供一种计算处理设备,用于存储一种降低精度损失的方法的计算机程序指令。该计算机程序指令在被处理器运行时,使得处理器执行所述的一种神经网络运算的方法,例如,可以执行实施例6、实施例7、实施例8、实施例9和实施例10的方法。该计算机程序指令可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为独立软件执行、部分在用户设备上执行部分在远程计算设备上执行、完全在远程计算设备或完全在服务器上执行等。
至此,本领域技术人员应认识到,虽然本文已详尽示出和描述了本公开的多个示例性实施例,但是,在不脱离本公开精神和范围的情况下,仍可根据本公开公开的内容直接确定或推导出符合本公开原理的许多其他变型或修改。因此,本公开的范围应被理解和认定为覆盖了所有这些其他变型或修改。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本公开的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个公开方面中的一个或多个,在上面对本公开的示例性实施例的描述中,本公开的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本公开要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,公开方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本公开的单独实施例。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本公开的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
至此,本领域技术人员应认识到,虽然本文已详尽示出和描述了本公开的多个示例性实施例,但是,在不脱离本公开精神和范围的情况下, 仍可根据本公开公开的内容直接确定或推导出符合本公开原理的许多其他变型或修改。因此,本公开的范围应被理解和认定为覆盖了所有这些其他变型或修改。
Claims (18)
- 一种神经网络运算的方法,所述方法包括至少一个运算周期,至少一个所述运算周期包括:进行多个次级乘加运算,获得多个次级乘加值,其中,每个次级乘加运算都包括多次乘加运算;多个次级乘加运算后,将该多个次级乘加值进行累加运算,得到最终运算结果,其中,参与所述次级乘加运算的参数、获得的次级乘加值、参与所述累加运算的参数、以及累加运算的结果均以预定精度存储在存储模块中。
- 根据权利要求1所述的方法,其中,在进行多个次级乘加运算的步骤中,利用第一运算模块(A)依次执行多个所述次级乘加运算;在将所有次级乘加值进行累加运算的步骤中,利用第二运算模块(B)执行所述累加运算,在进行多个次级乘加运算的步骤中,所述第一运算模块(A)将所述次级乘加值传输至所述第二运算模块;所述方法还包括在相邻两个次级乘加运算之间进行的以下步骤:将所述第一运算模块(A)清零。
- 根据权利要求2所述的方法,其中,当一个次级乘加运算中进行的次级乘加运算的次数达到第一预设值时,结束当前个次级乘加运算。
- 根据权利要求1所述的方法,其中,在进行多个次级乘加运算的步骤中,利用多个第一运算模块(A)分别执行多个所述次级乘加运算;在将所有次级乘加值进行累加运算的步骤中,利用第二运算模块(B)执行所述累加运算,在进行多个次级乘加运算的步骤中,所述第一运算模块(A)将所述次级乘加值传输至所述第二运算模块;多个次级乘加运算后,将该多个次级乘加值进行累加运算包括:依次将多个所述第一运算模块(A)与所述第二运算模块(B)导通, 以分别将各个所述第一运算模块(A)产生的次级乘加值传输至所述第二运算模块(B);控制所述第二运算模块(B)将各个所述第一运算模块(A)传输至该第二运算模块(B)的次级乘加值进行对位累加。
- 根据权利要求2至4中任意一项所述的方法,其中,在至少一个运算周期中,所述方法还包括:在所述第二运算模块(B)中累加运算的次数达到第二预设值后,控制所述第二运算模块(B)输出累加结果。
- 根据权利要求1至4中任意一项所述的方法,其中,所述预定精度包括以下精度中的任意一种:半精度浮点、8位定点整数、4位定点整数。
- 一种进行神经网络运算的装置,包括:至少一个第一运算模块(A),其执行乘加运算且至少设置一个,所述第一运算模块(A)具有第一输入端(X)和第二输入端(Y),并且所述第一运算模块(A)执行乘法运算产生乘积值(XY),所述第一运算模块(A)将乘积值(XY)执行累加运算,输出次级乘加值(ΣXY);至少一个第二运算模块(B),所述第二运算模块(B)用于执行累加运算,所述第二运算模块(B)接收各个所述第一运算模块(A)的次级乘加值ΣXY,并执行累加运算,输出累加值作为最终运算结果;存储模块,参与所述次级乘加运算的参数、以及获得的次级乘加值以预定精度存储在所述存储模块中。
- 根据权利要求7所述装置,其中,所述装置包括一个所述第一运算模块(A)和一个所述第二运算模块(B),所述第一运算模块(A)用于在将所述次级乘加值传递输出给所述第二运算模块(B)后,所述模块A清零并继续执行下一个次级乘加运算。
- 根据权利要求7所述的装置,其中,所述装置还包括:第一时钟模块,所述第一时钟模块用于对所述第一运算模块(A)的次级乘加运算次数计数;第二时钟模块,所述第二时钟模块用于对所述第二运算模块(B)的累加运算次数计数。
- 根据权利要求7所述的装置,其中,当所述第一运算模块(A)用于在的乘加运算次数达到第一预设值后,所述第一运算模块(A)将获得的次级乘加值传递给所述第二运算模块(B);所述第二运算模块(B)用于在累加运算次数达到第二预设值后,将获得的累加值作为最终运算结果。
- 根据权利要求7所述的装置,其中,所述装置还包括选通器MUX,所述装置包括多个所述第一运算模块(A)和一个所述第二运算模块(B);N多个所述第一运算模块(A)通过所述选通器MUX并联,所述选通器MUX的输出端与所述第二运算模块(B)的输入端相连,且所述选通器MUX用于每次将一个所述第一运算模块(A)与所述第二运算模块(B)选通,所述第二运算模块(B)用于将各个所述第一预算模块(A)传递至该第二运算模块(B)的次级乘加值进行对位累加,最终输出N个累加值。
- 根据权利要求11所述的装置,其中,所述装置还包括N个时钟模块,该N个时钟模块分别对N个第一运算模块(A)的乘加运算次数计数。
- 根据权利要求11所述的装置,其中,所述MUX被设置为在一个运算子周期内,当N个第一运算模块(A)的乘加运算次数分别达到第一预设值后,依次将N个所述第一运算模块(A)与所述第二运算模块(B)选通,并使得N个所述第一运算模块(A)将各自的次级乘加 值传递给所述第二运算模块(B)并进入下一个运算子周期;所述第二运算模块(B)能够对接收到的各个次级乘加值进行对位累加;所述第二运算模块(B)被设置为在该第二运算模块(B)的累加运算次数达到第二预设值后,将所述第二运算模块(B)的N个累加值作为最终输出值。
- 根据权利要求7所述的装置,其中,所述装置还包括选通器MUX,所述装置包括N个第一运算模块(A)和Z个第二运算模块(B),Z≤N;N个所述第一运算模块A通过所述选通器MUX并联,所述选通器MUX能够将每次将Z个所述第一运算模块(A)分别与Z个所述第二运算模块(B)选通,以使得N个所述第一运算模块(A)产生的次级乘加值被传递至Z个所述第二运算模块(B)进行对位累加,并使得Z个所述第二运算模块(B)输出N个累加值。
- 根据权利要求13所述的装置,其中,所述装置还包括N个时钟模块,N个时钟模块分别对N个所述第一运算模块(A)的次级乘加运算次数计数。
- 根据权利要求13所述的装置,其中,所述选通器MUX设置为一个运算子周期内,N个第一运算模块(A)的乘加运算次数分别达到第一预设值后,一次将Z个所述第一运算模块(A)与Z个所述第二运算模块(B)选通,以使得N个所述第一运算模块(A)的次级乘加值传递给Z个所述第二运算模块(B)并进入下一个运算子周期,Z≤N;Z个所述第二运算模块(B)能够对接收到的各个次级乘加值进行对位累加;Z个所述第二运算模块(B)能够当Z个所述第二运算模块(B)的累加运算次数均达到第二预设值后,获得N个累加值,并且Z个所述第二运算模块(B)能够将各自的累加值输出,以获得最终运算结果。
- 一种神经网络处理芯片,其中,所述神经网络处理芯片中内嵌如权利要求7-16中任意一项所述的装置。
- 一种计算处理设备,其中,所述计算处理设备存储执行所述权利要求1-6中任意一项所述的方法的计算机程序指令。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911345467.9 | 2019-12-24 | ||
CN201911345467.9A CN113033798B (zh) | 2019-12-24 | 2019-12-24 | 一种降低精度损失的装置及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2021129718A1 true WO2021129718A1 (zh) | 2021-07-01 |
Family
ID=76451547
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/CN2020/138905 WO2021129718A1 (zh) | 2019-12-24 | 2020-12-24 | 神经网络运算的方法及装置、芯片和设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN113033798B (zh) |
WO (1) | WO2021129718A1 (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102629189A (zh) * | 2012-03-15 | 2012-08-08 | 湖南大学 | 基于fpga的流水浮点乘累加方法 |
CN107844826A (zh) * | 2017-10-30 | 2018-03-27 | 中国科学院计算技术研究所 | 神经网络处理单元及包含该处理单元的处理系统 |
CN107862374A (zh) * | 2017-10-30 | 2018-03-30 | 中国科学院计算技术研究所 | 基于流水线的神经网络处理系统和处理方法 |
CN108108150A (zh) * | 2017-12-19 | 2018-06-01 | 北京云知声信息技术有限公司 | 乘累加运算方法及装置 |
CN108960414A (zh) * | 2018-07-20 | 2018-12-07 | 中国人民解放军国防科技大学 | 一种基于深度学习加速器实现单广播多运算的方法 |
US10474533B2 (en) * | 2015-08-20 | 2019-11-12 | Qsigma, Inc. | Simultaneous multi-processor apparatus applicable to achieving exascale performance for algorithms and program systems |
-
2019
- 2019-12-24 CN CN201911345467.9A patent/CN113033798B/zh active Active
-
2020
- 2020-12-24 WO PCT/CN2020/138905 patent/WO2021129718A1/zh active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102629189A (zh) * | 2012-03-15 | 2012-08-08 | 湖南大学 | 基于fpga的流水浮点乘累加方法 |
US10474533B2 (en) * | 2015-08-20 | 2019-11-12 | Qsigma, Inc. | Simultaneous multi-processor apparatus applicable to achieving exascale performance for algorithms and program systems |
CN107844826A (zh) * | 2017-10-30 | 2018-03-27 | 中国科学院计算技术研究所 | 神经网络处理单元及包含该处理单元的处理系统 |
CN107862374A (zh) * | 2017-10-30 | 2018-03-30 | 中国科学院计算技术研究所 | 基于流水线的神经网络处理系统和处理方法 |
CN108108150A (zh) * | 2017-12-19 | 2018-06-01 | 北京云知声信息技术有限公司 | 乘累加运算方法及装置 |
CN108960414A (zh) * | 2018-07-20 | 2018-12-07 | 中国人民解放军国防科技大学 | 一种基于深度学习加速器实现单广播多运算的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113033798B (zh) | 2023-11-24 |
CN113033798A (zh) | 2021-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11216719B2 (en) | Methods and arrangements to quantize a neural network with machine learning | |
EP4066100B1 (en) | Systolic array component combining multiple integer and floating-point data types | |
WO2021036905A1 (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
WO2020057162A1 (zh) | 一种卷积神经网络加速器 | |
CN110363281A (zh) | 一种卷积神经网络量化方法、装置、计算机和存储介质 | |
JP2019074951A (ja) | 演算処理回路、演算処理回路を含む演算処理装置、演算処理装置を含む情報処理装置、および方法 | |
US20210166156A1 (en) | Data processing system and data processing method | |
US20240119114A1 (en) | Matrix Multiplier and Matrix Multiplier Control Method | |
Ma et al. | Dynamic machine learning based matching of nonvolatile processor microarchitecture to harvested energy profile | |
KR20210044180A (ko) | 고급 상호 연결 통신기술을 이용한 ai 훈련 가속화 방법 및 시스템 | |
WO2021129718A1 (zh) | 神经网络运算的方法及装置、芯片和设备 | |
CN109670581B (zh) | 一种计算装置及板卡 | |
CN115525339A (zh) | 面积和能量效率高的基于多精度乘法累加单元的处理器 | |
Shu et al. | High energy efficiency FPGA-based accelerator for convolutional neural networks using weight combination | |
Zong-ling et al. | The design of lightweight and multi parallel CNN accelerator based on FPGA | |
TWI688895B (zh) | 快速向量乘累加電路 | |
US20210200711A1 (en) | System and Method for Configurable Systolic Array with Partial Read/Write | |
US11705171B2 (en) | Switched capacitor multiplier for compute in-memory applications | |
TWI537819B (zh) | 運算模組、裝置及系統 | |
WO2021037082A1 (zh) | 用于处理数据的方法、装置以及相关产品 | |
WO2020008643A1 (ja) | データ処理装置、データ処理回路およびデータ処理方法 | |
WO2020008642A1 (ja) | 学習装置、学習回路、学習方法および学習プログラム | |
Aghapour et al. | PELSI: Power-Efficient Layer-Switched Inference | |
Afzali-Kusha et al. | X-NVDLA: Runtime accuracy configurable NVDLA based on employing voltage overscaling approach | |
CN116796816B (zh) | 处理器、计算芯片和计算设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 20908274 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 20908274 Country of ref document: EP Kind code of ref document: A1 |