计算资源利用效率评估方法及装置

文档序号:28636591发布日期:2022-01-26 17:14阅读:221来源:国知局
1.本发明涉及fpga硬件加速设计
技术领域
:,尤其涉及一种计算资源利用效率评估方法及装置。
背景技术
::2.卷积神经网络(convolutionalneuralnetworks,cnn)是深度学习的代表算法之一,因其在人工智能领域的卓越性能,被广泛关注并应用于图像分类、语音识别、人脸识别、自动驾驶以及医学成像等高科技应用中。3.随着cnn的持续发展,网络结构日益复杂,参数数量爆炸增长,这给cnn硬件加速器的设计带来挑战。现场可编程门阵列(fieldprogrammablegatearray,fpga)具有出色的灵活编程性和突出的性能功耗比,主流的cnn正向推断加速器多采用基于fpga的加速方案。为充分发挥fpga的算力,加速器的设计核心是高效利用片上的计算资源,而fpga片上高位宽数据乘法运算最高效的计算资源是数字信号处理器(digitalsignalprocessor,dsp),因此,高效利用dsp计算资源非常关键。精准地评估dsp计算资源利用效率可以帮助设计者分辨不同设计的优劣,指导设计者调整完善自己的设计。目前,学术界用于评估dsp计算资源利用效率的各种方式均有缺陷,不能客观准确的评估dsp计算资源的利用效率。技术实现要素:4.本公开提供了一种计算资源利用效率评估方法及装置,用于解决传统评估dsp计算资源利用效率的方法存在的缺陷。5.本公开一方面提供了一种计算资源利用效率的评估方法,应用于基于fpga的卷积神经网络加速器,所述加速器的待评估计算资源为dsp计算资源,包括:基于所述dsp计算资源执行乘法运算的理论总吞吐率及实际总吞吐率,计算所述dsp计算资源的吞吐率利用率;基于所述dsp计算资源的理论平均dsp吞吐率及实际平均dsp吞吐率,计算所述dsp计算资源的平均资源利用率;根据所述吞吐率利用率和所述平均资源利用率,评估所述加速器的计算资源利用效率。6.可选地,所述dsp计算资源由多个dsp组成,所述基于所述dsp计算资源执行乘法运算的理论总吞吐率及实际总吞吐率,计算所述dsp计算资源的吞吐率利用率包括:基于所述加速器所能执行的乘法运算量、加法运算量和实际总吞吐率,计算所述dsp计算资源执行乘法运算的实际总吞吐率;基于单个所述dsp所能实现的乘法运算个数、所述dsp的总数及所述dsp的时钟频率,计算所述dsp计算资源执行乘法运算的理论总吞吐率;计算所述dsp计算资源执行乘法运算的实际总吞吐率与理论总吞吐率的比值,得到所述吞吐率利用率。7.可选地,所述基于所述加速器所能执行的乘法运算量、加法运算量和实际总吞吐率,计算所述dsp计算资源执行乘法运算的实际总吞吐率包括:令opsmul表示所述加速器所能执行的乘法运算量,opsadd表示所述加速器所能执行的加法运算量,gopacc/s表示所述加速器的实际总吞吐率,gopimpl/s表示所述dsp计算资源执行乘法运算的实际总吞吐率,则:[0008][0009]可选地,所述基于单个所述dsp所能实现的乘法运算个数、所述dsp的总数及所述dsp的时钟频率,计算所述dsp计算资源执行乘法运算的理论总吞吐率包括:令#muldsp表示单个所述dsp所能实现的乘法运算个数,#dspavl表示所述dsp的总数,freq表示所述dsp运行的时钟频率,gopavl/s表示所述dsp计算资源执行乘法运算的理论总吞吐率,则:[0010]gopavl/s=#muldsp·#dspavl·freq。[0011]可选地,所述计算所述dsp计算资源执行乘法运算的实际总吞吐率与理论总吞吐率的比值,得到所述吞吐率利用率包括:令r1_score表示所述吞吐率利用率,gopimpl/s表示所述实际总吞吐率,gopavl/s表示所述理论总吞吐率,则:[0012][0013]可选地,所述dsp计算资源由多个dsp组成,所述基于所述dsp计算资源的理论平均dsp吞吐率及实际平均dsp吞吐率,计算所述dsp计算资源的平均资源利用率包括:计算所述dsp计算资源执行乘法运算的实际总吞吐率和实际使用的所述dsp的个数的比值,得到所述dsp计算资源的实际平均dsp吞吐率;计算所述dsp计算资源执行乘法运算的理论总吞吐率和所述dsp的总数的比值,得到所述dsp计算资源的理论平均dsp吞吐率;计算所述实际平均dsp吞吐率与所述理论平均dsp吞吐率的比值,得到所述平均资源利用率。[0014]可选地,所述计算所述实际平均dsp吞吐率与所述理论平均dsp吞吐率的比值,得到所述平均资源利用率包括:令r2_score表示所述吞吐率利用率,表示所述实际平均dsp吞吐率,表示所述理论平均dsp吞吐率,则:[0015][0016]可选地,所述根据所述吞吐率利用率和所述平均资源利用率,评估所述加速器的计算资源利用效率包括:获取多个设计不同的所述加速器的所述吞吐率利用率和所述平均资源利用率;比较各所述加速器的所述吞吐率利用率和所述平均资源利用率的大小;根据比较结果,评估各所述加速器的计算资源利用效率,其中,所述吞吐率利用率越高和所述平均资源利用率越高,对应的所述加速器的计算资源利用效率越高。[0017]可选地,所述吞吐率利用率的优先级高于所述平均资源利用率,所述根据比较结果,评估各所述加速器的计算资源利用效率包括:所述吞吐率利用率越高,对应的所述加速器的计算资源利用效率越高;当多个所述加速器的吞吐率利用率相同时,所述平均资源利用率越高,对应的所述加速器的计算资源利用效率的评估越高。[0018]本公开另一方面提供了一种计算资源利用效率的评估装置,包括:吞吐率利用率计算模块,用于基于所述dsp计算资源执行乘法运算的理论总吞吐率及实际总吞吐率,计算所述dsp计算资源的吞吐率利用率;平均资源利用率计算模块,用于基于所述dsp计算资源的理论平均dsp吞吐率及实际平均dsp吞吐率,计算所述dsp计算资源的平均资源利用率;资源利用效率评估模块,用于根据所述吞吐率利用率和所述平均资源利用率,评估所述加速器的计算资源利用效率。[0019]本公开提供的一种计算资源利用效率评估方法及装置,应用于基于fpga的卷积神经网络加速器,其中,加速器的待评估计算资源为dsp计算资源,从吞吐率利用率和平均资源利用率两个方面对dsp计算资源进行评估,其中,吞吐率利用率体现了dsp计算资源的运算能力被开发了多少,平均资源利用率体现了dsp计算资源中单个dsp的资源利用效率的高低,相比传统的评估方法,排除了数据类型、实现频率、芯片规格等因素的干扰,使得对dsp计算资源的评估聚焦于加速器性能本身。由于该评估系统能客观全面地评估基于fpga的卷积神经网络加速器结构中的dsp计算资源的利用效果,从而能客观评估该加速器结构的实现效果和优劣,可用于对结构的优化提供准确的指导,对优化不同的fpga平台上的cnn算法实现有着重要的意义。附图说明[0020]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。[0021]图1为本公开一实施例提供的计算资源利用效率的评估方法的流程示意图;[0022]图2为本公开另一实施例提供的计算资源利用效率的评估装置的结构示意图。具体实施方式[0023]以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。[0024]在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。这里使用的词语“一”、“一个(种)”和“该”等也应包括“多个”、“多种”的意思,除非上下文另外明确指出。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。[0025]在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。[0026]附图中示出了一些方框图和/或流程图。应理解,方框图和/或流程图中的一些方框或其组合可以由计算机程序指令来实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,从而这些指令在由该处理器执行时可以创建用于实现这些方框图和/或流程图中所说明的功能/操作的装置。[0027]因此,本公开的技术可以硬件和/或软件(包括固件、微代码等)的形式来实现。另外,本公开的技术可以采取存储有指令的计算机可读介质上的计算机程序产品的形式,该计算机程序产品可供指令执行系统使用或者结合指令执行系统使用。在本公开的上下文中,计算机可读介质可以是能够包含、存储、传送、传播或传输指令的任意介质。例如,计算机可读介质可以包括但不限于电、磁、光、电磁、红外或半导体系统、装置、器件或传播介质。计算机可读介质的具体示例包括:磁存储装置,如磁带或硬盘(hdd);光存储装置,如光盘(cd-rom);存储器,如随机存取存储器(ram)或闪存;和/或有线/无线通信链路。[0028]学术界和工业界采用的计算资源利用效率评估方法繁多,目前,采用最多的核心评估公式为以下三种(公式(1)-(3))。其中,dsp_eff代表核心计算资源dsp的计算资源利用效率,#dspimpl代表加速器实现卷积神经网络时实际参与运算的dsp数目,#dspavl代表fpga芯片上所有可用的dsp的总数,gopacc/s代表加速器的实际总吞吐率,#logic代表fpga芯片片上总的逻辑资源数目。[0029][0030][0031][0032]以上三种计算资源利用效率评估机制各有缺陷:[0033]公式(1)计算的是dsp计算资源的实际占用率,由于高的资源占用率并不等同于高的资源利用效率,例如,某些被占用的计算资源在部分时钟周期处于闲置状态,这些闲置的计算资源不仅没有参与到有效的数据计算过程中,反而会造成资源冗余,它们带来了额外的功耗,降低了加速器的性能功耗比。因此公式(1)的评估结果不能科学衡量计算资源的利用效率。[0034]公式(2)将加速器的吞吐率作为衡量加速效率的衡量指标,但是加速器的吞吐率和fpga的实现频率(fpga运行时的时钟频率)直接相关,而实现频率受到加速器设计人员rtl代码编程能力和fpga芯片的工艺以及芯片本身的计算性能等因素的直接影响。因此公式(2)不能排除这些因素,单纯客观地衡量一种结构的计算资源利用效率。[0035]公式(3)用吞吐率与芯片逻辑规格的比值来衡量计算资源利用效率,但是该公式受到乘法运算实现方法的严重影响,若加速器被设计为采用dsp资源来实现乘法运算,公式(3)不能反映dsp资源的利用效率;若设计采用逻辑资源来实现乘法运算,公式(3)会受到实现频率的影响。[0036]由于卷积神经网络是计算密集型结构,其海量的矩阵卷积计算给加速器设计带来挑战。而加速器的设计核心是高效利用片上的计算资源,很多经典设计都集中于优化矩阵运算的核心-乘累加运算上。由于fpga片上高位宽数据乘法运算最高效的计算资源是dsp,因此,高效利用dsp计算资源就非常关键。本公开实施例提供了一种计算资源利用效率的评估方法,用于评估dsp计算资源的利用效率。该方法可应用于电子设备中,电子设备包括:手机、平板电脑(portableandroiddevice,pad),笔记本电脑以及个人数字助理(personaldigitalassistant,pda)等。[0037]图1示意性示出了根据本公开实施例的一种计算资源利用效率的评估方法的流程图。[0038]具体的,如图1所示,本公开实施例提供的一种计算资源利用效率的评估方法,应用于基于fpga的卷积神经网络加速器,所述加速器的待评估计算资源为dsp计算资源,包括步骤s110-s130。[0039]s110,基于所述dsp计算资源执行乘法运算的理论总吞吐率及实际总吞吐率,计算所述dsp计算资源的吞吐率利用率。[0040]dsp计算资源是指基于fpga的卷积神经网络加速器的加速器上的多个dsp,用于执行乘法运算和加法运算。由于加法运算可以由dsp实现,也可以由逻辑资源实现,难以统计加法运算的吞吐率,而加速器中的乘法运算仅由dsp执行,因此,可选用dsp计算资源执行乘法运算的吞吐率代表其运算效率。根据所述dsp计算资源执行乘法运算的实际总吞吐率以及理论总吞吐率,可计算其吞吐率的利用率,即该dsp计算资源提供的乘法运算吞吐率被设计开发的百分比,吞吐率的利用率可用于从运算效率方面评价该dsp计算资源所属的加速器设计的好坏。[0041]s120,基于所述dsp计算资源的理论平均dsp吞吐率及实际平均dsp吞吐率,计算所述dsp计算资源的平均资源利用率。[0042]受设计的影响,不同的加速器在执行运算时dsp计算资源的冗余占用不同。dsp冗余越少,说明dsp的计算资源利用率越高,加速器的设计越好。所述dsp计算资源的实际平均dsp吞吐率与理论平均dsp吞吐率越接近,平均资源利用率越高,说明dsp计算资源的冗余越少。[0043]s130,根据所述吞吐率利用率和所述平均资源利用率,评估所述加速器的计算资源利用效率。[0044]在本公开实施例中,从dsp计算资源本身出发,利用dsp计算资源的吞吐率利用率和所述平均资源利用率,对dsp计算资源的计算能力和资源利用效率两方面进行全面评价,可得到对加速器的计算资源利用效率评价,其中,所述吞吐率利用率越高和所述平均资源利用率越高,对应的所述加速器的计算资源利用效率越高。[0045]下面对步骤s110-s130的具体计算进行详细描述。[0046]s110,所述dsp计算资源由多个dsp组成,所述基于所述dsp计算资源执行乘法运算的理论总吞吐率及实际总吞吐率,计算所述dsp计算资源的吞吐率利用率,包括步骤s111~s113。[0047]s111,基于所述加速器所能执行的乘法运算量、加法运算量和实际总吞吐率,计算所述dsp计算资源执行乘法运算的实际总吞吐率。[0048]令opsmul表示所述加速器所能执行的乘法运算量,opsadd表示所述加速器所能执行的加法运算量,gopacc/s表示所述加速器的实际总吞吐率,gopimpl/s表示所述dsp计算资源执行乘法运算的实际总吞吐率,则:[0049][0050]s112,基于单个所述dsp所能实现的乘法运算个数、所述dsp的总数及所述dsp的时钟频率,计算所述dsp计算资源执行乘法运算的理论总吞吐率。[0051]令#muldsp表示单个所述dsp所能实现的乘法运算个数,#dspavl表示所述dsp的总数,freq表示所述dsp运行的时钟频率,gopavl/s表示所述dsp计算资源执行乘法运算的理论总吞吐率,则:[0052]gopavl/s=#muldsp·#dspavl·freq。[0053]其中,#muldsp由加速器芯片型号、乘数类型和卷积运算数据位宽决定。[0054]s113,计算所述dsp计算资源执行乘法运算的实际总吞吐率与理论总吞吐率的比值,得到所述吞吐率利用率。[0055]令r1_score表示所述吞吐率利用率,gopimpl/s表示所述实际总吞吐率,gopavl/s表示所述理论总吞吐率,则:[0056][0057]其中,吞吐率利用率越接近1,说明加速器的设计越能充分挖掘片上总的dsp计算资源效率。[0058]s120,所述dsp计算资源由多个dsp组成,基于所述dsp计算资源的理论平均dsp吞吐率及实际平均dsp吞吐率,计算所述dsp计算资源的平均资源利用率,包括步骤s121~s123。[0059]s121,计算所述dsp计算资源执行乘法运算的实际总吞吐率和实际使用的所述dsp的个数的比值,得到所述dsp计算资源的实际平均dsp吞吐率。[0060]在执行相同的计算量时,对于不同设计的加速器,若dsp计算资源的吞吐率利用率相同,但所使用的dsp的数量不同,所使用的dsp的数量越多,其冗余量越大,实际平均dsp吞吐率越低。因此,实际平均dsp吞吐率反映了dsp计算资源在实际运算过程中,dsp计算资源的实际利用效率。[0061]s122,计算所述dsp计算资源执行乘法运算的理论总吞吐率和所述dsp的总数的比值,得到所述dsp计算资源的理论平均dsp吞吐率。[0062]s123,计算所述实际平均dsp吞吐率与所述理论平均dsp吞吐率的比值,得到所述平均资源利用率。[0063]令r2_score表示所述吞吐率利用率,gopimpl/s表示所述实际总吞吐率,gopavl/s表示所述理论总吞吐率,#dspimpl表示实际参与运算的dsp数目,#dspavl表示所述dsp的总数,表示所述实际平均dsp吞吐率,表示所述理论平均dsp吞吐率,则:[0064][0065]其中,r2_score越接近1,表示在实际运算中dsp计算资源的使用效率越高,冗余占用的dsp资源越少。[0066]s130,根据所述吞吐率利用率和所述平均资源利用率,评估所述加速器的计算资源利用效率,包括步骤s131~133。[0067]s131,获取多个设计不同的所述加速器的所述吞吐率利用率和所述平均资源利用率。[0068]s132,比较各所述加速器的所述吞吐率利用率和所述平均资源利用率的大小。[0069]s133,根据比较结果,评估各所述加速器的计算资源利用效率,其中,所述吞吐率利用率越高和所述平均资源利用率越高,对应的所述加速器的计算资源利用效率越高。[0070]在本公开实施例中,在评价加速器的好坏时,将多个不同设计的加速器的吞吐率利用率和所述平均资源利用率进行比较,一般的,吞吐率利用率越高和所述平均资源利用率越高,对其对应的加速器的评价越高。[0071]具体的,所述吞吐率利用率越高,对应的所述加速器的计算资源利用效率越高;当多个所述加速器的吞吐率利用率相同时,所述平均资源利用率越高,对应的所述加速器的计算资源利用效率的评估越高。[0072]本公开提供的一种计算资源利用效率评估方法及装置,应用于基于fpga的卷积神经网络加速器,其中,加速器的待评估计算资源为dsp计算资源,从吞吐率利用率和平均资源利用率两个方面对dsp计算资源进行评估,其中,吞吐率利用率体现了dsp计算资源的运算能力被开发了多少,平均资源利用率体现了dsp计算资源中单个dsp的资源利用效率的高低,相比传统的评估方法,排除了数据类型、实现频率、芯片规格等因素的干扰,使得对dsp计算资源的评估聚焦于加速器性能本身。由于该评估系统能客观全面地评估基于fpga的卷积神经网络加速器结构中的dsp计算资源的利用效果,从而能客观评估该加速器结构的实现效果和优劣,可用于对结构的优化提供准确的指导,对优化不同的fpga平台上的cnn算法实现有着重要的意义。[0073]图2为本公开另一实施例提供的计算资源利用效率的评估装置的结构示意图。[0074]如图2所示,本公开另一方面提供了一种计算资源利用效率的评估装置200,应用于基于fpga的卷积神经网络加速器,所述加速器的待评估计算资源为dsp计算资源,包括:吞吐率利用率计算模块210,平均资源利用率计算模块220,资源利用效率评估模块230。[0075]吞吐率利用率计算模块210,用于基于所述dsp计算资源执行乘法运算的理论总吞吐率及实际总吞吐率,计算所述dsp计算资源的吞吐率利用率。[0076]平均资源利用率计算模块220,用于基于所述dsp计算资源的理论平均dsp吞吐率及实际平均dsp吞吐率,计算所述dsp计算资源的平均资源利用率。[0077]资源利用效率评估模块230,用于根据所述吞吐率利用率和所述平均资源利用率,评估所述加速器的计算资源利用效率。[0078]在本公开实施例中,吞吐率利用率计算模块210根据所述dsp计算资源执行乘法运算的实际总吞吐率以及理论总吞吐率,计算其吞吐率的利用率,即该dsp计算资源提供的乘法运算吞吐率被设计开发的百分比,可用于从运算效率方面评价该dsp计算资源所属的加速器设计的好坏;平均资源利用率计算模块220基于所述dsp计算资源的理论平均dsp吞吐率及实际平均dsp吞吐率,计算所述dsp计算资源的平均资源利用率,可用于表示单个dsp计算资源的使用效率的高低;资源利用效率评估模块230综合吞吐率利用率计算模块210和平均资源利用率计算模块220输出的结果,利用dsp计算资源的吞吐率利用率和所述平均资源利用率,对dsp计算资源的计算能力和资源利用效率两方面进行全面评价,可得到对加速器的计算资源利用效率评价,其中,所述吞吐率利用率越高和所述平均资源利用率越高,对应的所述加速器的计算资源利用效率越高。[0079]该计算资源利用效率的评估装置200包括了如图1所示的计算资源利用效率的评估方法,各模块执行方法的具体步骤及其有益效果与该评估方法相同。[0080]可以理解的是,吞吐率利用率计算模块210、平均资源利用率计算模块220及资源利用效率评估模块230可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本发明的实施例,吞吐率利用率计算模块210、平均资源利用率计算模块220及资源利用效率评估模块230中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(fpga)、可编程逻辑阵列(pla)、片上系统、基板上的系统、封装上的系统、专用集成电路(asic),或可以以对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式的适当组合来实现。或者,吞吐率利用率计算模块210、平均资源利用率计算模块220及资源利用效率评估模块230中的至少一个可以至少被部分地实现为计算机程序模块,当该程序被计算机运行时,可以执行相应模块的功能。[0081]需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本发明所必须的。[0082]在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。[0083]以上为对本发明所提供的用户心理模型的构建方法、装置、电子设备及存储介质的描述,对于本领域的一般技术人员,依据本发明实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本发明的限制。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1