CN110633714A - 基于近似计算的vgg图像特征提取加速方法及系统 - Google Patents
基于近似计算的vgg图像特征提取加速方法及系统 Download PDFInfo
- Publication number
- CN110633714A CN110633714A CN201910912744.3A CN201910912744A CN110633714A CN 110633714 A CN110633714 A CN 110633714A CN 201910912744 A CN201910912744 A CN 201910912744A CN 110633714 A CN110633714 A CN 110633714A
- Authority
- CN
- China
- Prior art keywords
- program
- iteration
- output
- feature extraction
- input
- 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
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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/40—Extraction of image or video features
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- General Engineering & Computer Science (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Multimedia (AREA)
- Debugging And Monitoring (AREA)
- Image Analysis (AREA)
Abstract
本公开公开了基于近似计算的VGG图像特征提取加速方法及系统,获取待加速的基于VGG网络的图像特征提取程序,从待加速的基于VGG网络的图像特征提取程序中识别目标循环程序;对目标循环程序执行穿孔得到初始近似程序,用初始近似程序替换待加速的基于VGG网络的图像特征提取程序中的目标循环程序,即得到加速的基于VGG网络的图像特征提取程序;获取待特征提取的图像,将待特征提取的图像输入到加速的基于VGG网络的图像特征提取程序中,进行特征提取,在特征提取的过程中对初始近似程序执行输出注入;最后得到提取后的特征;所述输出注入即利用与当前迭代输入最相似的历史迭代输入对应的迭代输出值作为当前迭代的输出值。
Description
技术领域
本公开涉及深度学习网络加速技术领域,特别是涉及基于近似计算的VGG图像特征提取加速方法及系统。
背景技术
本部分的陈述仅仅是提到了与本公开相关的背景技术,并不必然构成现有技术。
如今,随着深度学习的不断发展,为了满足社会的发展和用户需求,程序的计算复杂性也在不断增强,计算速度也成为我们需要面对的问题之一。
在实现本公开的过程中,发明人发现现有技术中存在以下技术问题:
(1)过去质量管理是针对于近似程序的质量管理,也就是说质量管理是在执行近似策略得到近似程序之后(近似程序是执行近似之后得到的程序),这样会抵消一部分近似收益;
(2)目前,现有技术中近似计算主要使用查找表存储之前输入的输出,存储查找会花费很多时间,而且占用内存大;
(3)目前,现有技术中近似计算只是直接获得与当前输入相同的输入的输出,相同输入毕竟是少数,不足以对性能有太大改善。
目前,VGG图像特征提取计算过程复杂,计算时间较长,占用内存较大。
发明内容
为了解决现有技术的不足,本公开提供了基于近似计算的VGG图像特征提取加速方法及系统;在穿孔的近似技术之上,利用相似输入会产生相似输出的原理提出的一种提高程序性能,同时对输出进行管理的方法。该方法首先进行输入的相似度判断,通过相似输入找到对应的输出,即相似输出,直接给当前输入注入一个输出,节省本次迭代的执行时间;其次采用对比阶段和恢复阶段管理输出质量。
第一方面,本公开提供了基于近似计算的VGG图像特征提取加速方法;
基于近似计算的VGG图像特征提取加速方法,包括:
获取待加速的基于VGG网络的图像特征提取程序,从待加速的基于VGG网络的图像特征提取程序中识别目标循环程序;
对目标循环程序执行穿孔得到初始近似程序,用初始近似程序替换待加速的基于VGG网络的图像特征提取程序中的目标循环程序,即得到加速的基于VGG网络的图像特征提取程序;
获取待特征提取的图像,将待特征提取的图像输入到加速的基于VGG网络的图像特征提取程序中,进行特征提取,在特征提取的过程中对初始近似程序执行输出注入;最后得到提取后的特征;
所述输出注入即利用与当前迭代输入最相似的历史迭代输入对应的迭代输出值作为当前迭代的输出值。
第二方面,本公开还提供了基于近似计算的VGG图像特征提取加速系统;
基于近似计算的VGG图像特征提取加速方法,包括:
目标循环程序提取模块,其被配置为:获取待加速的基于VGG网络的图像特征提取程序,从待加速的基于VGG网络的图像特征提取程序中识别目标循环程序;
穿孔模块,其被配置为:对目标循环程序执行穿孔得到初始近似程序,用初始近似程序替换待加速的基于VGG网络的图像特征提取程序中的目标循环程序,即得到加速的基于VGG网络的图像特征提取程序;
特征提取模块,其被配置为:获取待特征提取的图像,将待特征提取的图像输入到加速的基于VGG网络的图像特征提取程序中,进行特征提取,在特征提取的过程中对初始近似程序执行输出注入;最后得到提取后的特征;
所述输出注入即利用与当前迭代输入最相似的历史迭代输入对应的迭代输出值作为当前迭代的输出值。
第三方面,本公开还提供了一种电子设备,包括存储器和处理器以及存储在存储器上并在处理器上运行的计算机指令,所述计算机指令被处理器运行时,完成第一方面所述方法的步骤。
第四方面,本公开还提供了一种计算机可读存储介质,用于存储计算机指令,所述计算机指令被处理器执行时,完成第一方面所述方法的步骤。
与现有技术相比,本公开的有益效果是:
第一,质量管理贯穿于近似策略,可以提高近似收益,减少时间消耗,进一步改善CNN程序性能;
第二,本发明使用shadow memory存储之前输入的输出,减少内存占用,也可以实现快速存储和读取;
第三,本发明通过判断输入的相似性,在根据相似输入会产生相似输出,把与当前输入相似的输入的输出直接赋给当前输出,扩大近似收益,减少内存消耗,改善性能。
附图说明
构成本申请的一部分的说明书附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。
图1为第一个实施例的对目标循环程序执行穿孔得到近似程序流程图;
图2为第一个实施例的判断待加速程序最终输出精度与第一输出精度之间的误差流程图;
图3为第一个实施例的执行输出注入的流程图。
具体实施方式
应该指出,以下详细说明都是示例性的,旨在对本申请提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本申请所属技术领域的普通技术人员通常理解的相同含义。
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本申请的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
目前,近似计算工作主要分为三部分,第一定位近似对象,第二近似策略,第三质量管理。近似对象一般为冗余,或者对程序影响较小的算法或指令;近似策略一般为各种技术的结合;质量管理是对近似计算系统的输出质量进行检测和管理,已降低精度损失。
实施例一,本实施例提供了基于近似计算的VGG图像特征提取加速方法;
基于近似计算的VGG图像特征提取加速方法,包括:
S1:获取待加速的基于VGG网络的图像特征提取程序,从待加速的基于VGG网络的图像特征提取程序中识别目标循环程序;
S2:对目标循环程序执行穿孔得到初始近似程序,用初始近似程序替换待加速的基于VGG网络的图像特征提取程序中的目标循环程序,即得到加速的基于VGG网络的图像特征提取程序;
S3:获取待特征提取的图像,将待特征提取的图像输入到加速的基于VGG网络的图像特征提取程序中,进行特征提取,在特征提取的过程中对初始近似程序执行输出注入;最后得到提取后的特征;
所述输出注入即利用与当前迭代输入最相似的历史迭代输入对应的迭代输出值作为当前迭代的输出值。
所述待加速的基于VGG网络的图像特征提取程序,简称:待加速的程序。
执行输出注入是实现近似计算的一部分,因为相似输入会产生相似的输出,所以可以把与当前输入相似的输入对应的输出直接赋给当前输出,减少当前执行,从而实现近似,节省内存消耗,提高性能。
作为一个或多个实施例,所述从待加速的基于VGG网络的图像特征提取程序中识别目标循环程序,具体步骤包括:计算待加速程序中每个循环程序的执行时间,获取占用总执行时间最多的前M个循环程序;M为设定值,M为正整数;选取占总执行时间前N位的循环作为目标循环;N为设定值,N为正整数;。
应理解的,可根据具体的程序适当调整目标循环的数量,但一定要是占总执行时间较长的前几位循环。此过程离线操作,不会降低近似的收益。
应理解的,执行穿孔,由于不同的指令和迭代会对程序产生不同的影响,我们通过对待加速程序分别进行精确执行和模拟穿孔执行,根据精确执行和模拟穿孔执行的输出结果绘制误差图,选择对待加速程序影响小于设定阈值的指令或迭代执行穿孔,同时穿孔一些指令或迭代会增大输出误差,一方面我们选择输出损失精度在5%以内的指令执行穿孔,另一方面执行穿孔时,我们根据损失精度从小到大的顺序执行折半穿孔,一旦损失精度超过我们的预期,则停止穿孔。
作为一个或多个实施例,如图1所示,所述S2的对目标循环程序执行穿孔得到近似程序;具体步骤包括:
S21:对待加速的基于VGG网络的图像特征提取程序进行运行,记录待加速程序的第一输出精度,即精确精度;
步骤S22和步骤S23是并发进行的;
S22:对目标循环程序的指令进行模拟穿孔;记录每次模拟穿孔后待加速程序的第二输出精度;
S23:对目标循环程序的迭代进行模拟穿孔;记录每次模拟穿孔后待加速程序的第三输出精度;
S24:每次模拟穿孔后,如果目标循环程序中止或崩溃,则当前被模拟穿孔的指令为敏感指令;否则,当前被模拟穿孔的指令为弹性指令;
每次模拟穿孔后,如果目标循环程序中止或崩溃,则当前被模拟穿孔的迭代为敏感迭代;否则,当前被模拟穿孔的迭代为弹性迭代;
S25:根据待加速程序的第一输出精度和每次模拟穿孔后待加速程序的第二输出精度,计算第一相对误差;
根据待加速程序的第一输出精度和每次模拟穿孔后待加速程序的第三输出精度,计算第二相对误差;
S26:根据计算的第一相对误差和第二相对误差,筛选出第一相对误差和第二相对误差均在设定范围内的弹性指令;绘制每条弹性指令与第一相对误差和第二相对误差的关系图;
根据计算的第一相对误差和第二相对误差,筛选出第一相对误差和第二相对误差均在设定范围内的弹性迭代;绘制每条弹性迭代与第一相对误差和第二相对误差的关系图;
S27:根据每条弹性指令与第一相对误差和第二相对误差的关系图,对第一相对误差和第二相对误差均小于设定范围的弹性指令,按照损失精度从小到大的顺序依次进行真实折半穿孔;
根据每条弹性迭代与第一相对误差和第二相对误差的关系图,对第一相对误差和第二相对误差均小于设定范围的弹性迭代,按照损失精度从小到大的顺序依次进行真实折半穿孔;得到目标循环程序对应的初始近似程序。
作为一个或多个实施例,所述S22:对目标循环程序的指令进行模拟穿孔;是采用注释方式对目标循环程序的指令进行模拟穿孔。
作为一个或多个实施例,所述S23:对目标循环程序的迭代进行模拟穿孔;是采用自定义算法对目标循环程序的迭代进行模拟穿孔。
作为一个或多个实施例,所述采用自定义算法对目标循环程序的迭代进行模拟穿孔,具体步骤包括:
对目标循环程序的每一次迭代进行模拟穿孔,记录每一次模拟穿孔待加速程序的输出精度。
进一步地,所述穿孔,是使用LLVM工具对待处理程序中目标循环的指令和迭代进行依次穿孔。
进一步地,所述穿孔,是控制指定的指令或迭代在待加速程序运行的过程中不执行。
进一步地,所述采用注释方式对目标循环程序的指令进行模拟穿孔,是对待穿孔的指令进行注释处理,进行下一次穿孔操作时,将上一次注释的指令取消注释,每次穿孔只注释一条指令。注释处理的目的是实现待处理程序中不执行被注释的指令,从而完成穿孔操作。
进一步地,所述折半穿孔,是对待穿孔的指令的前二分之一执行穿孔,例如:当前待穿孔的指令或迭代数为10,且当前待穿孔的指令或迭代是按照精度损失从小到大依次排列,则优先穿孔前5个指令或迭代,即前二分之一。
应理解的,所述记录每次模拟穿孔后待加速程序的第二输出精度,是指:记录实现一一对应,即一条指令对应一个穿孔输出,例如:指令1对应穿孔输出1,指令2对应穿孔输出2,指令1和指令2均是指目标循环内的指令。实现依次穿孔每条指令,采用注释技术,即对待穿孔的指令进行注释处理,进行下一次穿孔操作时,确保上一次注释的指令取消注释,每次穿孔只注释一条指令。
进一步地,如图2所示,每一次真实折半穿孔结束,均判断待加速程序最终输出精度与第一输出精度之间的误差;
若误差在设定范围之内,则继续判断未穿孔的指令的个数是否大于0,如果大于0,则继续对下一个未穿孔的指令执行折半穿孔;如果不大于0,则结束穿孔操作;
若误差不在设定范围之内,则判断本次穿孔的指令或迭代的总个数;若总个数大于1,进行重穿孔,即对本次穿孔指令或迭代的前1/2执行穿孔;若本次穿孔总个数小于等于1,则结束穿孔操作。
应理解的,所述步骤S22和步骤S23中的模拟迭代穿孔,记录对应输出。确保步骤操作结束后,所有注释的指令均取消注释,然后再使用LLVM工具依次穿孔目标循环中每条迭代,在属性表内记录穿孔每条迭代后待加速程序的输出。
应理解的,所述步骤S23,不同于指令穿孔的是实现依次穿孔的方法,这里设计一个自定义算法实现迭代的穿孔,来控制每次穿孔的迭代不执行。
自定义算法内容如下:
执行该算法第一次循环时,目标循环程序的第一次迭代不执行;
执行该算法第二次循环时,目标循环程序的第二次迭代不执行;
以此类推,第n次运行该循环时,目标循环程序的第n次迭代不执行;
每次有且仅有一个迭代不执行。
应理解的,所述步骤S24,识别敏感指令和弹性指令。根据穿孔之后循环的输出,可以把指令和迭代均分别划分为敏感指令和弹性指令两部分,执行穿孔之后造成程序突然中止或崩溃的为敏感部分,反之则为弹性部分。
应理解的,所述步骤S25,计算相对误差。计算相对误差,即每条指令和迭代对应的穿孔输出y1与精确输出y2的差距,用百分比表示。公式如下:
相对误差也可以称为输出损失精度,相对误差的大小即表示输出损失精度大小。根据相对误差,可以将指令/迭代分为三部分:
输出损失精度较小(输出损失精度≤5%)、输出损失精度较大(输出精度>5%)、敏感指令/迭代。
作为一个或多个实施例,如图3所示,在特征提取的过程中执行输出注入,其中执行输出注入的具体步骤包括:
首先,将初始近似程序进行设定时间段的执行,目的是为影子内存shadow memory提供初始值;影子内存shadow memory用于存储目标循环中迭代的输入和迭代的输出,随着迭代的执行,影子内存shadow memory记录历史迭代输入和历史迭代输入对应的历史迭代输出,以及当前迭代输入和当前迭代输入对应的迭代输出;
从历史迭代输入中查找与初始近似程序当前迭代输入相似度最高的历史迭代输入,将相似度最高的历史迭代输入对应的历史迭代输出,作为当前迭代输入的迭代输出。
节省当前执行的时间,这一方法由相似输入产生相似输出原理提出。该方法使用影子内存shadow memory采用二元组的方法实现输入和输出信息的存储,输入、输出成对存在,例如:(迭代1输入,迭代1输出),(迭代2输入,迭代2输出),shadow memory使用计数器为输入输出对编号,不同的输入输出具有不同的编号。
作为一个或多个实施例,所述输出注入的具体步骤包括:
S31:选择近似对象:选择除敏感迭代和当前被穿孔的迭代之外的迭代,并把选择出的迭代的地址用存储器存储;
S32:地址检测:当待加速程序执行到初始近似程序,初始近似程序迭代开始执行之前,首先获取当前执行的地址,并在存储器中查找,判断存储器中是否含有当前执行的地址;如果有,则执行S33;如果无,则对初始近似程序的执行过程不做任何处理;
S33:迭代输入的相似度判断:
读取影子内存shadow memory的中历史迭代输入,将当前迭代输入与shadowmemory的历史迭代输入对比,基于哈希算法对比二者之间的相似性;
如果相似性大于设定阈值,则从历史迭代输入中选出一个相似度最高的迭代输入,再找出相似度最高的迭代输入对应的迭代输出执行注入,进入S34;
如果相似度小于设定阈值,则进行对初始近似程序不做任何处理,继续执行;
如果相似度达到百分之百,则为冗余,不执行输出注入,直接穿孔;省却了读取相似迭代输入和二进制插装注入输出的工作,更节省执行时间。
执行结束后,利用当前迭代输入和迭代输出更新shadow memory,计数器增加1,计数器的编号就是当前迭代输入和迭代输出对应的编号;
S34:把相似度最高的迭代输入对应的迭代输出赋给当前输出:
找到相似度最高且最高相似度大于设定阈值,读取相似迭代输入对应的迭代输出,称作相似迭代输出;采用二进制插装直接把相似度最高的迭代输入对应的迭代输出赋给当前迭代输入的迭代输出。
应理解的,S31存储器中保留的是迭代的地址,而这些迭代的地址给执行近似提供了可能性,这对应于输出注入的近似方法。
应理解的,S32,存储器中不含有当前执行的地址,就说明当前迭代是敏感迭代,这一步的主要目的是避免对敏感迭代执行近似操作,以免造成程序的崩溃。
应理解的,S31在之所以只存储迭代的地址,而不存储指令地址,原因有两个:第一,指令本身的特性,指令只是执行,没有相应的输入和输出;第二,当前近似方法输出注入,作用对象是循环迭代,只有循环迭代才会有输入和输出。
应理解的,S33中,Shadow memory中输入的提取由计数器控制;
应理解的,S33中,判断两个输入的相似性,以浮点数为例,用二者的差值表示相似度,即差值是1相似度为99%,差值是8相似度为92%,也可以使用hash来识别相似度判断。
应理解的,步骤S34中,现有技术中,采用二进制插装都是用来识别敏感和弹性计算,而本实施例是利用二进制插装来实现相似输入的输出注入到当前输入的输出,本实施例注入的对象是通过相似输入会产生相似的输出得到。
应理解的,所述步骤S31之后,在步骤S32之前,步骤31和步骤32之间,先对待加速程序在设定时间段内精确执行,把相应的输入输出保存在shadow memory中,目的是给shadow memory提供一些初始值。shadow memory内部存储结构如下:
1 | (输入,输出) |
2 | (输入,输出) |
作为一个或多个实施例,所述动态质量管理,具体步骤包括:
质量管理分为两个阶段,分别实现不同的功能,且两个模块并行操纵。两个阶段为对比阶段和恢复阶段;
S51:当shadow memory中与当前迭代输入相似度最高迭代输入的相似度大于设定阈值,执行对比阶段,即S52;否则,不对初始近似程序执行近似操作,用当前执行的迭代输入和迭代输出更新shadow memory;
S52:执行对比阶段,即对比相似度最高迭代输入对应的程序总输出与未注入操作状态下程序的总输出,根据二者的误差,确定是否执行恢复阶段;
如果误差在设定阈值之内,则执行二进制插桩输出注入操作;否则,执行恢复阶段;
S53:执行恢复阶段,即不对初始近似程序执行近似操作,用当前执行的迭代输入和迭代输出更新shadow memory。
对比阶段和恢复阶段并行进行,即对比下一操作结果时,对上一操作或之前的操作执行恢复过程,根据耗时性可知,对比操作总是先于恢复操作。
综上,虽然相似输入会产生相似输出,但我们必须保证相似度最高输入的输出在用户设定的误差范围内,对比阶段很好实现这一目的。
应理解的,针对S51,现有技术是根据用户阈值确定是否执行恢复阶段,本实施例是通过精确和近似之间的对比产生的误差来确定是否执行恢复,因为本实施例的目的是尽可能的最小化深度学习算法的输出精度损失,同时误差是可调整的。
输出注入的质量管理优点:
第一,与以往管理方法不同,现有技术是插入一个分支,进行近似和精确操作,而本实施例不使用分支,减少分支的开销。
第二:检测模块是在输出注入操作之后,避免不必要的误差判断,因为本实施例选择相似度在90%以上,且相似度最高的输入的输出执行注入,大部分输出是满足注入要求的。
第三,对比阶段总是在执行注入之前,因为即使是相似输入会产生相似的输出,也可能会产生不能接受的结果,在这种情况下,如果还执行输出注入的话会增大注入开销,因此在执行注入之前进行判断会节省一部分开销。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.基于近似计算的VGG图像特征提取加速方法,其特征是,包括:
获取待加速的基于VGG网络的图像特征提取程序,从待加速的基于VGG网络的图像特征提取程序中识别目标循环程序;
对目标循环程序执行穿孔得到初始近似程序,用初始近似程序替换待加速的基于VGG网络的图像特征提取程序中的目标循环程序,即得到加速的基于VGG网络的图像特征提取程序;
获取待特征提取的图像,将待特征提取的图像输入到加速的基于VGG网络的图像特征提取程序中,进行特征提取,在特征提取的过程中对初始近似程序执行输出注入;最后得到提取后的特征;
所述输出注入即利用与当前迭代输入最相似的历史迭代输入对应的迭代输出值作为当前迭代的输出值。
2.如权利要求1所述的方法,其特征是,所述从待加速的基于VGG网络的图像特征提取程序中识别目标循环程序,具体步骤包括:计算待加速程序中每个循环程序的执行时间,获取占用总执行时间最多的前M个循环程序;M为设定值,M为正整数;选取占总执行时间前N位的循环作为目标循环;N为设定值,N为正整数;。
3.如权利要求1所述的方法,其特征是,对目标循环程序执行穿孔得到初始近似程序;具体步骤包括:
S21:对待加速的基于VGG网络的图像特征提取程序进行运行,记录待加速程序的第一输出精度,即精确精度;
步骤S22和步骤S23是并发进行的;
S22:对目标循环程序的指令进行模拟穿孔;记录每次模拟穿孔后待加速程序的第二输出精度;
S23:对目标循环程序的迭代进行模拟穿孔;记录每次模拟穿孔后待加速程序的第三输出精度;
S24:每次模拟穿孔后,如果目标循环程序中止或崩溃,则当前被模拟穿孔的指令为敏感指令;否则,当前被模拟穿孔的指令为弹性指令;
每次模拟穿孔后,如果目标循环程序中止或崩溃,则当前被模拟穿孔的迭代为敏感迭代;否则,当前被模拟穿孔的迭代为弹性迭代;
S25:根据待加速程序的第一输出精度和每次模拟穿孔后待加速程序的第二输出精度,计算第一相对误差;
根据待加速程序的第一输出精度和每次模拟穿孔后待加速程序的第三输出精度,计算第二相对误差;
S26:根据计算的第一相对误差和第二相对误差,筛选出第一相对误差和第二相对误差均在设定范围内的弹性指令;绘制每条弹性指令与第一相对误差和第二相对误差的关系图;
根据计算的第一相对误差和第二相对误差,筛选出第一相对误差和第二相对误差均在设定范围内的弹性迭代;绘制每条弹性迭代与第一相对误差和第二相对误差的关系图;
S27:根据每条弹性指令与第一相对误差和第二相对误差的关系图,对第一相对误差和第二相对误差均小于设定范围的弹性指令,按照损失精度从小到大的顺序依次进行真实折半穿孔;
根据每条弹性迭代与第一相对误差和第二相对误差的关系图,对第一相对误差和第二相对误差均小于设定范围的弹性迭代,按照损失精度从小到大的顺序依次进行真实折半穿孔;得到目标循环程序对应的初始近似程序。
4.如权利要求1所述的方法,其特征是,在特征提取的过程中对初始近似程序执行输出注入的具体步骤包括:
首先,将初始近似程序进行设定时间段的执行,目的是为影子内存shadow memory提供初始值;影子内存shadow memory用于存储目标循环中迭代的输入和迭代的输出,随着迭代的执行,影子内存shadow memory记录历史迭代输入和历史迭代输入对应的历史迭代输出,以及当前迭代输入和当前迭代输入对应的迭代输出;
从历史迭代输入中查找与初始近似程序当前迭代输入相似度最高的历史迭代输入,将相似度最高的历史迭代输入对应的历史迭代输出,作为当前迭代输入的迭代输出。
5.如权利要求1所述的方法,其特征是,所述输出注入的具体步骤包括:
S31:选择近似对象:选择除敏感迭代和当前被穿孔的迭代之外的迭代,并把选择出的迭代的地址用存储器存储;
S32:地址检测:当待加速程序执行到初始近似程序,初始近似程序迭代开始执行之前,首先获取当前执行的地址,并在存储器中查找,判断存储器中是否含有当前执行的地址;如果有,则执行S33;如果无,则对初始近似程序的执行过程不做任何处理;
S33:迭代输入的相似度判断;
S34:把相似度最高的迭代输入对应的迭代输出赋给当前输出:
找到相似度最高且最高相似度大于设定阈值,读取相似迭代输入对应的迭代输出,称作相似迭代输出;采用二进制插装直接把相似度最高的迭代输入对应的迭代输出赋给当前迭代输入的迭代输出。
6.如权利要求5所述的方法,其特征是,迭代输入的相似度判断的步骤包括:读取影子内存shadow memory的中历史迭代输入,将当前迭代输入与shadow memory的历史迭代输入对比,基于哈希算法对比二者之间的相似性;
如果相似性大于设定阈值,则从历史迭代输入中选出一个相似度最高的迭代输入,再找出相似度最高的迭代输入对应的迭代输出执行注入,进入S34;
如果相似度小于设定阈值,则进行对初始近似程序不做任何处理,继续执行;
如果相似度达到百分之百,则为冗余,不执行输出注入,直接穿孔;
执行结束后,利用当前迭代输入和迭代输出更新shadow memory,计数器增加1,计数器的编号就是当前迭代输入和迭代输出对应的编号。
7.如权利要求1所述的方法,其特征是,动态质量管理,具体步骤包括:
S51:当shadow memory中与当前迭代输入相似度最高迭代输入的相似度大于设定阈值,执行对比阶段,即S52;否则,不对初始近似程序执行近似操作,用当前执行的迭代输入和迭代输出更新shadow memory;
S52:执行对比阶段,即对比相似度最高迭代输入对应的程序总输出与未注入操作状态下程序的总输出,根据二者的误差,确定是否执行恢复阶段;
如果误差在设定阈值之内,则执行二进制插桩输出注入操作;否则,执行恢复阶段;
S53:执行恢复阶段,不对初始近似程序执行近似操作,用当前执行的迭代输入和迭代输出更新shadow memory。
8.基于近似计算的VGG图像特征提取加速系统,其特征是,包括:
目标循环程序提取模块,其被配置为:获取待加速的基于VGG网络的图像特征提取程序,从待加速的基于VGG网络的图像特征提取程序中识别目标循环程序;
穿孔模块,其被配置为:对目标循环程序执行穿孔得到初始近似程序,用初始近似程序替换待加速的基于VGG网络的图像特征提取程序中的目标循环程序,即得到加速的基于VGG网络的图像特征提取程序;
特征提取模块,其被配置为:获取待特征提取的图像,将待特征提取的图像输入到加速的基于VGG网络的图像特征提取程序中,进行特征提取,在特征提取的过程中对初始近似程序执行输出注入;最后得到提取后的特征;
所述输出注入即利用与当前迭代输入最相似的历史迭代输入对应的迭代输出值作为当前迭代的输出值。
9.一种电子设备,其特征是,包括存储器和处理器以及存储在存储器上并在处理器上运行的计算机指令,所述计算机指令被处理器运行时,完成权利要求1-7任一项方法所述的步骤。
10.一种计算机可读存储介质,其特征是,用于存储计算机指令,所述计算机指令被处理器执行时,完成权利要求1-7任一项方法所述的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910912744.3A CN110633714B (zh) | 2019-09-25 | 2019-09-25 | 基于近似计算的vgg图像特征提取加速方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910912744.3A CN110633714B (zh) | 2019-09-25 | 2019-09-25 | 基于近似计算的vgg图像特征提取加速方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110633714A true CN110633714A (zh) | 2019-12-31 |
CN110633714B CN110633714B (zh) | 2022-04-15 |
Family
ID=68973986
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910912744.3A Active CN110633714B (zh) | 2019-09-25 | 2019-09-25 | 基于近似计算的vgg图像特征提取加速方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110633714B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111399998A (zh) * | 2020-02-26 | 2020-07-10 | 山东师范大学 | 利用近似计算保证多个延迟敏感程序性能的方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160328643A1 (en) * | 2015-05-07 | 2016-11-10 | Siemens Aktiengesellschaft | Method and System for Approximating Deep Neural Networks for Anatomical Object Detection |
US20190005390A1 (en) * | 2017-06-30 | 2019-01-03 | University Of Florida Research Foundation, Inc. | Architecture-independent approximation discovery |
CN110162403A (zh) * | 2019-05-28 | 2019-08-23 | 首都师范大学 | 一种基于人工神经网络的硬件资源分配方法及系统 |
-
2019
- 2019-09-25 CN CN201910912744.3A patent/CN110633714B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160328643A1 (en) * | 2015-05-07 | 2016-11-10 | Siemens Aktiengesellschaft | Method and System for Approximating Deep Neural Networks for Anatomical Object Detection |
US20190005390A1 (en) * | 2017-06-30 | 2019-01-03 | University Of Florida Research Foundation, Inc. | Architecture-independent approximation discovery |
CN110162403A (zh) * | 2019-05-28 | 2019-08-23 | 首都师范大学 | 一种基于人工神经网络的硬件资源分配方法及系统 |
Non-Patent Citations (3)
Title |
---|
MARCELO BRANDALERO ET AL: "Efficient Local Memory Support for Approximate Computing", 《2018 VIII BRAZILIAN SYMPOSIUM ON COMPUTING SYSTEMS ENGINEERING (SBESC)》 * |
QIANG XU ET AL: "Approximate Computing:A Survey", 《IEEE DESIGN & TEST》 * |
SHIKAI LI ET AL: "Sculptor: Flexible Approximation with Selective Dynamic Loop Perforation", 《INTERNATIONAL CONFERENCE ON SUPERCOMPUTING》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111399998A (zh) * | 2020-02-26 | 2020-07-10 | 山东师范大学 | 利用近似计算保证多个延迟敏感程序性能的方法及系统 |
CN111399998B (zh) * | 2020-02-26 | 2022-11-15 | 山东师范大学 | 利用近似计算保证多个延迟敏感程序性能的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN110633714B (zh) | 2022-04-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2019526142A (ja) | 検索語句の誤り訂正方法および装置 | |
CN102915314A (zh) | 一种纠错对自动生成方法及系统 | |
CN114356248B (zh) | 一种数据处理方法和装置 | |
CN116090375B (zh) | 基于覆盖率数据确定目标驱动源码的系统 | |
CN110633714B (zh) | 基于近似计算的vgg图像特征提取加速方法及系统 | |
CN111241778A (zh) | 一种基于机器学习的fpga自动调参优化方法及系统 | |
JP2014229311A (ja) | シミュレーションシステム及び方法と該システムを含むコンピュータシステム | |
JP4750665B2 (ja) | タイミング解析方法および装置 | |
US8201117B2 (en) | Method for scalable derivation of an implication-based reachable state set overapproximation | |
JP6973197B2 (ja) | データセット検証装置、データセット検証方法、およびデータセット検証プログラム | |
CN104598473A (zh) | 一种信息处理方法及电子设备 | |
US20030083858A1 (en) | Incremental automata verification | |
KR20200074624A (ko) | 도메인 기반의 음성 인식 모델의 최적화가 가능한 음성 인식 장치 및 그 동작 방법 | |
US20210318879A1 (en) | Instruction execution method, device, and electronic equipment | |
CN110659729B (zh) | 基于循环穿孔的加速cnn图像处理方法及系统 | |
US9330216B2 (en) | Integrated circuit design synthesis using slack diagrams | |
Xu et al. | The adaptive spelling error checking algorithm based on trie tree | |
JP2021043915A (ja) | 情報処理装置、情報処理プログラム、及び情報処理方法 | |
CN117130595A (zh) | 代码开发方法、装置、计算机设备和存储介质 | |
CN116578500B (zh) | 基于强化学习的代码测试方法、装置以及设备 | |
CN113822445B (zh) | 模型集成预测方法、系统、电子设备及存储介质 | |
KR102082253B1 (ko) | 좌표 모델을 기초로 메쉬 품질의 향상을 위한 그래픽 처리를 수행하는 전자 장치 및 그 동작 방법 | |
US20240119309A1 (en) | Method for generating computer-executable code for implementing an artificial neural network | |
CN108886371B (zh) | 似然度生成电路和似然度计算方法 | |
KR101965074B1 (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |