CN109271202A - 一种异步Softmax硬件加速方法及加速器 - Google Patents
一种异步Softmax硬件加速方法及加速器 Download PDFInfo
- Publication number
- CN109271202A CN109271202A CN201811143727.XA CN201811143727A CN109271202A CN 109271202 A CN109271202 A CN 109271202A CN 201811143727 A CN201811143727 A CN 201811143727A CN 109271202 A CN109271202 A CN 109271202A
- Authority
- CN
- China
- Prior art keywords
- module
- softmax
- data
- asynchronous
- hardware
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 34
- 230000006870 function Effects 0.000 claims description 27
- 238000013461 design Methods 0.000 claims description 25
- 238000004590 computer program Methods 0.000 claims description 6
- 238000006073 displacement reaction Methods 0.000 claims description 6
- 230000006399 behavior Effects 0.000 claims description 3
- 230000010354 integration Effects 0.000 claims description 3
- 230000001360 synchronised effect Effects 0.000 abstract description 7
- 230000008901 benefit Effects 0.000 abstract description 4
- 238000004422 calculation algorithm Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 3
- 230000001186 cumulative effect Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 102100026816 DNA-dependent metalloprotease SPRTN Human genes 0.000 description 1
- 101710175461 DNA-dependent metalloprotease SPRTN Proteins 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013499 data model Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000013011 mating Effects 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000011056 performance test Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012731 temporal analysis Methods 0.000 description 1
- 238000000700 time series analysis Methods 0.000 description 1
Classifications
-
- 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/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3893—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
- Complex Calculations (AREA)
Abstract
本申请公开了一种异步Softmax硬件加速方法及加速器,所述加速方法包括如下步骤:S2:计算所有待计算数据中的最大值及所有所述待计算数据的e指数和;S4:根据所述最大值及所述e指数计算最终结果。与现有技术相比,本申请的全异步的Softmax硬件加速器具有计算速度快并且不占用CPU计算资源的优点。与同步实现Softmax函数相比,全异步的加速器具有低功耗、高性能以及模块性好的特点。
Description
技术领域
本申请涉及数据处理领域,特别涉及一种异步Softmax硬件加速方法及加速器。
背景技术
Softmax函数作为深度学习中的激活函数,在自然语言处理、人脸识别等领域中有着广泛的运用。但由于Softmax函数的计算过程中涉及到指数以及除法等相对复杂的运算,特别是在输入尺寸较大时,若使用CPU进行计算则会消耗较多的时间。为了加快Softmax函数的运算速度,人们把目光投向了硬件,寄希望于通过高并发的硬件来实现高效、高精度、低能耗的Softmax计算。而现场可编程门阵列(FPGA)作为可编程的硬件平台,具有成本低,速度快,高并行性的特点,相较专用集成电路(ASIC)更加适合用于小规模、低成本的使用场景。
现阶段所有的Softmax归一化函数的硬件实现都为同步实现,然而在FPGA上运行同步设计会受到FPGA复杂的布局布线的限制,使得时钟的频率维持在一个较低的水准,否则会有较大的时钟漂移问题。这直接导致了同步Softmax函数的FPGA实现性能不够理想,无法满足Softmax归一化函数大尺度输入下的性能要求。并且由于同步电路中时钟的频繁翻转,使得设计的电路功耗较大。
发明内容
本申请的目的在于克服上述问题或者至少部分地解决或缓解上述问题。
根据本申请的一个方面,提供了一种异步Softmax硬件加速方法,包括如下步骤:S2:计算所有待计算数据中的最大值及所有所述待计算数据的e指数和;S4:根据所述最大值及所述e指数计算最终结果。
可选地,所述步骤S2为通过softmax InUnit模块、Softmax MiddleUnit模块、SoftmaxEndUnit模块、FIFO模块,InUnit模块、MiiddleUnit模块及EndUnit模块计算所述最大值。
可选地,通过EXP模块采用大指数剥离法计算所有所述待计算数据的e指数,通过DIV模块采用移位相减法计算除法,通过Arbiter模块进行数据分配,将数据分配到4个所述EXP模块,通过Merge模块将所述DIV模块计算的结果进行拼接后输出。
可选地,所述softmax InUnit模块实现的功能如下式所示:
SoftmaxInUnit的模块架构如图4所示,其实现的功能为下式所示
由于DataIn1-max(DataIn1,DataIn2)以及DataIn2-max(DataIn1,DataIn2)中一定会有一个结果为0,故上式的计算相对简单,只需要计算一次e指数,再将结果加1(e0=1)即可。
可选地,所述SoftmaxInUnit模块包括:BroadCast模块;FindMax模块;Two_Add模块;ChooseExpData模块;ArbExpln模块;Exp模块;及ArbExpOut模块;
其中所述BroadCast模块将输入整合复制后分配到所述FindMax以及所述Two_Add模块中,所述FindMax找出两个输入的最大值,所述Two_Add运算DataIn1-max(DataIn1,DataIn2)以及DataIn2-max(DataIn1,DataIn2),所述ChooseExpData模块根据所述FIndMax给出的Enable信号选择出要用于计算E指数的数据,所述ArbExpIn模块、所述Exp模块与所述ArbExpOut模块均计算E指数。
可选地,所述SoftmaxMiddleUnit模块与所述SoftmaxEndUnit模块实现的功能均如下式所示:
由于DataIn1-max(DataIn1,DataIn2)以及DataIn2-max(DataIn1,DataIn2)中一定会有一个结果为0,故上式的计算需要计算一次e指数,一次乘法以及一次加法。
可选地,所述BroadCast模块将输入的16bit数据拆分成低位的7bit数据和高位的9bit数据,其中所述7bit数据输入到Dec模块中采用泰勒展开进行计算,所述9bit数据输入到Int模块中采用查找表进行计算,所述Dec模块中采用泰勒展开式对输入的7bit数据进行计算,设计中用到的e指数的泰勒展开式为所述Int模块中采用查找表法对输入的9bit数据进行计算,Mul模块进行乘法运算,由于exy=ex·ey,所以所述Int模块与所述Dec模块计算的结果必须相乘来得到最终的结果。
可选地,所述div模块由16个DivUnit模块串联而成,每个所述DivUnit模块中都包含减法器模块以及移位器模块,通过16次的移位与减法实现32bit数与16bit数的除法。
根据本申请的另一个方面,提供了一种异步Softmax硬件加速器,包括:softmaxInUnit模块、Softmax MiddleUnit模块、SoftmaxEndUnit模块、FIFO模块,InUnit模块、MiiddleUnit模块、EndUnit模块、EXP模块、DIV模块、Arbiter模块、及Merge模块,且所述异步Softmax硬件加速器使用上述任意一种所述的异步Softmax硬件加速方法。
根据本申请的另一个方面,提供了一种计算机设备,包括存储器、处理器和存储在所述存储器内并能由所述处理器运行的计算机程序,其中,所述处理器执行所述计算机程序时实现上述任一项所述的方法。
根据下文结合附图对本申请的具体实施例的详细描述,本领域技术人员将会更加明了本申请的上述以及其他目的、优点和特征。
附图说明
后文将参照附图以示例性而非限制性的方式详细描述本申请的一些具体实施例。附图中相同的附图标记标示了相同或类似的部件或部分。本领域技术人员应该理解,这些附图未必是按比例绘制的。附图中:
图1是Joint-Link模型简图;
图2是OnLine Softmax函数算法;
图3是根据本申请一个实施例的模块的全局架构;
图4是根据本申请一个实施例的SoftmaxInUnit的模块架构;
图5是根据本申请一个实施例的SoftmaxMiddleUnit以及SoftmaxEndUnit的模块架构;
图6是根据本申请一个实施例的exp模块架构;
图7是根据本申请一个实施例的Div模块架构;
图8是根据本申请一个实施例的加速器的系统框架;
图9是根据本申请一个实施例的加速器消耗的资源;
图10是根据本申请一个实施例的加速器的功耗情况;
图11是根据本申请一个实施例的加速器在不同输入尺寸下的性能;
图12是根据本申请一个实施例的计算设备系统示意图。
具体实施方式
异步电路由于设计的复杂性、时序分析的困难、以及配套EDA工具的缺失,长期处于被工业界遗忘的状态。但由于进十几年来的发展,由Asynchronous Research Center提出的Joint-Link模型对异步电路中的Bundled-Data模型创新性的提出了一种思路:将异步握手、数据存储、以及数据传输都统一集中到Link中,将Joint作为Link汇合的中心以及进行数据处理的场所,这大大降低了Bundled-Data类型的异步电路设计的难度,使得中大规模的异步电路设计成为了可能。
随着上述成果及许多其它异步电路的进展的出现,异步电路相较同步电路所特有的优良的特性也逐渐进入了人们的视线:
由于异步电路缺少时钟,进行大规模集成电路设计时,无需关注时钟歪斜,时钟树分布,对时序的要求也大为降低;
异步电路具有更好的模块性,设计时十分简单的对多个模块进行连接,无需考虑多个模块间的时序问题。并且能快速复用之前设计好的模块,大大缩短开发过程;
采用self-timed方法设计的异步电路在运行时,可根据具体的电路延迟,对不同支路进行延迟配置,达到极高的运行速度;
异步电路事件驱动以及无时钟的特性,决定了其运行的低功耗。尤其是在会处于长时间待机的电路中,例如物联网设备,相较同步电路具有压倒性的优势。
异步电路在FPGA上可通过快速的握手时间达到等效时钟频率1GHz,且没有同步电路中的各种时序问题。这在低端FPGA(具有相对较低的时钟频率,例如Spartan 6只有时钟频率25MHz)上可以得到很好的应用
基于以上原因,本申请选用基于Joint-Link模型来对softmax函数进行全异步的设计。
Joint-Link模型简介
Joint-Link模型是Asynchronous Research Center(ARC)提出一种针对异步Bundled-Data提出的一种设计模型。数据的传输与异步信号的握手都是在Link中完成,而数据的运算与Link之间的沟通则在Joint中完成。该模型将控制与计算完全分开,使设计难度大大降低。
图1展示了Link、Joint、以及本设计中用到的一些Joint类型的模型简图。(A)中为Link的模型,Link有两个输入fill与drain。当fill信号由0变为1后,Link的EMPTY信号会先变为0,然后FULL信号会变为1;当drain信号由0变为1后,Link的FULL信号会先变为0,然后EMPTY信号会变为1。Link也是有两个输出,EMPTY与FULL,他们的数值由fill与drain控制。EMPTY表示Link中储存的数据不可靠,可能已经被更新;FULL表示Link中的数据已经准备好被Joint拿去计算了。(B)中为Joint的门级电路,Joint根据左侧Link的FULL信号与右侧Link的EMPTY信号做出判断,是否drain左侧或者fill右侧的Link。
(C)中为FIFO电路的系统框图,通过控制最左侧Link的fill来控制数据的输入,控制最右侧Link的drain来控制数据的输出,最终达到对FIFO两侧时序的调节,在本设计中用FIFO来进行同步的接口与异步的softmax函数的时序调节。(D)中为一个仲裁器,在本设计中该仲裁器循环选择左侧两个Link中的一个Link,将其的数据传到右侧的Link中。(E)中为一个分配器,在本设计中该分配器根据左侧Link中的数据,将数据传到右侧的一个Link中。
Online Softmax算法
Online Softmax算法由英伟达公司的Maxim Milakov和Natalie Gimelshien提出,该算法本是为了在GPU上执行,经过一定变动后可很好的被用在集成电路设计中。该算法需输入两次数据,第一次计算所有输入数的最大值以及e指数结果的累加和;第二次计算并输出最终结果。相较于普通的Safe Softmax算法,减少了一次数据输入,极大的提高了运算效率。具体算法如图2中所示。
并且该论文提出了并行的计算方式,可以很好的利用FPGA的高并行计算能力,极大的加快运行速度。计算的公式为上式的xi,mV以及dV都属于实数域,其中定义为 该运算满足加法交换律、结合律、分配律,十分适合于FPGA硬件实现。
设计模块简介
模块的全局构架
图3为本申请该设计各模块的全局架构图,左图中靠左侧的黄色方框中为计算第一阶段的模块,右侧蓝色方框中为第二阶段的模块。第一阶段计算所有输入的最大值和其e指数结果的累加和,第二阶段计算最终结果并输出。其中第一阶段的累加和会用于第二阶段。
第一阶段的模块包括,Softmax InUnit、Softmax MiddleUnit、SoftmaxEndUnit、FIFO,InUnit、MiiddleUnit、EndUnit实现的功能皆为上述定义的运算。
第二阶段的模块包括Arbiter、EXP、DIV、Merge。EXP模块计算e指数的结果,采用大指数剥离法,DIV模块计算除法,采用移位相减法。其中Arbiter起到数据分配的作用,将数据分配到4个EXP模块,Merge模块将DIV模块计算的结果进行拼接后输出。
SoftmaxInUnit构架
SoftmaxInUnit的模块架构如图4所示,其实现的功能为下式所示
由于Dataln1-max(DataIn1,DataIn2)以及DataIn2-max(DataIn1,DataIn2)中一定会有一个结果为0,故上式的计算相对简单,只需要计算一次e指数,再将结果加1(e0=1)即可。
图4中的BroadCast模块负责将输入整合复制后分配到FindMax以及Two_Add中;FindMax负责找出两个输入的最大值;Two_Add负责运算DataIn1-max(DataIn1,DataIn2)以及DataIn2-max(DataIn1,DataIn2);ChooseExpData根据FIndMax给出的Enable信号选择出要用于计算E指数的数据;ArbExpIn、Exp与ArbExpOut都是用来计算E指数的。
SoftmaxMiddleUnit以及SoftmaxEndUnit构架
SoftmaxMiddleUnit与SoftmaxEndUnit的模块架构类似都如图5所示,其实现的功能为下式所示
由于DataIn1-max(DataIn1,DataIn2)以及DataIn2-max(DataIn1,DataIn2)中一定会有一个结果为0,故上式的计算需要计算一次e指数,一次乘法以及一次加法。
图5中的InUnit为SoftMaxInUnit的模块,实现计算最大值以及e指数的功能;ChooseMulAdd根据InUnit给出的Enable选择出用于乘法以及加法的数据;Mul以及Add模块分别实现乘法以及加法。
exp模块架构
Exp模块的架构如图6所示,其中的BroadCast模块将输入的16bit数拆分成低位的7bit和高位的9bit,其中7bit的数据输入到Dec模块中采用泰勒展开进行计算,9bit的数据输入到Int中采用查找表进行计算;Dec模块中采用泰勒展开式对输入的低位数据进行计算,设计中用到的e指数的泰勒展开式为更高位的展开式被省略了;Int模块中采用查找表法对输入的高位数据进行计算;Mul模块则是乘法器模块,由于exy=ex·ey,所以Int模块与Dec模块计算的结果必须相乘来得到最终的结果。
div模块架构
div模块的架构如图7所示,其由16个DivUnit模块串联而成,每个DivUnit模块中都包含Minus(减法器模块)以及Shift(移位器模块)。通过16次的移位与减法实现32bit数与16bit数的除法。
3.4.6阶段二中的Arbiter与Merge模块
阶段二中的Arbiter起到数据分配的作用,将数据分配到4个EXP模块,Merge模块将DIV模块计算的结果进行拼接后输出。Arbiter和Merge模块功能的伪代码如下:
本申请所提供的加速方法及加速器在xilinx公司的zynq系列开发板上进行实现,通过AXI总线接口与ZYNQ开发板上的CPU以及DDR3进行沟通。加速器的系统框架如图8所示,ARM核通过General Purpose(GP)端口与设计进行沟通,传递开始信号,待处理数据的地址等信息;而DDR3通过High Performance(HP)端口与设计进行数据的交互,传出以及传入数据。
以下为在zynq系列中的XC7Z020-1CLG400C的FPGA芯片上实现的具体面积、功耗以及性能测试结果。
图8中为加速器消耗芯片XC7Z020-1CLG400C资源的柱状图,从中可以看出加速器消耗的资源占总资源的10%左右,消耗的面积较小。
图9中为加速器的功耗使用情况,除去ZYNQ系列芯片运行时必不可少的ARM芯片消耗(即图表中的ps7),本加速器的功耗只为16%。从中可以看到设计消耗的时钟功耗极低,几乎为0。
Table1中为加速器在不同输入尺寸下的运行时间,由于Softmax函数为归一化函数,输入数据的尺寸一般都较大。本加速器支持的数据尺寸无上限,Table1中测量的数据尺寸从4096~1024X 1204(实际使用Softmax函数时,绝大多数输入尺寸都在这范围之中)。
与现有技术相比,本申请的有益效果为:
于软件求解Softmax函数相比,本申请的全异步的Softmax硬件加速器具有计算速度快并且不占用CPU计算资源的优点。与同步实现Softmax函数相比,全异步的加速器具有低功耗、高性能以及模块性好的特点。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、获取其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令处理器完成,所述的程序可以存储于计算机可读存储介质中,所述存储介质是非短暂性(英文:non-transitory)介质,例如随机存取存储器,只读存储器,快闪存储器,硬盘,固态硬盘,磁带(英文:magnetic tape),软盘(英文:floppy disk),光盘(英文:optical disc)及其任意组合。
以上所述,仅为本申请较佳的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应该以权利要求的保护范围为准。
Claims (10)
1.一种异步Softmax硬件加速方法,其特征在于,包括如下步骤:
S2:计算所有待计算数据中的最大值及所有所述待计算数据的e指数和;
S4:根据所述最大值及所述e指数计算最终结果。
2.根据权利要求1所述的异步Softmax硬件加速方法,其特征在于,所述步骤S2为通过softmax InUnit模块、Softmax MiddleUnit模块、SoftmaxEndUnit模块、FIFO模块,InUnit模块、MiiddleUnit模块及EndUnit模块计算所述最大值。
3.根据权利要求1所述的异步Softmax硬件加速方法,其特征在于,通过EXP模块采用大指数剥离法计算所有所述待计算数据的e指数,通过DIV模块采用移位相减法计算除法,通过Arbiter模块进行数据分配,将数据分配到4个所述EXP模块,通过Merge模块将所述DIV模块计算的结果进行拼接后输出。
4.根据权利要求2所述的异步Softmax硬件加速方法,其特征在于,所述softmaxInUnit模块实现的功能如下式所示:
SoftmaxInUnit的模块架构如图4所示,其实现的功能为下式所示
由于DataIn1-max(DataIn1,DataIn2)以及DataIn2-max(DataIn1,DataIn2)中一定会有一个结果为0,故上式的计算相对简单,只需要计算一次e指数,再将结果加1(e0=1)即可。
5.根据权利要求4所述的异步Softmax硬件加速方法,其特征在于,所述SoftmaxInUnit模块包括:
BroadCast模块;
FindMax模块;
Two_Add模块;
ChooseExpData模块;
ArbExpln模块;
Exp模块;及
ArbExpOut模块;
其中所述BroadCast模块将输入整合复制后分配到所述FindMax以及所述Two_Add模块中,所述FindMax找出两个输入的最大值,所述Two_Add运算DataIn1-max(DataIn1,DataIn2)以及DataIn2-max(DataIn1,DataIn2),所述ChooseExpData模块根据所述FIndMax给出的Enable信号选择出要用于计算E指数的数据,所述ArbExpIn模块、所述Exp模块与所述ArbExpOut模块均计算E指数。
6.根据权利要求5所述的异步Softmax硬件加速方法,其特征在于,所述SoftmaxMiddleUnit模块与所述SoftmaxEndUnit模块实现的功能均如下式所示:
由于DataIn1-max(DataIn1,DataIn2)以及DataIn2-max(DataIn1,DataIn2)中一定会有一个结果为0,故上式的计算需要计算一次e指数,一次乘法以及一次加法。
7.根据权利要求6所述的异步Softmax硬件加速方法,其特征在于,所述BroadCast模块将输入的16bit数据拆分成低位的7bit数据和高位的9bit数据,其中所述7bit数据输入到Dec模块中采用泰勒展开进行计算,所述9bit数据输入到Int模块中采用查找表进行计算,所述Dec模块中采用泰勒展开式对输入的7bit数据进行计算,设计中用到的e指数的泰勒展开式为 所述Int模块中采用查找表法对输入的9bit数据进行计算,Mul模块进行乘法运算,由于exy=ex·ey,所以所述Int模块与所述Dec模块计算的结果必须相乘来得到最终的结果。
8.根据权利要求7所述的异步Softmax硬件加速方法,其特征在于,所述div模块由16个DivUnit模块串联而成,每个所述DivUnit模块中都包含减法器模块以及移位器模块,通过16次的移位与减法实现32bit数与16bit数的除法。
9.一种异步Softmax硬件加速器,其特征在于,包括:softmax InUnit模块、SoftmaxMiddleUnit模块、SoftmaxEndUnit模块、FIFO模块,InUnit模块、MiiddleUnit模块、EndUnit模块、EXP模块、DIV模块、Arbiter模块、及Merge模块,且所述异步Softmax硬件加速器使用如权利要求1-8任意一种所述的异步Softmax硬件加速方法。
10.一种计算机设备,包括存储器、处理器和存储在所述存储器内并能由所述处理器运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1-8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811143727.XA CN109271202B (zh) | 2018-09-28 | 2018-09-28 | 一种异步Softmax硬件加速方法及加速器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811143727.XA CN109271202B (zh) | 2018-09-28 | 2018-09-28 | 一种异步Softmax硬件加速方法及加速器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109271202A true CN109271202A (zh) | 2019-01-25 |
CN109271202B CN109271202B (zh) | 2023-01-10 |
Family
ID=65199133
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811143727.XA Active CN109271202B (zh) | 2018-09-28 | 2018-09-28 | 一种异步Softmax硬件加速方法及加速器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109271202B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112685693A (zh) * | 2020-12-31 | 2021-04-20 | 南方电网科学研究院有限责任公司 | 一种实现Softmax函数的设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170053398A1 (en) * | 2015-08-19 | 2017-02-23 | Colorado Seminary, Owner and Operator of University of Denver | Methods and Systems for Human Tissue Analysis using Shearlet Transforms |
CN106842915A (zh) * | 2016-12-22 | 2017-06-13 | 首都师范大学 | 一种用于机器人分布式控制系统的形式建模方法及装置 |
CN108256630A (zh) * | 2018-01-23 | 2018-07-06 | 深圳市唯特视科技有限公司 | 一种基于低维流形正则化神经网络的过拟合解决方法 |
CN108268940A (zh) * | 2017-01-04 | 2018-07-10 | 意法半导体股份有限公司 | 用于创建可重新配置的互连框架的工具 |
-
2018
- 2018-09-28 CN CN201811143727.XA patent/CN109271202B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170053398A1 (en) * | 2015-08-19 | 2017-02-23 | Colorado Seminary, Owner and Operator of University of Denver | Methods and Systems for Human Tissue Analysis using Shearlet Transforms |
CN106842915A (zh) * | 2016-12-22 | 2017-06-13 | 首都师范大学 | 一种用于机器人分布式控制系统的形式建模方法及装置 |
CN108268940A (zh) * | 2017-01-04 | 2018-07-10 | 意法半导体股份有限公司 | 用于创建可重新配置的互连框架的工具 |
CN108256630A (zh) * | 2018-01-23 | 2018-07-06 | 深圳市唯特视科技有限公司 | 一种基于低维流形正则化神经网络的过拟合解决方法 |
Non-Patent Citations (2)
Title |
---|
BO YUAN: ""Efficient hardware architecture of softmax layer in deep neural network"", 《2016 29TH IEEE INTERNATIONAL SYSTEM-ON-CHIP CONFERENCE (SOCC)》 * |
方睿 等: ""卷积神经网络的FPGA并行加速方案设计"", 《计算机工程与应用》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112685693A (zh) * | 2020-12-31 | 2021-04-20 | 南方电网科学研究院有限责任公司 | 一种实现Softmax函数的设备 |
CN112685693B (zh) * | 2020-12-31 | 2022-08-02 | 南方电网科学研究院有限责任公司 | 一种实现Softmax函数的设备 |
Also Published As
Publication number | Publication date |
---|---|
CN109271202B (zh) | 2023-01-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Muslim et al. | Efficient FPGA implementation of OpenCL high-performance computing applications via high-level synthesis | |
Teubner et al. | Data processing on FPGAs | |
US11922106B2 (en) | Memory efficient scalable distributed static timing analysis using structure based self-aligned parallel partitioning | |
CN103324774A (zh) | 一种基于时钟规划偏差算法的处理器性能优化方法 | |
Li et al. | Artificial intelligence (AI) chip technology review | |
WO2016076963A1 (en) | System and method for preparing partially reconfigurable circuit designs | |
Werner et al. | Hardware-accelerated join processing in large Semantic Web databases with FPGAs | |
Roozmeh et al. | Implementation of a performance optimized database join operation on FPGA-GPU platforms using OpenCL | |
Belabed et al. | Full Python Interface Control: Auto Generation And Adaptation of Deep Neural Networks For Edge Computing and IoT Applications FPGA-Based Acceleration | |
CN109271202A (zh) | 一种异步Softmax硬件加速方法及加速器 | |
Zhang et al. | Apply yolov4-tiny on an fpga-based accelerator of convolutional neural network for object detection | |
US20230004698A1 (en) | Dividing a chip design flow into sub-steps using machine learning | |
US11868696B2 (en) | Lightweight unified power format implementation for emulation and prototyping | |
US11347490B1 (en) | Compilation framework for hardware configuration generation | |
CN111143208B (zh) | 基于处理器技术辅助fpga实现ai算法的验证方法 | |
Göhringer et al. | Exploration of the Power‐Performance Tradeoff through Parameterization of FPGA‐Based Multiprocessor Systems | |
US10474778B2 (en) | Systems and methods for top level integrated circuit design | |
Yu | Machine Learning in EDA: When and How | |
US20240354477A1 (en) | Constant, equal, or opposite registers or ports detection during logic synthesis | |
US20240354479A1 (en) | Peformance analysis using architecture model of processor architecture design | |
US11630934B1 (en) | Integrated circuit analysis using a multi-level data hierarchy implemented on a distributed compute and data infrastructure | |
Anumandla et al. | SoC based floating point implementation of differential evolution algorithm using FPGA | |
Hoare et al. | Accelerating sar processing on cots fpga hardware using c-to-gates design tools | |
US11755801B1 (en) | Data flow graph refinement using range set information for improved synthesis | |
Horváth et al. | A proposed synthesis method for application-specific instruction set processors |
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 |