首页> 中国专利> 可重构处理器及其上多种神经网络激活函数计算方法

可重构处理器及其上多种神经网络激活函数计算方法

摘要

本发明实施例提供了一种可重构处理器及其上多种神经网络激活函数计算方法,其中,该方法包括:将神经网络激活函数拆分为基础运算;根据神经网络激活函数中各基础运算的计算顺序,通过可重构处理器的可重构处理阵列从共享存储器中读取输入数据来依次实现各基础运算,可重构处理阵列中四周边缘上的处理单元可用于执行访存操作及其他运算操作,称为访存处理单元,可重构处理阵列中除了四周边缘上的处理单元之外的其他处理单元可用于执行运算操作,称为运算处理单元,四周边缘上的处理单元与所在行上的或所在列上的用于执行运算操作的处理单元进行数据传输,可重构处理阵列中每个处理单元与自身上下左右方位上存在的且相邻的处理单元进行数据传输。

著录项

  • 公开/公告号CN112540946A

    专利类型发明专利

  • 公开/公告日2021-03-23

    原文格式PDF

  • 申请/专利权人 清华大学;

    申请/专利号CN202011511272.X

  • 申请日2020-12-18

  • 分类号G06F15/167(20060101);G06F15/177(20060101);G06F9/30(20060101);G06F9/38(20060101);G06N3/10(20060101);G06N3/04(20060101);

  • 代理机构11127 北京三友知识产权代理有限公司;

  • 代理人薛平;周晓飞

  • 地址 100084 北京市海淀区清华园

  • 入库时间 2023-06-19 10:21:15

说明书

技术领域

本发明涉及可重构处理器技术领域,特别涉及一种可重构处理器及其上多种神经网络激活函数计算方法。

背景技术

近年来,随着人工智能、云计算、大数据等技术的发展,人类对计算的需求越来越高,对芯片性能的需求也日益提高。然而,随着芯片尺寸的逐步缩小,摩尔定律逐渐逼近物理极限,集成电路的功率难以继续提升,因此要求芯片设计从功率性能方面的提升转移到能量效率和灵活性方面的提升。因此,能够针对某一领域进行优化设计的专用领域的芯片结构设计则成为了当今芯片设计的主流,而兼顾高性能、高能效比和高灵活性则成为今天芯片设计的重要指标。

同时,随着神经网络的不断发展,网络结构和激活函数也在不断地变化,对于专门的ASIC神经网络加速器,当网络结构和激活函数变化之后,加速的效果便有所下降,甚至不再适用于新型的网络了。

发明内容

本发明实施例提供了一种可重构处理器上多种神经网络激活函数计算方法,以解决现有技术中ASIC神经网络加速器在网络结构和激活函数变化后加速效果低的技术问题。该方法包括:

将神经网络激活函数拆分为基础运算;

根据神经网络激活函数中各基础运算的计算顺序,通过可重构处理器的可重构处理阵列从共享存储器中读取输入数据来依次实现各基础运算,其中,所述可重构处理阵列中四周边缘上的处理单元用于执行访存操作,称为访存处理单元,所述可重构处理阵列中除了四周边缘上的处理单元之外的其他处理单元用于执行运算操作,称为运算处理单元,四周边缘上的处理单元与所在行上的或所在列上的用于执行运算操作的处理单元进行数据传输,所述可重构处理阵列中每个处理单元与自身上下左右方位上存在的且相邻的处理单元进行数据传输。

本发明实施例还提供了一种用于实现多种神经网络激活函数计算的可重构处理器,以解决现有技术中ASIC神经网络加速器在网络结构和激活函数变化后加速效果低的技术问题。该可重构处理阵列包括:

共享存储器,用于存储输入数据;

可重构处理阵列,用于根据神经网络激活函数拆分后各基础运算的计算顺序,从共享存储器中读取输入数据来依次实现各基础运算,其中,所述可重构处理阵列中四周边缘上的处理单元用于执行访存操作,称为访存处理单元,所述可重构处理阵列中除了四周边缘上的处理单元之外的其他处理单元用于执行运算操作,称为运算处理单元,四周边缘上的处理单元与所在行上的或所在列上的用于执行运算操作的处理单元进行数据传输,所述可重构处理阵列中每个处理单元与自身上下左右方位上存在的且相邻的处理单元进行数据传输。

在本发明实施例中,提出了将神经网络激活函数拆分为基础运算,进而根据神经网络激活函数中各基础运算的计算顺序,通过可重构处理阵列从共享存储器中读取输入数据来依次实现各基础运算,实现了在现有可重构处理阵列结构上实现神经网络激活函数的运算,无需改变可重构处理阵列结构,也无需在可重构处理阵列结构上添加电路结构,即根据不同神经网络激活函数的算法需求配置可重构处理阵列中不同的处理单元进行相应的运算,使得可以在可重构处理阵列结构上利用加法、减法、乘法、移位等基础运算实现了复杂的激活函数运算,从而有利于简化激活函数运算的电路设计,有利于提高电路运算速度和吞吐率,由于可重构处理阵列中的处理单元的运算算法可以灵活配置且采用流水线的输入输出方式,使得有利于满足不同变化的激活函数的运算,使得具备可扩展性,也有利于提高处理单元的利用率。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,并不构成对本发明的限定。在附图中:

图1是本发明实施例提供的一种可重构处理器上多种神经网络激活函数计算方法的流程图;

图2是本发明实施例提供的一种relu函数的曲线示意图;

图3是本发明实施例提供的一种relu函数的计算流程示意图;

图4是本发明实施例提供的一种运算relu函数时可重构处理阵列中处理单元的排布示意图;

图5是本发明实施例提供的一种sigmoid函数的曲线示意图;

图6是本发明实施例提供的一种sigmoid函数的计算流程示意图;

图7是本发明实施例提供的一种运算sigmoid函数时可重构处理阵列中处理单元的排布示意图;

图8是本发明实施例提供的一种运算sigmoid函数时分段函数图像的示意图;

图9是本发明实施例提供的一种运算sigmoid函数时分段函数图像累加后的示意图;

图10是本发明实施例提供的一种tanh函数的曲线示意图;

图11是本发明实施例提供的一种tanh函数的计算流程示意图;

图12是本发明实施例提供的一种运算tanh函数时可重构处理阵列中处理单元的排布示意图;

图13是本发明实施例提供的一种防溢出处理的计算流程示意图;

图14是本发明实施例提供的一种防溢出处理时可重构处理阵列中处理单元的排布示意图;

图15是本发明实施例提供的一种计算e

图16是本发明实施例提供的一种计算e

图17是本发明实施例提供的一种计算ln(∑e

图18是本发明实施例提供的一种计算ln(∑e

图19是本发明实施例提供的一种用于实现多种神经网络激活函数计算的可重构处理器的结构框图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施方式和附图,对本发明做进一步详细说明。在此,本发明的示意性实施方式及其说明用于解释本发明,但并不作为对本发明的限定。

本申请发明人发现,粗粒度可重构处理器架构以其低能耗、高性能和高能效和灵活动态可重构的特性,正得到越来越多的关注。可重构计算架构的灵活性介于通用处理器和ASIC处理器之间,同时可以通过优化使得可重构计算架构的效率逼近ASIC处理器,因此兼具了两者的优点。它的特点决定了它非常适用于对于数据密集型的运算,这与神经网络的计算要求是完全一致的。在神经网络的计算中,作为提供非线性的部分,激活函数的实现尤为重要,然而,不同于专用的ASIC处理器,粗粒度可重构处理器并没有专门用于处理激活函数的电路,如果要将神经网络激活函数实现电路加入可重构计算架构中,势必产生一定的冗余,复杂的电路设计也会导致性能的下降以及功耗的上升。因此,本申请发明人提出了上述可重构处理器上多种神经网络激活函数计算方法,实现了在现有的较为简单的可重构处理阵列电路设计上,实现较为复杂的神经网络激活函数的运算。

在本发明实施例中,提供了一种可重构处理器上多种神经网络激活函数计算方法,如图1所示,该方法包括:

步骤102:将神经网络激活函数拆分为基础运算;

步骤104:根据神经网络激活函数中各基础运算的计算顺序,通过可重构处理器的可重构处理阵列从共享存储器中读取输入数据来依次实现各基础运算,其中,所述可重构处理阵列中四周边缘上的处理单元用于执行访存操作,称为访存处理单元,所述可重构处理阵列中除了四周边缘上的处理单元之外的其他处理单元用于执行运算操作,称为运算处理单元,四周边缘上的处理单元与所在行上的或所在列上的用于执行运算操作的处理单元进行数据传输,所述可重构处理阵列中每个处理单元与自身上下左右方位上存在的且相邻的处理单元进行数据传输。

由图1所示的流程可知,在本发明实施例中,提出了将神经网络激活函数拆分为基础运算,进而根据神经网络激活函数中各基础运算的计算顺序,通过可重构处理阵列从共享存储器中读取输入数据来依次实现各基础运算,实现了在现有可重构处理阵列结构上实现神经网络激活函数的运算,无需改变可重构处理阵列结构,也无需在可重构处理阵列结构上添加电路结构,即根据不同神经网络激活函数的算法需求配置可重构处理阵列中不同的处理单元进行相应的运算,使得可以在可重构处理阵列结构上利用加法、减法、乘法、移位等基础运算实现了复杂的激活函数运算,从而有利于简化激活函数运算的电路设计,有利于提高电路运算速度和吞吐率,由于可重构处理阵列中的处理单元的运算算法可以灵活配置且采用流水线的输入输出方式,使得有利于满足不同变化的激活函数的运算,使得具备可扩展性,也有利于提高处理单元的利用率。

具体实施时,针对不同的神经网络激活函数,可以将神经网络激活函数的运算拆分为基础运算,进而通过可重构处理阵列从共享存储器中读取输入数据来依次实现各基础运算。具体的,针对同一个神经网络激活函数,可以通过调整神经网络激活函数运算上拆分为基础运算的精细度、不同的拆分方案,使得神经网络激活函数的运算具有可扩展性,还可以满足对于不同精度的需求,不同吞吐量需求。如,低精度的需求下,可以将神经网络激活函数粗略拆分为较少的基础运算,以降低精度,提高吞吐量;高精度需求下,可以将神经网络激活函数精细拆分为多个基础运算,以提高精度。

具体实施时,上述基础运算可以包括:加法、减法、乘法、乘累加运算、移位运算以及选择运算等基本的、简单的运算。以实现通过在可重构处理阵列上执行简单的基础运算来实现复杂的神经网络激活函数的运算。

具体实施时,对于线性分段的神经网络激活函数,可以通过以下步骤在可重构处理阵列上运算,例如,

将神经网络激活函数拆分为基础运算,包括:

对于线性分段的神经网络激活函数,将该神经网络激活函数拆分为选择运算;

根据神经网络激活函数中各基础运算的计算顺序,通过可重构处理阵列来依次实现各基础运算,包括:

通过所述可重构处理阵列中的多个访存处理单元从共享存储器中读取输入数据,通过每个访存处理单元将输入数据传输给自身所在行或所在列的运算处理单元进行选择运算,通过运算处理单元将选择运算的计算结果传输给自身所在行或所在列的访存处理单元,进而将计算结果存入共享存储器,其中,读取输入数据的访存处理单元与存储计算结果的访存处理单元为不同的访存处理单元,不同运算处理单元输出的计算结果传输给不同的访存处理单元。

具体实施时,上述线性分段的神经网络激活函数以线性整流函数(即relu函数)为例,relu函数为f(z)=max(0,x),如图2所示,其曲线具有单调增和易于求导的特性。

具体的,在可重构计算架构上实现relu函数,需要考虑的是如何将relu函数的硬件的ASIC电路算法实现映射到可重构计算的架构上。考虑到relu函数的ASIC电路实现原理,我们需要将输入数据x从可重构处理阵列的共享存储器中取出,然后通过sel运算进行选择,判断该输入数的正负,从而选择最后的输出是0还是x。

以下,我们以4*4的可重构处理阵列PEA(其为整体可重构处理阵列的四分之一,一般可重构处理阵列为8*8)为例,说明relu函数的实现。首先,将relu函数划分的基础运算如下表1所示,如图3所示,我们通过可重构处理阵列边缘上的处理单元PE(即上述访存处理单元)执行Load运算从共享存储器取出输入数据,然后通过可重构处理阵列内部的处理单元PE(即上述运算处理单元)实现sel运算,选择输出的是0还是x,最后,通过可重构处理阵列边缘上的处理单元PE执行Save运算将计算的结果存入shared memory(共享存储器)中,具体的,可重构处理阵列中各个处理单元执行不同运算的排布如图4所示,其中,读取输入数据的访存处理单元与存储计算结果的访存处理单元为不同的访存处理单元,以实现流水线执行,不同运算处理单元输出的计算结果传输给不同的访存处理单元,进而实现不同的访存处理单元将不同的运算处理单元输出的计算结果存入共享存储器,避免数据覆盖。

表1

具体实施时,对于对称且允许分段泰勒展开拟合的神经网络激活函数,可以通过以下步骤在可重构处理阵列上运算,例如,

将神经网络激活函数拆分为基础运算,包括:

对于对称且允许分段泰勒展开拟合的神经网络激活函数,根据对称将该神经网络激活函数拆分为第一对称部分和第二对称部分,将第一对称部分的输入数据划分为多个数据段,将每个数据段的运算依次拆分为减法、选择运算以及乘累加运算,将各个数据段的乘累加运算结果进行加法运算,将累加结果减第一对称部分的输出最大值并进行选择运算得到第一对称部分的输出数据,用第一对称部分的输出最大值减去第一对称部分的输出数据并进行选择运算得到第二对称部分的输出数据;

根据神经网络激活函数中各基础运算的计算顺序,通过可重构处理阵列来依次实现各基础运算,包括:

通过所述可重构处理阵列中的一个访存处理单元从共享存储器中依次各数据段中的一个数值,通过多个运算处理单元分别将读取的数值与划分数据段的端点数值做减法,通过多个运算处理单元组成第一级选择器,第一级选择器中的每个运算处理单元对应一个数据段,第一级选择器中的每个运算处理单元基于减法结果在读取的数值和对应数据段的最大值中输出最小值;通过多个运算处理单元组成第二级选择器,第二级选择器中的每个运算处理单元对应前一个数据段,第二级选择器中的第一个运算处理单元输出第一级选择器中第一个运算处理单元的输出,第二级选择器中的其他运算处理单元在第一级选择器中对应运算处理单元的输出和前一个数据段的最大值中输出最大值,通过运算处理单元分别对第二级选择器中的运算处理单元的输出做乘累加运算,通过运算处理单元对各乘累加运算的结果进行加法运算,通过运算处理单元对加法运算的结果减1并进行选择运算,得到第一对称部分的输出数据,通过运算处理单元用1减去第一对称部分的输出数据并进行选择运算,得到第二对称部分的输出数据。

具体实施时,上述对称且允许分段泰勒展开拟合的神经网络激活函数以S型生长曲线函数(即Sigmoid函数)和双曲正切函数(即Tanh函数)为例。Sigmoid函数为

具体实施时,可重构阵列上,很难基于流水线实现查找表。由于输入数据的变化,将导致取数的地址发生变化。基于一般的可重构阵列,处理单元的取数地址一般是由基地址以及偏移地址实现的。如果用该可重构阵列实现查找表,则取数地址会随着输入数据的变化而发生变化,从而使得流水线发生停顿。因此,本实施例提出将函数进行分段积分累加,以流水的方式实现该函数的计算。具体的,在运算Sigmoid函数时将其拆分的基础运算如下表2所示。

表2

具体实施时,首先根据sigmoid的对称性,我们可以知道,只需计算函数大于0的部分(即上述第一对称部分),最后通过旋转变化,即可得到另一半函数(即上述第二对称部分)。因此,我们将所有的输入数据都映射到[0,∞)的区间。

其次,我们在sigmoid函数不同部分进行泰勒展开,得到sigmoid函数的近似函数。基于可重构处理阵列,我们将sigmoid函数在[0,+∞)的输入数据部分分为4个数据段(具体实施时,可以根据不同精度需求确定数据段个数,数据段个数越多精度越高)为例,分别是[0,4),[4,8),[8,15),[15,∞)。

首先,我们对输入数据进行数据范围的判断,采用的是sel运算函数。Sel运算函数的输入为a,b,c,他能够根据输入a的取值,选择b或c中的任意一个进行输出。首先对输入数据做减法,判断输入的范围。

我们构建通过处理单元两级选择函数。第一级选择函数通过三个处理单元实现的是选择两个数中较小的那一个数进行输出,第二级选择函数通过三个处理单元选择两个数中较大的那一个数进行输出。

如图6、图7所示,将输入数据分别减去4、8、15(即上述划分数据段的端点数值),然后根据减法的结果,该映射即可进行输入数据的范围判断。我们将分别以3段区间内输入数据为例进行分析,输入数据分别以1、6、18为例。

当输入数据为1时,通过第一级选择器时,其中,第一个选择器(其输入为1和4)将输出1,第二个选择器(其输入为1和8)将输出1,第三个选择器(其输入为1和15)将输出1。再将第一级选择器的输出数据通过第二级选择器,其中,第一个选择器输出为1,第一级选择器中的第一个选择器的输出通过路由运算直接通过第二级选择器中的第一个选择器输出,第二选择器(其输入为1和4)输出为4,第三个选择器(其输入为1和8)输出为8。

同理,当输入数据为6时,通过第一级选择器时,第一个选择器将输出4,第二个选择器将输出6,第三个选择器将输出6。再将第一级选择器的输出数据通过第二级选择器,第一个选择器输出为4,第二选择器(其输入为6和4)输出为6,第三个选择器(其输入为6和8)输出为8。

同理,当输入数据为18时,通过第一级选择器时,第一个选择器将输出4,第二个选择器将输出8,第三个选择将输出15。再将第一级选择器的输出数据通过第二级选择器,第一个选择器输出为4,第二选择器(其输入为8和4)输出为8,第三个选择器(其输入为8和18)输出为18。

综上所述,二级选择器构成的sel运算函数可表示为下式(1)

sel(x,y,z)=max(min(x,y),z)y=4、5、8 z=4、8 (1)

我们将第二级选择器的三个选择器的输出结果分别通过三个不同路径的处理单元进行MAC运算,即通过在三个不同点上展开生成的泰勒展开函数。将它们累加,即可得到最终的输出结果。如图8所示,实线的函数图像为半边sigmoid函数,“o”标记的函数图像为[0,4)处展开的泰勒函数,“|”标记的函数图像为[4,8)处展开的泰勒函数,“*”标记的函数图像为[8,15)处展开的泰勒函数,“x”标记的的函数图像为1。通过将它们拼接在一起,即累加的方式,可以得到一个新的函数,如图9所示,可以看到,通过泰勒展开的函数很好地拟合了sigmoid函数图像。

具体实施时,考虑到精度损失的问题,Sigmoid函数的分段区间以[0,4),[4,8),[8,15),[15,∞)为例。在(15,∞)之后,将可以将结果取为1,精度损失约为10

表3

具体实施时,对于可重构处理阵列上的PE,执行普通的运算时,PE的输入为a,b,则输出为PE执行的函数f(a,b),并可以选择a,b中的某一个值作为输出,具体是输出哪一个值,取决于输入a,b在配置PE的编译指令中的位置,因此,可以通过配置实现可重构处理阵列中各个PE执行的具体运算及输出。

具体的,上述sigmoid函数的运算采用了基于分段积分累加的实现方式,最后基于函数的对称性,实现了该函数的流水计算,可通过利用3个全局PE以及28个处理单元PE实现。

具体实施时,Tanh函数为

具体的,Tanh函数的运算也可以采用与运算sigmoid函数类似的做法,只是分段区间不同,以[0,1),[1,2),[2,4),[4,∞)为例。运算tanh的计算流程图如图11所示,运算tanh函数时可重构处理阵列中处理单元的排布示意图如图12所示,具体的精度损失和泰勒展开函数见下表4所示,表中仅展示了区间[0,15],负数区间可以通过关于x=0的中心对称性得到。

表4

具体实施时,对于包括除法的神经网络激活函数,通过以下步骤实现在可重构处理阵列上的运算,例如,

将神经网络激活函数拆分为基础运算,包括:

对于包括除法的神经网络激活函数,对该神经网络激活函数的输入数据减去输入数据的最大值以避免溢出,并将该神经网络激活函数中的除法转化为减法,根据该神经网络激活函数中的减法将参与运算的参数划分为不同的运算项;

根据神经网络激活函数中各基础运算的计算顺序,通过可重构处理阵列来依次实现各基础运算,包括:

通过可重构处理阵列来依次实现各运算项的运算。

具体实施时,上述包括除法的神经网络激活函数以Softmax为例,Softmax的表达式为

通过防溢出处理(即将输入数据x替换为x-x

即将输入数x-x

因此,对softmax函数运算主要分为四个部分,第一部分是防溢出部分,即求解x-x

具体实施时,为实现防溢出处理,提出了将输入数据减去输入数据的最大值,具体通过以下方式找出输入数据的最大值,例如,将输入数据划分为多个数据组,针对每个数据组,通过一个访存处理单元读取输入数据,通过一个运算处理单元接收输入数据并对输入数据进行选择运算,输出该数据组的最大数值,对多个数据组并行处理得到各个数据组的最大数值,再通过一个访存处理单元读取各个数据组的最大数值,再通过一个运算处理单元接收各个数据组的最大数值并对接收的数据进行选择运算,输出各个数据组的最大数值中的最大数值,得到输入数据的最大值。

具体的,以运算softmax的第一步的运算项为例,可以将输入数据分为16个数据组为例,确定输入数据中的最大数值的运算可以包括下表5所示的运算,可以通过RPU的处理阵列的比较操作并行分别对16个数据组进行比较,如图13、图14所示,访存处理单元执行load运算从共享存储器中读取各个数据组的输入数据,通过运算处理单元执行减法和选择运算选择出16个数据组中每个数据组内的最大数值,通过访存处理单元执行sel运算将每个数据组的最大数值存入共享存储器。最后,将16个数据组的最大数值相互比较,从而得出输入数据的最大数值。利用RPU能够并行处理数据的特性,从而加速处理数据,提高了效率。

表5

具体实施时,针对运算项中以e为底的指数函数,本实施例提出,通过一个访存处理单元读取输入数据,再通过一个运算处理单元将输入数据与输入数据的最大数值做减法运算,通过一个运算处理单元将减法运算的结果与

具体的,以运算softmax的第二步的运算项为例,计算e

式中的u

此时,就将输入数据的范围约化到了[-1,0]之间,从而可以采用泰勒展开求解

最后将得到的结果进行移位处理,就可以得到

具体的,计算

将所有的e

表6

具体实施时,对于运算项中以e为底的对数函数,本实施例提出,所述对数函数的输入项为以e为底的指数函数的累加,将指数函数的累加转化为以2为底以w为指数的指数函数与k的乘积,通过运算处理单元进行前导0运算得到w的值,对以e为底的指数函数的累加进行移位操作得到k的值,基于w的值和k的值将所述对数函数进行泰勒展开后得到多项式,通过运算处理单元对多项式进行运算得到所述对数函数的输出。

具体的,以运算softmax的第三步的运算项为例,将求出的e

ln(∑e

根据e

表7

具体实施时,在运算softmax的第四步的运算项过程中,为求解

具体实施时,在通过可重构处理阵列来依次实现各基础运算的过程中,当每个运算处理单元需要与自身非所在行或非所在列的处理单元进行数据传输时,通过与该运算处理单元存在数据传输互联的处理单元执行路由运算,实现该运算处理单元与自身非所在行或非所在列的处理单元进行数据传输;或者,将该运算处理单元的数据输出至全局寄存器中存储,供该运算处理单元非所在行或非所在列的处理单元来读取数据。

具体实施时,可以将上述可重构处理器上多种神经网络激活函数计算方法采用python语言进行仿真测试,并且采取输入数据为(-101,101)之间的随机数,输入数据个数为(1,100)之间的随机数,轮次100次。根据最终仿真的结果,最大误差约为0.01,为6~7位2进制小数的精度,可以通过提高泰勒展开的阶数来提高精度,此处为了减小功耗和提高运算精度,并没有提高泰勒展开的精度。

上述可重构处理器上多种神经网络激活函数计算方法主要通过泰勒展开的方式,实现了可重构架构上神经网络激活函数的运算。并且在softmax函数的计算中,采用了减法代替除法,换底公式结合移位代替e

另外,上述可重构处理器上多种神经网络激活函数计算方法具有一定的灵活性,可以定制化地针对应用确定展开阶数,从而满足各种精度数据的需求,在功耗、计算效率和精度上达到较好的平衡。

基于同一发明构思,本发明实施例中还提供了一种用于实现多种神经网络激活函数计算的可重构处理器,如下面的实施例所述。由于用于实现多种神经网络激活函数计算的可重构处理器解决问题的原理与可重构处理器上多种神经网络激活函数计算方法相似,因此用于实现多种神经网络激活函数计算的可重构处理器的实施可以参见可重构处理器上多种神经网络激活函数计算方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。

图19是本发明实施例的用于实现多种神经网络激活函数计算的可重构处理器的一种结构框图,如图19所示,包括:

共享存储器1902,用于存储输入数据;

可重构处理阵列1904,用于根据神经网络激活函数拆分后各基础运算的计算顺序,从共享存储器中读取输入数据来依次实现各基础运算,其中,所述可重构处理阵列中四周边缘上的处理单元用于执行访存操作,称为访存处理单元,所述可重构处理阵列中除了四周边缘上的处理单元之外的其他处理单元用于执行运算操作,称为运算处理单元,四周边缘上的处理单元与所在行上的或所在列上的用于执行运算操作的处理单元进行数据传输,所述可重构处理阵列中每个处理单元与自身上下左右方位上存在的且相邻的处理单元进行数据传输。

在另外一个实施例中,还提供了一种软件,该软件用于执行上述实施例及优选实施方式中描述的技术方案。

在另外一个实施例中,还提供了一种存储介质,该存储介质中存储有上述软件,该存储介质包括但不限于:光盘、软盘、硬盘、可擦写存储器等。

本发明实施例实现了如下技术效果:提出了将神经网络激活函数拆分为基础运算,进而根据神经网络激活函数中各基础运算的计算顺序,通过可重构处理阵列从共享存储器中读取输入数据来依次实现各基础运算,实现了在现有可重构处理阵列结构上实现神经网络激活函数的运算,无需改变可重构处理阵列结构,也无需在可重构处理阵列结构上添加电路结构,即根据不同神经网络激活函数的算法需求配置可重构处理阵列中不同的处理单元进行相应的运算,使得可以在可重构处理阵列结构上利用加法、减法、乘法、移位等基础运算实现了复杂的激活函数运算,从而有利于简化激活函数运算的电路设计,有利于提高电路运算速度和吞吐率,由于可重构处理阵列中的处理单元的运算算法可以灵活配置且采用流水线的输入输出方式,使得有利于满足不同变化的激活函数的运算,使得具备可扩展性,也有利于提高处理单元的利用率。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号