CN112540946A - 可重构处理器及其上多种神经网络激活函数计算方法 - Google Patents
可重构处理器及其上多种神经网络激活函数计算方法 Download PDFInfo
- Publication number
- CN112540946A CN112540946A CN202011511272.XA CN202011511272A CN112540946A CN 112540946 A CN112540946 A CN 112540946A CN 202011511272 A CN202011511272 A CN 202011511272A CN 112540946 A CN112540946 A CN 112540946A
- Authority
- CN
- China
- Prior art keywords
- processing unit
- reconfigurable
- neural network
- processing units
- 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.)
- Pending
Links
- 230000006870 function Effects 0.000 title claims abstract description 233
- 230000004913 activation Effects 0.000 title claims abstract description 112
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 105
- 238000000034 method Methods 0.000 title claims abstract description 49
- 238000012545 processing Methods 0.000 claims abstract description 317
- 238000004364 calculation method Methods 0.000 claims abstract description 58
- 230000002093 peripheral effect Effects 0.000 claims abstract description 21
- 238000003860 storage Methods 0.000 claims abstract description 21
- 230000005540 biological transmission Effects 0.000 claims abstract description 19
- 238000009825 accumulation Methods 0.000 claims description 16
- 230000008569 process Effects 0.000 claims description 9
- 238000010586 diagram Methods 0.000 description 28
- 238000013461 design Methods 0.000 description 9
- 238000004422 calculation algorithm Methods 0.000 description 7
- 238000004590 computer program Methods 0.000 description 7
- 230000002349 favourable effect Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 3
- 238000009795 derivation Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 241000282414 Homo sapiens Species 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/167—Interprocessor communication using a common memory, e.g. mailbox
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/177—Initialisation or configuration control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- 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
- G06N3/048—Activation functions
-
- 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/10—Interfaces, programming languages or software development kits, e.g. for simulating neural networks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Molecular Biology (AREA)
- Computational Linguistics (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Advance Control (AREA)
Abstract
本发明实施例提供了一种可重构处理器及其上多种神经网络激活函数计算方法,其中,该方法包括:将神经网络激活函数拆分为基础运算;根据神经网络激活函数中各基础运算的计算顺序,通过可重构处理器的可重构处理阵列从共享存储器中读取输入数据来依次实现各基础运算,可重构处理阵列中四周边缘上的处理单元可用于执行访存操作及其他运算操作,称为访存处理单元,可重构处理阵列中除了四周边缘上的处理单元之外的其他处理单元可用于执行运算操作,称为运算处理单元,四周边缘上的处理单元与所在行上的或所在列上的用于执行运算操作的处理单元进行数据传输,可重构处理阵列中每个处理单元与自身上下左右方位上存在的且相邻的处理单元进行数据传输。
Description
技术领域
本发明涉及可重构处理器技术领域,特别涉及一种可重构处理器及其上多种神经网络激活函数计算方法。
背景技术
近年来,随着人工智能、云计算、大数据等技术的发展,人类对计算的需求越来越高,对芯片性能的需求也日益提高。然而,随着芯片尺寸的逐步缩小,摩尔定律逐渐逼近物理极限,集成电路的功率难以继续提升,因此要求芯片设计从功率性能方面的提升转移到能量效率和灵活性方面的提升。因此,能够针对某一领域进行优化设计的专用领域的芯片结构设计则成为了当今芯片设计的主流,而兼顾高性能、高能效比和高灵活性则成为今天芯片设计的重要指标。
同时,随着神经网络的不断发展,网络结构和激活函数也在不断地变化,对于专门的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是本发明实施例提供的一种计算ex的计算流程示意图;
图16是本发明实施例提供的一种计算ex时可重构处理阵列中处理单元的排布示意图;
图17是本发明实施例提供的一种计算ln(∑ex)的计算流程示意图;
图18是本发明实施例提供的一种计算ln(∑ex)时可重构处理阵列中处理单元的排布示意图;
图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
运算符号 | 含义 |
Load | 取数,取出存储器中的数据 |
Sel | 选择,输入a,b,c,根据a的值,选则b或c输出 |
Save | 存储,将数据存入存储器中 |
具体实施时,对于对称且允许分段泰勒展开拟合的神经网络激活函数,可以通过以下步骤在可重构处理阵列上运算,例如,
将神经网络激活函数拆分为基础运算,包括:
对于对称且允许分段泰勒展开拟合的神经网络激活函数,根据对称将该神经网络激活函数拆分为第一对称部分和第二对称部分,将第一对称部分的输入数据划分为多个数据段,将每个数据段的运算依次拆分为减法、选择运算以及乘累加运算,将各个数据段的乘累加运算结果进行加法运算,将累加结果减第一对称部分的输出最大值并进行选择运算得到第一对称部分的输出数据,用第一对称部分的输出最大值减去第一对称部分的输出数据并进行选择运算得到第二对称部分的输出数据;
根据神经网络激活函数中各基础运算的计算顺序,通过可重构处理阵列来依次实现各基础运算,包括:
通过所述可重构处理阵列中的一个访存处理单元从共享存储器中依次各数据段中的一个数值,通过多个运算处理单元分别将读取的数值与划分数据段的端点数值做减法,通过多个运算处理单元组成第一级选择器,第一级选择器中的每个运算处理单元对应一个数据段,第一级选择器中的每个运算处理单元基于减法结果在读取的数值和对应数据段的最大值中输出最小值;通过多个运算处理单元组成第二级选择器,第二级选择器中的每个运算处理单元对应前一个数据段,第二级选择器中的第一个运算处理单元输出第一级选择器中第一个运算处理单元的输出,第二级选择器中的其他运算处理单元在第一级选择器中对应运算处理单元的输出和前一个数据段的最大值中输出最大值,通过运算处理单元分别对第二级选择器中的运算处理单元的输出做乘累加运算,通过运算处理单元对各乘累加运算的结果进行加法运算,通过运算处理单元对加法运算的结果减1并进行选择运算,得到第一对称部分的输出数据,通过运算处理单元用1减去第一对称部分的输出数据并进行选择运算,得到第二对称部分的输出数据。
具体实施时,上述对称且允许分段泰勒展开拟合的神经网络激活函数以S型生长曲线函数(即Sigmoid函数)和双曲正切函数(即Tanh函数)为例。Sigmoid函数为是一种生物学中常见的S型函数。它可以将输入的变量映射到(0,1)之间,如图5所示,具有单调增和易于求导的特性。在神经网络中,如果我们的输出单元处理的是二分类问题,那么利用广义线性分布,我们就可以得到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-7,可以忽略不计。在[0,15]区间,采用分段泰勒函数展开的函数,展开到第三阶,得到近似函数,具体的精度损失和泰勒展开函数见下表3,表中仅展示了区间[0,30],负数区间可以通过关于x=0的中心对称性得到。
表3
泰勒展开函数 | 最大精度损失 | |
[0,4) | 3.56*10<sup>-3</sup>*x<sup>3</sup>-5.71*10<sup>-2</sup>*x<sup>2</sup>+2.93*10<sup>-1</sup>*x+4.92*10<sup>-1</sup> | 7.53*10<sup>-3</sup> |
[4,8) | 4.96*10<sup>-4</sup>*x<sup>3</sup>-1.05*10<sup>-2</sup>*x<sup>2</sup>+7.51*10<sup>-2</sup>*x+8.19*10<sup>-1</sup> | 5.23*10<sup>-4</sup> |
[8,15) | 3.21*10<sup>-6</sup>*x<sup>3</sup>-1.22*10<sup>-4</sup>*x<sup>2</sup>+1.54*10<sup>-3</sup>*x+9.94*10<sup>-1</sup> | 3.71*10<sup>-5</sup> |
[15,∞) | 1 | 3.06*10<sup>-7</sup> |
具体实施时,对于可重构处理阵列上的PE,执行普通的运算时,PE的输入为a,b,则输出为PE执行的函数f(a,b),并可以选择a,b中的某一个值作为输出,具体是输出哪一个值,取决于输入a,b在配置PE的编译指令中的位置,因此,可以通过配置实现可重构处理阵列中各个PE执行的具体运算及输出。
具体的,上述sigmoid函数的运算采用了基于分段积分累加的实现方式,最后基于函数的对称性,实现了该函数的流水计算,可通过利用3个全局PE以及28个处理单元PE实现。
具体的,Tanh函数的运算也可以采用与运算sigmoid函数类似的做法,只是分段区间不同,以[0,1),[1,2),[2,4),[4,∞)为例。运算tanh的计算流程图如图11所示,运算tanh函数时可重构处理阵列中处理单元的排布示意图如图12所示,具体的精度损失和泰勒展开函数见下表4所示,表中仅展示了区间[0,15],负数区间可以通过关于x=0的中心对称性得到。
表4
泰勒展开函数 | 最大精度损失 | |
[0,1) | 5.70*10<sup>-2</sup>*x<sup>3</sup>-4.57*10<sup>-1</sup>*x<sup>2</sup>+1.17*100*x-1.50*10<sup>-2</sup> | 1.50*10<sup>-2</sup> |
[1,2) | 8.69*10<sup>-2</sup>*x<sup>3</sup>-0.559*10<sup>-1</sup>*x<sup>2</sup>+1.27*100*x-3.83*10<sup>-2</sup> | 3.27*10<sup>-4</sup> |
[2,4) | 7.93*10<sup>-3</sup>*x<sup>3</sup>-8.42*10<sup>-2</sup>*x<sup>2</sup>+3.01*10<sup>-1</sup>*x+6.37*10<sup>-1</sup> | 1.04*10<sup>-3</sup> |
[4,∞) | 1 | 6.71*10<sup>-4</sup> |
具体实施时,对于包括除法的神经网络激活函数,通过以下步骤实现在可重构处理阵列上的运算,例如,
将神经网络激活函数拆分为基础运算,包括:
对于包括除法的神经网络激活函数,对该神经网络激活函数的输入数据减去输入数据的最大值以避免溢出,并将该神经网络激活函数中的除法转化为减法,根据该神经网络激活函数中的减法将参与运算的参数划分为不同的运算项;
根据神经网络激活函数中各基础运算的计算顺序,通过可重构处理阵列来依次实现各基础运算,包括:
通过可重构处理阵列来依次实现各运算项的运算。
具体实施时,上述包括除法的神经网络激活函数以Softmax为例,Softmax的表达式为
通过防溢出处理(即将输入数据x替换为x-xmax),可以将softmax函数转化为
即将输入数x-xmax,从而避免ex函数的结果过大导致溢出。由于电路中实现除法较为复杂,所以本发明中采用减法代替除法,减小了产生的功耗和消耗的资源,从而提高了运算的速度和效率。采用对数变化,可以将softmax函数转化为
因此,对softmax函数运算主要分为四个部分,第一部分是防溢出部分,即求解x-xmax(即上述运算项)。第二部分为计算ex(即上述运算项)。第三部分为将求出的ex累加,并且求出ln(∑ex)(即上述运算项)。第四部分为求解(即上述运算项)。
具体实施时,为实现防溢出处理,提出了将输入数据减去输入数据的最大值,具体通过以下方式找出输入数据的最大值,例如,将输入数据划分为多个数据组,针对每个数据组,通过一个访存处理单元读取输入数据,通过一个运算处理单元接收输入数据并对输入数据进行选择运算,输出该数据组的最大数值,对多个数据组并行处理得到各个数据组的最大数值,再通过一个访存处理单元读取各个数据组的最大数值,再通过一个运算处理单元接收各个数据组的最大数值并对接收的数据进行选择运算,输出各个数据组的最大数值中的最大数值,得到输入数据的最大值。
具体的,以运算softmax的第一步的运算项为例,可以将输入数据分为16个数据组为例,确定输入数据中的最大数值的运算可以包括下表5所示的运算,可以通过RPU的处理阵列的比较操作并行分别对16个数据组进行比较,如图13、图14所示,访存处理单元执行load运算从共享存储器中读取各个数据组的输入数据,通过运算处理单元执行减法和选择运算选择出16个数据组中每个数据组内的最大数值,通过访存处理单元执行sel运算将每个数据组的最大数值存入共享存储器。最后,将16个数据组的最大数值相互比较,从而得出输入数据的最大数值。利用RPU能够并行处理数据的特性,从而加速处理数据,提高了效率。
表5
运算符号 | 含义 |
Load | 取数,取出存储器中的数据 |
Sel | 选择,输入a,b,c,根据a的值,选则b或c输出 |
- | 减法,输入a,b,输出a-b |
Save | 存储,将数据存入储存器中 |
具体实施时,针对运算项中以e为底的指数函数,本实施例提出,通过一个访存处理单元读取输入数据,再通过一个运算处理单元将输入数据与输入数据的最大数值做减法运算,通过一个运算处理单元将减法运算的结果与做乘法运算,将指数函数换为以2为底数的指数函数后,乘法运算的结果为换底后指数函数的输入数据,换底后指数函数的输入数据包括整数部分和小数部分,对以2为底数且以小数部分为指数的指数函数进行泰勒展开得到多项式,通过运算处理单元对多项式进行对应的运算,得到以2为底数且以小数部分为指数的指数函数的输出,通过运算处理单元对输出和所述整数部分进行移位运算,得指数函数的输出,通过运算处理单元对指数函数的输出进行累加运算。
具体的,以运算softmax的第二步的运算项为例,计算ex。值得注意的是,此处要对输入数据采取减去xmax的操作,从而防止溢出。首先采用换底公式,ex变为
式中的ui为采用换底公式后,变化后的输入数据的整数部分,vi则为小数部分,yi=x-xmax。而根据二进制数的特点,我们可以将上式再次进行变化
具体的,计算的过程采用的基础运算如下表6所示,如图15、图16所示,先使用访存处理单元执行load执行取数运算,将输入数据从存储器中取出,并通过执行减法减去上一阶段的防溢出处理得到的xmax,完成防溢出,更新数据。然后通过乘法运算,将防溢出处理后的数据与相乘,得到ui+vi通过与运算,能分别得到ui和vi,将ui存储起来,并通过运算处理单元执行乘累加将vi进行多项式计算,具体的计算为公式(7)。最后使用取数运算,从存储器中取出ui,并对多项式计算的结果进行移位,得到最终的输出结果,并把它存在存储器中。
将所有的ex通过加法运算累加,得到∑ex,并把它存在存储器中,以便进行下一部分的计算。
表6
运算符号 | 含义 |
Load | 取数,取出存储器中的数据 |
Sel | 选择,输入a,b,c,根据a的值,选则b或c输出 |
And | 与运算,输入a,b,输出a&b |
>> | 移位运算,输入a,输出移位后的a |
+ | 加法,输入a,b,输出a+b |
- | 减法,输入a,b,输出a-b |
* | 乘法,输入a,b,输出a*b |
MAC | 乘累加,输入a,b,c,执行ab+c |
Save | 存储,将数据存入储存器中 |
具体实施时,对于运算项中以e为底的对数函数,本实施例提出,所述对数函数的输入项为以e为底的指数函数的累加,将指数函数的累加转化为以2为底以w为指数的指数函数与k的乘积,通过运算处理单元进行前导0运算得到w的值,对以e为底的指数函数的累加进行移位操作得到k的值,基于w的值和k的值将所述对数函数进行泰勒展开后得到多项式,通过运算处理单元对多项式进行运算得到所述对数函数的输出。
具体的,以运算softmax的第三步的运算项为例,将求出的ex累加,并且求出ln(∑ex)。累加的部分,可以在运算softmax的第二步的运算项过程中同步实现,每计算出一个结果,就将结果累加到全局寄存器中。而计算ln(∑ex)的中心思想为泰勒函数展开。对ln(∑ex)采取以下变化,可以得到
ln(∑ex)=ln(2w*k) (8)
根据ex的特点,我们可以知道,∑ex的值一定为正数,因此在二进制数中,该数是采用原码存储的。而通过移位变化,我们就可以得到k的值,将计算的数据约化在[0,1]区间,从而能够进行泰勒展开的计算。而w的值通过前导0的计算得出。得到w的值之后,将∑ex进行移位操作,就可以得到k的值。再对式(8)进行变化,并进行泰勒展开,可以得到最终的计算表达式,式(9)。具体的,计算ln(∑ex)的过程采用的基础运算如下表7所示,计算ln(∑ex)的计算流程示意图如图17所示,计算ln(∑ex)时可重构处理阵列中处理单元的排布示意图如图18所示。
表7
运算符号 | 含义 |
Load | 取数,取出存储器中的数据 |
Clz | 前导0计算,计算输入数据中前导的0的个数 |
+ | 加法,输入a,b,输出a+b |
- | 减法,输入a,b,输出a-b |
* | 乘法,输入a,b,输出a*b |
MAC | 乘累加,输入a,b,c,执行ab+c |
Save | 存储,将数据存入储存器中 |
具体实施时,在运算softmax的第四步的运算项过程中,为求解由于第一步已经求解出xmax,第三步已经求解出因此将要减去的数更新为再带入第二步的ex函数计算即可,计算流程图和第二步的计算流程图完全相同。
具体实施时,在通过可重构处理阵列来依次实现各基础运算的过程中,当每个运算处理单元需要与自身非所在行或非所在列的处理单元进行数据传输时,通过与该运算处理单元存在数据传输互联的处理单元执行路由运算,实现该运算处理单元与自身非所在行或非所在列的处理单元进行数据传输;或者,将该运算处理单元的数据输出至全局寄存器中存储,供该运算处理单元非所在行或非所在列的处理单元来读取数据。
具体实施时,可以将上述可重构处理器上多种神经网络激活函数计算方法采用python语言进行仿真测试,并且采取输入数据为(-101,101)之间的随机数,输入数据个数为(1,100)之间的随机数,轮次100次。根据最终仿真的结果,最大误差约为0.01,为6~7位2进制小数的精度,可以通过提高泰勒展开的阶数来提高精度,此处为了减小功耗和提高运算精度,并没有提高泰勒展开的精度。
上述可重构处理器上多种神经网络激活函数计算方法主要通过泰勒展开的方式,实现了可重构架构上神经网络激活函数的运算。并且在softmax函数的计算中,采用了减法代替除法,换底公式结合移位代替ex的方式,减少了需要存储的系数和运算的时间,因此从而进一步减少器硬件资源的开销,从而减少面积和功耗。
另外,上述可重构处理器上多种神经网络激活函数计算方法具有一定的灵活性,可以定制化地针对应用确定展开阶数,从而满足各种精度数据的需求,在功耗、计算效率和精度上达到较好的平衡。
基于同一发明构思,本发明实施例中还提供了一种用于实现多种神经网络激活函数计算的可重构处理器,如下面的实施例所述。由于用于实现多种神经网络激活函数计算的可重构处理器解决问题的原理与可重构处理器上多种神经网络激活函数计算方法相似,因此用于实现多种神经网络激活函数计算的可重构处理器的实施可以参见可重构处理器上多种神经网络激活函数计算方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图19是本发明实施例的用于实现多种神经网络激活函数计算的可重构处理器的一种结构框图,如图19所示,包括:
共享存储器1902,用于存储输入数据;
可重构处理阵列1904,用于根据神经网络激活函数拆分后各基础运算的计算顺序,从共享存储器中读取输入数据来依次实现各基础运算,其中,所述可重构处理阵列中四周边缘上的处理单元用于执行访存操作,称为访存处理单元,所述可重构处理阵列中除了四周边缘上的处理单元之外的其他处理单元用于执行运算操作,称为运算处理单元,四周边缘上的处理单元与所在行上的或所在列上的用于执行运算操作的处理单元进行数据传输,所述可重构处理阵列中每个处理单元与自身上下左右方位上存在的且相邻的处理单元进行数据传输。
在另外一个实施例中,还提供了一种软件,该软件用于执行上述实施例及优选实施方式中描述的技术方案。
在另外一个实施例中,还提供了一种存储介质,该存储介质中存储有上述软件,该存储介质包括但不限于:光盘、软盘、硬盘、可擦写存储器等。
本发明实施例实现了如下技术效果:提出了将神经网络激活函数拆分为基础运算,进而根据神经网络激活函数中各基础运算的计算顺序,通过可重构处理阵列从共享存储器中读取输入数据来依次实现各基础运算,实现了在现有可重构处理阵列结构上实现神经网络激活函数的运算,无需改变可重构处理阵列结构,也无需在可重构处理阵列结构上添加电路结构,即根据不同神经网络激活函数的算法需求配置可重构处理阵列中不同的处理单元进行相应的运算,使得可以在可重构处理阵列结构上利用加法、减法、乘法、移位等基础运算实现了复杂的激活函数运算,从而有利于简化激活函数运算的电路设计,有利于提高电路运算速度和吞吐率,由于可重构处理阵列中的处理单元的运算算法可以灵活配置且采用流水线的输入输出方式,使得有利于满足不同变化的激活函数的运算,使得具备可扩展性,也有利于提高处理单元的利用率。
本领域内的技术人员应明白,本发明的实施例可提供为方法、***、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种可重构处理器上多种神经网络激活函数计算方法,其特征在于,包括:
将神经网络激活函数拆分为基础运算;
根据神经网络激活函数中各基础运算的计算顺序,通过可重构处理器的可重构处理阵列从共享存储器中读取输入数据来依次实现各基础运算,其中,所述可重构处理阵列中四周边缘上的处理单元用于执行访存操作,称为访存处理单元,所述可重构处理阵列中除了四周边缘上的处理单元之外的其他处理单元用于执行运算操作,称为运算处理单元,四周边缘上的处理单元与所在行上的或所在列上的用于执行运算操作的处理单元进行数据传输,所述可重构处理阵列中每个处理单元与自身上下左右方位上存在的且相邻的处理单元进行数据传输。
2.如权利要求1所述的可重构处理器上多种神经网络激活函数计算方法,其特征在于,所述基础运算包括:加法、减法、乘法、乘累加运算以及选择运算。
3.如权利要求1所述的可重构处理器上多种神经网络激活函数计算方法,其特征在于,
将神经网络激活函数拆分为基础运算,包括:
对于线性分段的神经网络激活函数,将该神经网络激活函数拆分为选择运算;
根据神经网络激活函数中各基础运算的计算顺序,通过可重构处理阵列来依次实现各基础运算,包括:
通过所述可重构处理阵列中的多个访存处理单元从共享存储器中读取输入数据,通过每个访存处理单元将输入数据传输给自身所在行或所在列的运算处理单元进行选择运算,通过运算处理单元将选择运算的计算结果传输给自身所在行或所在列的访存处理单元,进而将计算结果存入共享存储器,其中,读取输入数据的访存处理单元与存储计算结果的访存处理单元为不同的访存处理单元,不同运算处理单元输出的计算结果传输给不同的访存处理单元。
4.如权利要求1所述的可重构处理器上多种神经网络激活函数计算方法,其特征在于,
将神经网络激活函数拆分为基础运算,包括:
对于对称且可通过分段泰勒展开拟合的神经网络激活函数,根据对称将该神经网络激活函数拆分为第一对称部分和第二对称部分,将第一对称部分的输入数据划分为多个数据段,将每个数据段的运算依次拆分为减法、选择运算以及乘累加运算,将各个数据段的乘累加运算结果进行加法运算,将累加结果与第一对称部分的输出最大值比较并进行选择运算得到第一对称部分的输出数据,用第一对称部分的输出最大值减去第一对称部分的输出数据并进行选择运算得到第二对称部分的输出数据;
根据神经网络激活函数中各基础运算的计算顺序,通过可重构处理阵列来依次实现各基础运算,包括:
通过所述可重构处理阵列中的一个访存处理单元从共享存储器中依次各数据段中的一个数值,通过多个运算处理单元分别将读取的数值与划分数据段的端点数值做减法,通过多个运算处理单元组成第一级选择器,第一级选择器中的每个运算处理单元对应一个数据段,第一级选择器中的每个运算处理单元基于减法结果在读取的数值和对应数据段的最大值中输出最小值;通过多个运算处理单元组成第二级选择器,第二级选择器中的每个运算处理单元对应前一个数据段,第二级选择器中的第一个运算处理单元输出第一级选择器中第一个运算处理单元的输出,第二级选择器中的其他运算处理单元在第一级选择器中对应运算处理单元的输出和前一个数据段的最大值中输出最大值,通过运算处理单元分别对第二级选择器中的运算处理单元的输出做乘累加运算,通过运算处理单元对各乘累加运算的结果进行加法运算,通过运算处理单元对加法运算的结果减第一对称部分的输出最大值并进行选择运算,得到第一对称部分的输出数据,通过运算处理单元用第一对称部分的输出最大值减去第一对称部分的输出数据并进行选择运算,得到第二对称部分的输出数据。
5.如权利要求1至4中任一项所述的可重构处理器上多种神经网络激活函数计算方法,其特征在于,
将神经网络激活函数拆分为基础运算,包括:
对于包括指数累加和指数除法的神经网络激活函数,对该神经网络激活函数的输入数据减去输入数据的最大值以防止溢出,并将该神经网络激活函数中的除法转化为减法,根据该神经网络激活函数中的减法将参与运算的参数划分为不同的运算项;
根据神经网络激活函数中各基础运算的计算顺序,通过可重构处理阵列来依次实现各基础运算,包括:
通过可重构处理阵列来依次实现各运算项的运算。
6.如权利要求5所述的可重构处理器上多种神经网络激活函数计算方法,其特征在于,通过可重构处理阵列来依次实现各运算项的运算,包括:
将输入数据划分为多个数据组,针对每个数据组,通过一个访存处理单元读取输入数据,通过一个运算处理单元接收输入数据并对输入数据进行选择运算,输出该数据组的最大数值,对多个数据组并行处理得到各个数据组的最大数值,再通过一个访存处理单元读取各个数据组的最大数值,再通过一个运算处理单元接收各个数据组的最大数值并对接收的数据进行选择运算,输出各个数据组的最大数值中的最大数值,得到输入数据的最大值。
7.如权利要求5所述的可重构处理器上多种神经网络激活函数计算方法,其特征在于,通过可重构处理阵列来依次实现各运算项的运算,包括:
8.如权利要求7所述的可重构处理器上多种神经网络激活函数计算方法,其特征在于,通过可重构处理阵列来依次实现各运算项的运算,包括:
对于运算项中以e为底的对数函数,所述对数函数的输入项为以e为底的指数函数的累加,将指数函数的累加转化为以2为底以w为指数的指数函数与k的乘积,通过运算处理单元进行前导0运算得到w的值,对以e为底的指数函数的累加进行移位操作得到k的值,基于w的值和k的值将所述对数函数进行泰勒展开后得到多项式,通过运算处理单元对多项式进行运算得到所述对数函数的输出。
9.如权利要求5所述的可重构处理器上多种神经网络激活函数计算方法,其特征在于,通过可重构处理阵列来依次实现各基础运算,包括:
在通过可重构处理阵列来依次实现各基础运算的过程中,当每个运算处理单元需要与自身非所在行或非所在列的处理单元进行数据传输时,通过与该运算处理单元存在数据传输互联的处理单元执行路由运算,实现该运算处理单元与自身非所在行或非所在列的处理单元进行数据传输;或者,将该运算处理单元的数据输出至全局寄存器中存储,供该运算处理单元非所在行或非所在列的处理单元来读取数据。
10.一种用于实现多种神经网络激活函数计算的可重构处理器,其特征在于,包括:
共享存储器,用于存储输入数据;
可重构处理阵列,用于根据神经网络激活函数拆分后各基础运算的计算顺序,从共享存储器中读取输入数据来依次实现各基础运算,其中,所述可重构处理阵列中四周边缘上的处理单元用于执行访存操作,称为访存处理单元,所述可重构处理阵列中除了四周边缘上的处理单元之外的其他处理单元用于执行运算操作,称为运算处理单元,四周边缘上的处理单元与所在行上的或所在列上的用于执行运算操作的处理单元进行数据传输,所述可重构处理阵列中每个处理单元与自身上下左右方位上存在的且相邻的处理单元进行数据传输。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011511272.XA CN112540946A (zh) | 2020-12-18 | 2020-12-18 | 可重构处理器及其上多种神经网络激活函数计算方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011511272.XA CN112540946A (zh) | 2020-12-18 | 2020-12-18 | 可重构处理器及其上多种神经网络激活函数计算方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112540946A true CN112540946A (zh) | 2021-03-23 |
Family
ID=75019265
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011511272.XA Pending CN112540946A (zh) | 2020-12-18 | 2020-12-18 | 可重构处理器及其上多种神经网络激活函数计算方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112540946A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115001955A (zh) * | 2022-06-08 | 2022-09-02 | 苏州花园集信息科技有限公司 | 一种运维数据采集***及其方法 |
WO2023116400A1 (zh) * | 2021-12-20 | 2023-06-29 | 深圳市中兴微电子技术有限公司 | 向量运算方法、向量运算器、电子设备和存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106775599A (zh) * | 2017-01-09 | 2017-05-31 | 南京工业大学 | 递归神经网络的多计算单元粗粒度可重构***及方法 |
US20190042922A1 (en) * | 2018-06-29 | 2019-02-07 | Kamlesh Pillai | Deep neural network architecture using piecewise linear approximation |
CN109409511A (zh) * | 2018-09-25 | 2019-03-01 | 西安交通大学 | 一种用于动态可重构阵列的卷积运算数据流调度方法 |
CN109472356A (zh) * | 2018-12-29 | 2019-03-15 | 南京宁麒智能计算芯片研究院有限公司 | 一种可重构神经网络算法的加速装置及方法 |
CN110516801A (zh) * | 2019-08-05 | 2019-11-29 | 西安交通大学 | 一种高吞吐率的动态可重构卷积神经网络加速器架构 |
CN110688088A (zh) * | 2019-09-30 | 2020-01-14 | 南京大学 | 一种面向神经网络的通用非线性激活函数计算装置和方法 |
-
2020
- 2020-12-18 CN CN202011511272.XA patent/CN112540946A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106775599A (zh) * | 2017-01-09 | 2017-05-31 | 南京工业大学 | 递归神经网络的多计算单元粗粒度可重构***及方法 |
US20190042922A1 (en) * | 2018-06-29 | 2019-02-07 | Kamlesh Pillai | Deep neural network architecture using piecewise linear approximation |
CN109409511A (zh) * | 2018-09-25 | 2019-03-01 | 西安交通大学 | 一种用于动态可重构阵列的卷积运算数据流调度方法 |
CN109472356A (zh) * | 2018-12-29 | 2019-03-15 | 南京宁麒智能计算芯片研究院有限公司 | 一种可重构神经网络算法的加速装置及方法 |
CN110516801A (zh) * | 2019-08-05 | 2019-11-29 | 西安交通大学 | 一种高吞吐率的动态可重构卷积神经网络加速器架构 |
CN110688088A (zh) * | 2019-09-30 | 2020-01-14 | 南京大学 | 一种面向神经网络的通用非线性激活函数计算装置和方法 |
Non-Patent Citations (2)
Title |
---|
吕青;蒋林;邓军勇;李雪婷;: "面向对数与指数函数的可重构阵列结构", 微电子学与计算机, no. 10, 5 October 2016 (2016-10-05) * |
李昂;王沁;李占才;万勇;: "基于FPGA的神经网络硬件实现方法", 北京科技大学学报, no. 01, 25 January 2007 (2007-01-25) * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023116400A1 (zh) * | 2021-12-20 | 2023-06-29 | 深圳市中兴微电子技术有限公司 | 向量运算方法、向量运算器、电子设备和存储介质 |
CN115001955A (zh) * | 2022-06-08 | 2022-09-02 | 苏州花园集信息科技有限公司 | 一种运维数据采集***及其方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10379816B2 (en) | Data accumulation apparatus and method, and digital signal processing device | |
CN110659015A (zh) | 使用分段线性逼近的深度神经网络架构 | |
CN110163353B (zh) | 一种计算装置及方法 | |
CN107305484B (zh) | 一种非线性函数运算装置及方法 | |
CN111915003A (zh) | 一种神经网络硬件加速器 | |
CN112540946A (zh) | 可重构处理器及其上多种神经网络激活函数计算方法 | |
EP3769208B1 (en) | Stochastic rounding logic | |
CN113590195B (zh) | 支持浮点格式乘加的存算一体化dram计算部件 | |
US20230221924A1 (en) | Apparatus and Method for Processing Floating-Point Numbers | |
US20240126507A1 (en) | Apparatus and method for processing floating-point numbers | |
Ramachandran et al. | Performance analysis of mantissa multiplier and dadda tree multiplier and implementing with DSP architecture | |
US11551087B2 (en) | Information processor, information processing method, and storage medium | |
Bruguera et al. | Design of a pipelined radix 4 CORDIC processor | |
JP7354736B2 (ja) | 情報処理装置、情報処理方法、情報処理プログラム | |
US20200192633A1 (en) | Arithmetic processing device and method of controlling arithmetic processing device | |
CN111178492B (zh) | 计算装置及相关产品、执行人工神经网络模型的计算方法 | |
WO2022126630A1 (zh) | 可重构处理器及其上多种神经网络激活函数计算方法 | |
JP7238376B2 (ja) | 情報処理システム及び情報処理システムの制御方法 | |
Hsiao et al. | Design of a low-cost floating-point programmable vertex processor for mobile graphics applications based on hybrid number system | |
CN109298848A (zh) | 双模式浮点除法平方根的电路 | |
CN116028011B (zh) | 一种用于gpu数据库任意精度十进制数据的计算方法 | |
Ueki et al. | Aqss: Accelerator of quantization neural networks with stochastic approach | |
US20240111525A1 (en) | Multiplication hardware block with adaptive fidelity control system | |
CN109416757A (zh) | 用于处理数值数据的方法、设备和计算机可读存储介质 | |
KR20230152414A (ko) | 페이지랭크 희소행렬 곱셈 연산을 위한 연산 장치 및 방법 |
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 |