CN111522527A - 防止数据寄存器饱和溢出的方法、装置及电子设备 - Google Patents
防止数据寄存器饱和溢出的方法、装置及电子设备 Download PDFInfo
- Publication number
- CN111522527A CN111522527A CN202010384121.6A CN202010384121A CN111522527A CN 111522527 A CN111522527 A CN 111522527A CN 202010384121 A CN202010384121 A CN 202010384121A CN 111522527 A CN111522527 A CN 111522527A
- Authority
- CN
- China
- Prior art keywords
- data
- fixed
- threshold value
- set threshold
- bit number
- 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49905—Exception handling
- G06F7/4991—Overflow or underflow
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本说明书实施例公开了一种防止数据寄存器饱和溢出的方法、装置及电子设备,其技术方案包括,基于指令触发,确定在基于数据寄存器对应的预设比特位数进行定点累加运算时,输入的数据元素的绝对值之和的设定阈值。根据所述设定阈值对目标数据进行拆分得到各数据子段,构成所述数据子段的各数据元素的绝对值之和不超过所述设定阈值。根据所述预设比特位数对所述各数据子段分别进行定点累加运算,并将得到的各定点累加结果分别存放在所述预设比特位数对应的所述数据寄存器中,使得所述数据寄存器未饱和溢出。将各所述数据寄存器中的定点累加结果进行累加求和。
Description
技术领域
本说明书实施例涉及计算机技术领域,尤其涉及一种防止数据寄存器饱和溢出的方法、装置及电子设备。
背景技术
目前,在执行定点累加运算过程中,可以采用数据寄存器存放每次累加运算结果,直至定点累加运算全部完成。
在定点累加运算过程中,尤其是在数据寄存器中存放累加运算结果时,如何防止数据寄存器由于比特位数限制而发生饱和溢出,是业界考虑的一个课题。
发明内容
有鉴于此,本说明书实施例提供了一种有效防止数据寄存器饱和溢出的方法、装置及电子设备。
本说明书实施例采用下述技术方案:
本说明书实施例提供一种防止数据寄存器饱和溢出的方法,包括:
接收关于目标数据的定点累加运算指令;
基于所述指令触发,确定在基于数据寄存器对应的预设比特位数进行定点累加运算时,输入的各数据元素的绝对值之和的设定阈值;
根据所述设定阈值对所述目标数据进行拆分得到各数据子段,构成所述数据子段的各数据元素的绝对值之和不超过所述设定阈值;
根据所述预设比特位数对所述各数据子段分别进行定点累加运算,并将得到的各定点累加结果分别存放在所述预设比特位数对应的所述数据寄存器中,使得所述数据寄存器未饱和溢出;
将各所述数据寄存器中的定点累加结果进行累加求和。
本说明书实施例还提供一种防止数据寄存器饱和溢出的方法,包括:
接收关于目标数据的定点乘积累加运算指令;
基于所述指令触发,确定在基于数据寄存器对应的预设比特位数进行定点乘积累加运算时,输入的数据元素的绝对值之和的设定阈值;
根据所述设定阈值对所述目标数据进行拆分得到各数据子段,构成所述数据子段的各数据元素的绝对值之和不超过所述设定阈值;
根据所述预设比特位数对所述各数据子段分别进行定点乘积累加运算,并将得到的各累加结果分别存放在所述预设比特位数对应的所述数据寄存器中,使得所述数据寄存器未饱和溢出;
将各所述数据寄存器中的累加结果进行累加求和。
本说明书实施例还提供一种防止数据寄存器饱和溢出的装置,包括:
接收模块,接收关于目标数据的定点累加运算指令;
确定模块,基于所述指令触发,确定在基于数据寄存器对应的预设比特位数进行定点累加运算时,输入的数据元素的绝对值之和的设定阈值;
拆分模块,根据所述设定阈值对所述目标数据进行拆分得到各数据子段,构成所述数据子段的各数据元素的绝对值之和不超过所述设定阈值;
定点累加运算模块,根据所述预设比特位数对所述各数据子段分别进行定点累加运算,并将得到的各定点累加结果分别存放在所述预设比特位数对应的所述数据寄存器中,使得所述数据寄存器未饱和溢出;
求和模块,将各所述数据寄存器中的定点累加结果进行累加求和。
本说明书实施例还提供一种防止数据寄存器饱和溢出的装置,包括:
接收模块,接收关于目标数据的定点乘积累加运算指令;
确定模块,基于所述指令触发,确定在基于数据寄存器对应的预设比特位数进行定点乘积累加运算时,输入的数据元素的绝对值之和的设定阈值;
拆分模块,根据所述设定阈值对所述目标数据进行拆分得到各数据子段,构成所述数据子段的各数据元素的绝对值之和不超过所述设定阈值;
运算模块,根据所述预设比特位数对所述各数据子段分别进行定点乘积累加运算,并将得到的各累加结果分别存放在所述预设比特位数对应的所述数据寄存器中,使得所述数据寄存器未饱和溢出;
求和模块,将各所述数据寄存器中的累加结果进行累加求和。
本说明书实施例还提供一种电子设备,包括:
处理器;以及
被配置成存储计算机程序的存储器,所述计算机程序在被执行时使所述处理器执行以下操作:
接收关于目标数据的定点累加运算指令;
基于所述指令触发,确定在基于目标数据寄存器对应的预设比特位数进行定点累加运算时,输入的目标数据元素的绝对值之和的设定阈值;
根据所述设定阈值对所述目标数据进行拆分得到各数据子段,构成所述数据子段的各数据元素的绝对值之和不超过所述设定阈值;
根据所述预设比特位数对所述各数据子段分别进行定点累加运算,并将得到的各定点累加结果分别存放在所述预设比特位数对应的所述数据寄存器中,使得所述数据寄存器未饱和溢出;
将各所述数据寄存器中的定点累加结果进行累加求和。
本说明书实施例还提供一种电子设备,包括:
处理器;以及
被配置成存储计算机程序的存储器,所述计算机程序在被执行时使所述处理器执行以下操作:
接收关于目标数据的定点乘积累加运算指令;
基于所述指令触发,确定在基于数据寄存器对应的预设比特位数进行定点乘积累加运算时,输入的数据元素的绝对值之和的设定阈值;
根据所述设定阈值对所述目标数据进行拆分得到各数据子段,构成所述数据子段的各数据元素的绝对值之和不超过所述设定阈值;
根据所述预设比特位数对所述各数据子段分别进行定点乘积累加运算,并将得到的各累加结果分别存放在所述预设比特位数对应的所述数据寄存器中,使得所述数据寄存器未饱和溢出;
将各所述数据寄存器中的累加结果进行累加求和。
本说明书实施例采用的上述至少一个技术方案能够达到以下有益效果:
基于指令触发,确定在基于数据寄存器对应的预设比特位数进行定点累加运算时,输入的数据元素的绝对值之和的设定阈值。根据所述设定阈值对所述目标数据进行拆分得到各数据子段,构成所述数据子段的各数据元素的绝对值之和不超过所述设定阈值。根据所述预设比特位数对所述各数据子段分别进行定点累加运算,并将得到的各定点累加结果分别存放在所述预设比特位数对应的所述数据寄存器中,使得所述数据寄存器未饱和溢出。将各所述数据寄存器中的定点累加结果进行累加求和。
利用本说明书实施例提出的方案,由于原始的目标数据被拆分成数据子段时,确保了各数据子段中的数据元素绝对值之和不超过设定阈值,那么对每个数据寄存器,定点累加结果不会超过数据寄存器中存放数据的阈值,有效防止数据寄存器饱和溢出。同时,通过将原始的目标数据拆分成数据子段时,每个数据子段的长度小于原始的数据长度,那么对每个数据子段进行定点累加运算时,可以使用相对较小预设比特位数的数据寄存器,那么在基于单指令流多数据流SIMD(全称:Single Instruction Multiple Data)得到相同累加结果的情况下,本方案可以减少SIMD指令的总计算量,提升运算性能。
附图说明
此处所说明的附图用来提供对本说明书实施例的进一步理解,构成本说明书实施例的一部分,本说明书的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本说明书实施例提出的一种防止数据寄存器饱和溢出的方法的流程图;
图2为本说明书实施例提出的一种防止数据寄存器饱和溢出的方法的流程图;
图3为本说明书实施例提出的一种防止数据寄存器饱和溢出的方法的流程图;
图4为本说明书实施例提出的一种防止数据寄存器饱和溢出的装置的结构图;
图5为本说明书实施例提出的一种防止数据寄存器饱和溢出的装置的结构图。
具体实施方式
本说明书实施例提出一种防止数据寄存器饱和溢出的方法、装置及电子设备,其技术方案包括,基于指令触发,确定在基于数据寄存器对应的预设比特位数进行定点累加运算时,输入的数据元素的绝对值之和的设定阈值。根据所述设定阈值对目标数据进行拆分得到各数据子段,构成所述数据子段的各数据元素的绝对值之和不超过所述设定阈值。根据所述预设比特位数对所述各数据子段分别进行定点累加运算,并将得到的各定点累加结果分别存放在所述预设比特位数对应的所述数据寄存器中,使得所述数据寄存器未饱和溢出。将各所述数据寄存器中的定点累加结果进行累加求和。
利用本说明书实施例提出的方案,由于原始的目标数据被拆分成数据子段时,确保了各数据子段中的数据元素绝对值之和不超过设定阈值,那么对每个数据寄存器,定点累加结果不会超过数据寄存器中存放数据的阈值,有效防止数据寄存器饱和溢出。同时,通过将原始的数据拆分成数据子段时,每个数据子段的长度小于原始的数据长度,那么对每个数据子段进行定点累加运算时,可以使用相对较小预设比特位数的数据寄存器,那么在基于SIMD得到相同累加结果的情况下,本方案可以减少SIMD指令的总计算量,提升运算性能。
为使本申请的目的、技术方案和优点更加清楚,下面将结合本说明书具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
以下结合附图,详细说明本说明书各实施例提供的技术方案。
图1为本说明书实施例提出的一种防止数据寄存器饱和溢出的方法的流程图。本方法的执行主体可以是定点累加运算处理装置,例如可以是各种终端,如手机、计算机、平板电脑等具备计算存储功能的电子设备。
步骤101:接收关于目标数据的定点累加运算指令。
本说明书实施例记载的目标数据的数据类型不受限定。其中,目标数据的形式可以是数组或其他形式,在此不作限定。
步骤103:基于所述指令触发,确定在基于数据寄存器对应的预设比特位数进行定点累加运算时,输入的各数据元素的绝对值之和的设定阈值。
应当理解的是,浮点类的运算并不涉及饱和溢出的问题,因此,本说明书实施例中记载的累加运算适用于定点累加运算。
本说明书实施例记载的预设比特位数是指数据寄存器存放数据的比特位数。例如,若数据寄存器为16bit的short,那么预设比特位数为16,其对应的数据类型为16位数的short。若数据寄存器为32bit的int,那么预设比特位数为32,对应的数据类型为32位数的int。
本说明书实施例记载的输入的数据元素是一条完整数据的组成元素。在实际的定点累加过程中,可以是对各数据元素依次执行定点累加运算。此时,设定阈值是指输入的各数据元素的绝对值之和的最大值。通过确定设定阈值,确保对这些数据元素的定点累加结果不超过数据寄存器存放数据的最大数值。
例如,对16bit的short数据寄存器,其存放的最大数值是32768。
本说明书实施例记载的设定阈值可以是预先设定。此时,可以根据数据寄存器的预设比特位数获取对应的设定阈值。
在另一实施例中,确定在基于数据寄存器对应的预设比特位数进行定点累加运算时,输入的各数据元素的绝对值之和的设定阈值,可以包括:
利用所述预设比特位数确定所述数据寄存器中存放数据的数值阈值,所述数值阈值防止所述数据寄存器中的存放数据发生饱和溢出;
根据所述数值阈值计算在基于所述预设比特位数进行定点累加运算时,输入的数据元素的绝对值之和的设定阈值。
本说明书实施例记载的数值阈值可以是数据寄存器存放数据的最大数值。那么通过数值阈值可以反向推导出设定阈值。
步骤105:根据所述设定阈值对所述目标数据进行拆分得到各数据子段,构成所述数据子段的各数据元素的绝对值之和不超过所述设定阈值。
对目标数据拆分后得到的数据子段,相比于原始的目标数据,其长度减小,这样在采用相对较小预设比特位数的数据寄存器存储各数据子段的定点累加结果时,可以防止数据寄存器饱和溢出。这就为采用相对较小预设比特位数的数据寄存器进行定点累加运算提供了可能性。
本说明书实施例提出的拆分依据是,每个数据子段中的各数据元素的绝对值之和不超过设定阈值,这可以确保后续根据该数据子段得到的定点累加结果不会在数据寄存器中因饱和溢出。
在拆分过程中,可以按照目标数据中各数据元素的组成顺序,依次拆分。
步骤107:根据所述预设比特位数对所述各数据子段分别进行定点累加运算,并将得到的各定点累加结果分别存放在所述预设比特位数对应的所述数据寄存器中,使得所述数据寄存器未饱和溢出。
在本说明书实施例中,每个数据子段的定点累加结果存放在一个数据寄存器中,作为中间累加结果,直到所有数据子段均完成定点累加运算。
步骤109:将各所述数据寄存器中的定点累加结果进行累加求和。
每个数据寄存器中存储的定点累加结果为中间累加结果,将这些中间累加结果求和,可以得到最终的定点累加运算结果。
通过以上方案,实现对输入的目标数据进行定点累加运算,输出数据为对中间累加结果的求和值。
利用本说明书实施例提出的方案,由于原始的目标数据被拆分成数据子段时,确保了各数据子段中的数据元素绝对值之和不超过设定阈值,那么对每个数据寄存器,定点累加结果不会超过数据寄存器中存放数据的阈值,有效防止数据寄存器饱和溢出。同时,通过将原始的目标数据拆分成数据子段时,每个数据子段的长度小于原始的数据长度,那么对每个数据子段进行定点累加运算时,可以使用相对较小预设比特位数的数据寄存器,那么在基于SIMD得到相同累加结果的情况下,本方案可以减少SIMD指令的总计算量,提升运算性能。
本说明书实施例记载的定点累加运算可以在ARM CPU上的SIMD指令,也可以扩展到DSP等其他架构下的SIMD指令,在此不作具体限定。
其中,本说明书实施例记载的定点累加运算可以为定点卷积运算或称为定点乘积运算,换言之,可以是对定点卷积中相乘累加运算的处理。另外,也可以是其他形式的定点累加运算,例如相减累加运算、相除累加运算等,在此不作具体限定。
在本说明书实施例中,本说明书实施例记载的定点卷积运算应用于深度学习引擎中。例如,所述深度学习引擎包括如下一种或多种的组合:
基于深度学习的图像识别、语音识别和文本识别。
另外,应该理解的是,本说明书实施例中,所涉及的数据(输入数据、输出数据)主要以向量指令形式为例进行说明,但是,也不排除对标量指令实施本说明书方案的情况。
图2为本说明书实施例提出的一种防止数据寄存器饱和溢出的方法的流程图。
步骤202:接收关于目标数据的定点乘积累加运算指令;
步骤204:基于所述指令触发,确定在基于数据寄存器对应的预设比特位数进行定点乘积累加运算时,输入的数据元素的绝对值之和的设定阈值。
具体地,以16bit的short为例说明如何确定设定阈值。
通常定点卷积过程中,以1x1卷积为例,当输入Feature Map的个数为inCh时,一个输出Feature Map上每个点i的计算公式为:
其中输入的数据类型为char(8bit),权重数据类型为char(8bit),输出数据类型为char(8bit),在输入的数据和权重做相乘累加时,需要用数据类型更大的数据寄存器来存放累加结果。
假设定点卷积累加运算中的公式:
其中,L i 为输入的第i个数据元素,R i 为第i个数据元素的权重值。
当采用16bir累加器时,有
也就是,当max(│R i │)取值最大为27=128时,输入的各数据元素之和的设定阈值为256。
对32bit的long或其他预设比特位数时,对应的设定阈值可以参考计算,在此不再限定。
另外,对于定点相减累加或定点相除累加,可以参考计算,在此不作限定。
步骤206:根据所述设定阈值对所述目标数据进行拆分得到各数据子段,构成所述数据子段的各数据元素的绝对值之和不超过所述设定阈值。
例如,若设定阈值是256,那么各数据元素的绝对值之和不超过256。
步骤208:根据所述预设比特位数对所述各数据子段分别进行定点乘积累加运算,并将得到的各累加结果分别存放在所述预设比特位数对应的所述数据寄存器中,使得所述数据寄存器未饱和溢出。
步骤210:将各所述数据寄存器中的累加结果进行累加求和。
利用本说明书实施例提出的方案,由于原始的目标数据被拆分成数据子段时,确保了各数据子段中的数据元素绝对值之和不超过设定阈值,那么对每个数据寄存器,定点累加结果不会超过数据寄存器中存放数据的阈值,有效防止数据寄存器饱和溢出。同时,通过将原始的目标数据拆分成数据子段时,每个数据子段的长度小于原始的数据长度,那么对每个数据子段进行定点累加运算时,可以使用相对较小预设比特位数的数据寄存器,那么在基于SIMD得到相同累加结果的情况下,本方案可以减少SIMD指令的总计算量,提升运算性能。
图3为本说明书实施例提出的一种防止数据寄存器饱和溢出的方法的流程图。本方法以基于int16的数据寄存器为例,阐述关于定点卷积运算中防止数据寄存器饱和溢出的方法。
步骤301:利用数组的值,对其中的数据元素依次按照=>i进行计算,得到数据元素L i 的绝对值之和小于设定阈值256的最长个数,将这些个数的数据元素构成一个数据子段,实现将数组进行拆分得到n个数据子段。
步骤303:对每个数据子段i利用16bit进行定点乘积累加,累加结果存放在数据寄存器中;
步骤305:判断i<n;
若是,则返回步骤303;
步骤307:若否,则从各数据寄存器中取出n个累加结果,将该n个累加结果累加求和,结束。
在本实施例记载的方法中,设定阈值是以权重取最大值计算得到的最大设定阈值。在另一实施例中,在执行步骤303之前,本方法还可以包括:
获取定点乘积累加运算中的实际权重系数;
基于所述实际权重系数调整最大设定阈值;
若调整后的设定阈值小于最大设定阈值,则根据所述调整后的设定阈值对各数据子段进行合并,使得后并后的每个数据子段中各数据元素的绝对值之和小于调整后的设定阈值。
这可以减少当前的定点乘积累加运算所花费的时间。
图4为本说明书实施例提出的一种防止数据寄存器饱和溢出的装置的结构图。本装置可以包括:
接收模块401,接收关于目标数据的定点累加运算指令;
确定模块402,基于所述指令触发,确定在基于数据寄存器对应的预设比特位数进行定点累加运算时,输入的数据元素的绝对值之和的设定阈值;
拆分模块403,根据所述设定阈值对所述目标数据进行拆分得到各数据子段,构成所述数据子段的各数据元素的绝对值之和不超过所述设定阈值;
定点累加运算模块404,根据所述预设比特位数对所述各数据子段分别进行定点累加运算,并将得到的各定点累加结果分别存放在所述预设比特位数对应的所述数据寄存器中,使得所述数据寄存器未饱和溢出;
求和模块405,将各所述数据寄存器中的定点累加结果进行累加求和。
可选地,确定在基于数据寄存器对应的预设比特位数进行定点累加运算时,输入的数据元素的绝对值之和的设定阈值,包括:
利用所述预设比特位数确定所述数据寄存器中存放数据的数值阈值,所述数值阈值防止所述数据寄存器中的存放数据发生饱和溢出;
根据所述数值阈值计算在基于所述预设比特位数进行定点累加运算时,输入的数据元素的绝对值之和的设定阈值。
可选地,所述预设比特位数的数据类型包括16bit位数的short。
可选地,所述定点累加运算为定点卷积运算。
可选地,所述定点卷积运算应用于深度学习引擎中,所述深度学习引擎包括如下一种或多种的组合:
基于深度学习的图像识别、语音识别和文本识别。
利用本说明书实施例记载的装置,由于原始的目标数据被拆分成数据子段时,确保了各数据子段中的数据元素绝对值之和不超过设定阈值,那么对每个数据寄存器,定点累加结果不会超过数据寄存器中存放数据的阈值,有效防止数据寄存器饱和溢出。同时,通过将原始的目标数据拆分成数据子段时,每个数据子段的长度小于原始的数据长度,那么对每个数据子段进行定点累加运算时,可以使用相对较小预设比特位数的数据寄存器,那么在基于SIMD得到相同累加结果的情况下,本方案可以减少SIMD指令的总计算量,提升运算性能。
基于同一个发明构思,本说明书实施例还提供了一种电子设备,包括:
处理器;以及
被配置成存储计算机程序的存储器,所述计算机程序在被执行时使所述处理器执行以下操作:
接收关于目标数据的定点累加运算指令;
基于所述指令触发,确定在基于数据寄存器对应的预设比特位数进行定点累加运算时,输入的数据元素的绝对值之和的设定阈值;
根据所述设定阈值对所述目标数据进行拆分得到各数据子段,构成所述数据子段的各数据元素的绝对值之和不超过所述设定阈值;
根据所述预设比特位数对所述各数据子段分别进行定点累加运算,并将得到的各定点累加结果分别存放在所述预设比特位数对应的所述数据寄存器中,使得所述数据寄存器未饱和溢出;
将各所述数据寄存器中的定点累加结果进行累加求和。
基于同一发明构思,本说明书实施例中还提供了一种计算机可读存储介质,包括与电子设备结合使用计算机程序,所述计算机程序可被处理器执行以完成以下步骤:
接收关于目标数据的定点累加运算指令;
基于所述指令触发,确定在基于数据寄存器对应的预设比特位数进行定点累加运算时,输入的数据元素的绝对值之和的设定阈值;
根据所述设定阈值对所述目标数据进行拆分得到各数据子段,构成所述数据子段的各数据元素的绝对值之和不超过所述设定阈值;
根据所述预设比特位数对所述各数据子段分别进行定点累加运算,并将得到的各定点累加结果分别存放在所述预设比特位数对应的所述数据寄存器中,使得所述数据寄存器未饱和溢出;
将各所述数据寄存器中的定点累加结果进行累加求和。
图5为本说明书实施例提出的一种防止数据寄存器饱和溢出的装置的结构图。本装置可以包括:
接收模块501,接收关于目标数据的定点乘积累加运算指令;
确定模块502,基于所述指令触发,确定在基于数据寄存器对应的预设比特位数进行定点乘积累加运算时,输入的数据元素的绝对值之和的设定阈值;
拆分模块503,根据所述设定阈值对所述目标数据进行拆分得到各数据子段,构成所述数据子段的各数据元素的绝对值之和不超过所述设定阈值;
运算模块504,根据所述预设比特位数对所述各数据子段分别进行定点乘积累加运算,并将得到的各累加结果分别存放在所述预设比特位数对应的所述数据寄存器中,使得所述数据寄存器未饱和溢出;
求和模块504,将各所述数据寄存器中的累加结果进行累加求和。
利用本说明书实施例提出的装置,由于原始的目标数据被拆分成数据子段时,确保了各数据子段中的数据元素绝对值之和不超过设定阈值,那么对每个数据寄存器,定点累加结果不会超过数据寄存器中存放数据的阈值,有效防止数据寄存器饱和溢出。同时,通过将原始目标的数据拆分成数据子段时,每个数据子段的长度小于原始的数据长度,那么对每个数据子段进行定点累加运算时,可以使用相对较小预设比特位数的数据寄存器,那么在基于SIMD得到相同累加结果的情况下,本方案可以减少SIMD指令的总计算量,提升运算性能。
基于同一个发明构思,本说明书实施例还提供了一种电子设备,包括:
处理器;以及
被配置成存储计算机程序的存储器,所述计算机程序在被执行时使所述处理器执行以下操作:
接收关于目标数据的定点乘积累加运算指令;
基于所述指令触发,确定在基于数据寄存器对应的预设比特位数进行定点乘积累加运算时,输入的数据元素的绝对值之和的设定阈值;
根据所述设定阈值对所述目标数据进行拆分得到各数据子段,构成所述数据子段的各数据元素的绝对值之和不超过所述设定阈值;
根据所述预设比特位数对所述各数据子段分别进行定点乘积累加运算,并将得到的各累加结果分别存放在所述预设比特位数对应的所述数据寄存器中,使得所述数据寄存器未饱和溢出;
将各所述数据寄存器中的累加结果进行累加求和。
基于同一发明构思,本说明书实施例中还提供了一种计算机可读存储介质,包括与电子设备结合使用计算机程序,所述计算机程序可被处理器执行以完成以下步骤:
接收关于目标数据的定点乘积累加运算指令;
基于所述指令触发,确定在基于数据寄存器对应的预设比特位数进行定点乘积累加运算时,输入的数据元素的绝对值之和的设定阈值;
根据所述设定阈值对所述目标数据进行拆分得到各数据子段,构成所述数据子段的各数据元素的绝对值之和不超过所述设定阈值;
根据所述预设比特位数对所述各数据子段分别进行定点乘积累加运算,并将得到的各累加结果分别存放在所述预设比特位数对应的所述数据寄存器中,使得所述数据寄存器未饱和溢出;
将各所述数据寄存器中的累加结果进行累加求和。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device, PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20 以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (14)
1.一种防止数据寄存器饱和溢出的方法,包括:
接收关于目标数据的定点累加运算指令;
基于所述指令触发,确定在基于数据寄存器对应的预设比特位数进行定点累加运算时,输入的各数据元素的绝对值之和的设定阈值;
根据所述设定阈值对所述目标数据进行拆分得到各数据子段,构成所述数据子段的各数据元素的绝对值之和不超过所述设定阈值;
根据所述预设比特位数对所述各数据子段分别进行定点累加运算,并将得到的各定点累加结果分别存放在所述预设比特位数对应的所述数据寄存器中,使得所述数据寄存器未饱和溢出;
将各所述数据寄存器中的定点累加结果进行累加求和。
2.如权利要求1所述的方法,确定在基于数据寄存器对应的预设比特位数进行定点累加运算时,输入的各数据元素的绝对值之和的设定阈值,包括:
利用所述预设比特位数确定所述数据寄存器中存放数据的数值阈值,所述数值阈值防止所述数据寄存器发生饱和溢出;
根据所述数值阈值计算在基于所述预设比特位数进行定点累加运算时,输入的数据元素的绝对值之和的设定阈值。
3.如权利要求1所述的方法,所述预设比特位数的数据类型包括16bit位数的short。
4.如权利要求1所述的方法,所述定点累加运算为定点卷积运算。
5.如权利要求4所述的方法,所述定点卷积运算应用于深度学习引擎中,所述深度学习引擎包括如下一种或多种的组合:
基于深度学习的图像识别、语音识别和文本识别。
6.一种防止数据寄存器饱和溢出的方法,包括:
接收关于目标数据的定点乘积累加运算指令;
基于所述指令触发,确定在基于数据寄存器对应的预设比特位数进行定点乘积累加运算时,输入的数据元素的绝对值之和的设定阈值;
根据所述设定阈值对所述目标数据进行拆分得到各数据子段,构成所述数据子段的各数据元素的绝对值之和不超过所述设定阈值;
根据所述预设比特位数对所述各数据子段分别进行定点乘积累加运算,并将得到的各累加结果分别存放在所述预设比特位数对应的所述数据寄存器中,使得所述数据寄存器未饱和溢出;
将各所述数据寄存器中的累加结果进行累加求和。
7.一种防止数据寄存器饱和溢出的装置,包括:
接收模块,接收关于目标数据的定点累加运算指令;
确定模块,基于所述指令触发,确定在基于数据寄存器对应的预设比特位数进行定点累加运算时,输入的数据元素的绝对值之和的设定阈值;
拆分模块,根据所述设定阈值对所述目标数据进行拆分得到各数据子段,构成所述数据子段的各数据元素的绝对值之和不超过所述设定阈值;
定点累加运算模块,根据所述预设比特位数对所述各数据子段分别进行定点累加运算,并将得到的各定点累加结果分别存放在所述预设比特位数对应的所述数据寄存器中,使得所述数据寄存器未饱和溢出;
求和模块,将各所述数据寄存器中的定点累加结果进行累加求和。
8.如权利要求7所述的装置,确定在基于数据寄存器对应的预设比特位数进行定点累加运算时,输入的数据元素的绝对值之和的设定阈值,包括:
利用所述预设比特位数确定所述数据寄存器中存放数据的数值阈值,所述数值阈值防止所述数据寄存器中的存放数据发生饱和溢出;
根据所述数值阈值计算在基于所述预设比特位数进行定点累加运算时,输入的数据元素的绝对值之和的设定阈值。
9.如权利要求7所述的装置,所述预设比特位数的数据类型包括16bit位数的short。
10.如权利要求7所述的装置,所述定点累加运算为定点卷积运算。
11.如权利要求10所述的装置,所述定点卷积运算应用于深度学习引擎中,所述深度学习引擎包括如下一种或多种的组合:
基于深度学习的图像识别、语音识别和文本识别。
12.一种防止数据寄存器饱和溢出的装置,包括:
接收模块,接收关于目标数据的定点乘积累加运算指令;
确定模块,基于所述指令触发,确定在基于数据寄存器对应的预设比特位数进行定点乘积累加运算时,输入的数据元素的绝对值之和的设定阈值;
拆分模块,根据所述设定阈值对所述目标数据进行拆分得到各数据子段,构成所述数据子段的各数据元素的绝对值之和不超过所述设定阈值;
运算模块,根据所述预设比特位数对所述各数据子段分别进行定点乘积累加运算,并将得到的各累加结果分别存放在所述预设比特位数对应的所述数据寄存器中,使得所述数据寄存器未饱和溢出;
求和模块,将各所述数据寄存器中的累加结果进行累加求和。
13.一种电子设备,包括:
处理器;以及
被配置成存储计算机程序的存储器,所述计算机程序在被执行时使所述处理器执行以下操作:
接收关于目标数据的定点累加运算指令;
基于所述指令触发,确定在基于数据寄存器对应的预设比特位数进行定点累加运算时,输入的数据元素的绝对值之和的设定阈值;
根据所述设定阈值对所述目标数据进行拆分得到各数据子段,构成所述数据子段的各数据元素的绝对值之和不超过所述设定阈值;
根据所述预设比特位数对所述各数据子段分别进行定点累加运算,并将得到的各定点累加结果分别存放在所述预设比特位数对应的所述数据寄存器中,使得所述数据寄存器未饱和溢出;
将各所述数据寄存器中的定点累加结果进行累加求和。
14.一种电子设备,包括:
处理器;以及
被配置成存储计算机程序的存储器,所述计算机程序在被执行时使所述处理器执行以下操作:
接收关于目标数据的定点乘积累加运算指令;
基于所述指令触发,确定在基于数据寄存器对应的预设比特位数进行定点乘积累加运算时,输入的数据元素的绝对值之和的设定阈值;
根据所述设定阈值对所述目标数据进行拆分得到各数据子段,构成所述数据子段的各数据元素的绝对值之和不超过所述设定阈值;
根据所述预设比特位数对所述各数据子段分别进行定点乘积累加运算,并将得到的各累加结果分别存放在所述预设比特位数对应的所述数据寄存器中,使得所述数据寄存器未饱和溢出;
将各所述数据寄存器中的累加结果进行累加求和。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010384121.6A CN111522527B (zh) | 2020-05-09 | 2020-05-09 | 防止数据寄存器饱和溢出的方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010384121.6A CN111522527B (zh) | 2020-05-09 | 2020-05-09 | 防止数据寄存器饱和溢出的方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111522527A true CN111522527A (zh) | 2020-08-11 |
CN111522527B CN111522527B (zh) | 2022-04-29 |
Family
ID=71908020
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010384121.6A Active CN111522527B (zh) | 2020-05-09 | 2020-05-09 | 防止数据寄存器饱和溢出的方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111522527B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120226730A1 (en) * | 2011-03-01 | 2012-09-06 | Alexandru Fit-Florea | System and Method for Testing Whether a Result is Correctly Rounded |
CN102681815A (zh) * | 2012-05-11 | 2012-09-19 | 深圳市清友能源技术有限公司 | 用加法器树状结构的有符号乘累加算法的方法 |
US20190012409A1 (en) * | 2017-07-05 | 2019-01-10 | Fujitsu Limited | Optimization apparatus and method of controlling the same |
CN109923550A (zh) * | 2016-08-19 | 2019-06-21 | 索尼公司 | 乘数累加器 |
CN110716708A (zh) * | 2018-07-12 | 2020-01-21 | 英特尔公司 | 用于非常大整数的加法器电路 |
-
2020
- 2020-05-09 CN CN202010384121.6A patent/CN111522527B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120226730A1 (en) * | 2011-03-01 | 2012-09-06 | Alexandru Fit-Florea | System and Method for Testing Whether a Result is Correctly Rounded |
CN102681815A (zh) * | 2012-05-11 | 2012-09-19 | 深圳市清友能源技术有限公司 | 用加法器树状结构的有符号乘累加算法的方法 |
CN109923550A (zh) * | 2016-08-19 | 2019-06-21 | 索尼公司 | 乘数累加器 |
US20190012409A1 (en) * | 2017-07-05 | 2019-01-10 | Fujitsu Limited | Optimization apparatus and method of controlling the same |
CN110716708A (zh) * | 2018-07-12 | 2020-01-21 | 英特尔公司 | 用于非常大整数的加法器电路 |
Non-Patent Citations (1)
Title |
---|
陈华新: "X-DSP定点乘累加的设计优化与验证", 《中国优秀硕士学位论文全文数据库 (信息科技辑)》 * |
Also Published As
Publication number | Publication date |
---|---|
CN111522527B (zh) | 2022-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108460523B (zh) | 一种风控规则生成方法和装置 | |
CN108345580B (zh) | 一种词向量处理方法及装置 | |
CN108537568B (zh) | 一种信息推荐方法和装置 | |
CN115981870B (zh) | 一种数据处理的方法、装置、存储介质及电子设备 | |
CN107038058B (zh) | 一种代码处理方法及装置 | |
CN110378400B (zh) | 一种用于图像识别的模型训练方法及装置 | |
CN116432778B (zh) | 一种数据处理的方法、装置、存储介质及电子设备 | |
CN116822657B (zh) | 一种模型训练加速的方法、装置、存储介质及电子设备 | |
CN116167461B (zh) | 一种模型训练的方法、装置、存储介质及电子设备 | |
CN112200132A (zh) | 一种基于隐私保护的数据处理方法、装置及设备 | |
CN114547024A (zh) | 一种sql语句风险检测方法、装置、设备及介质 | |
CN109656946B (zh) | 一种多表关联查询方法、装置及设备 | |
CN116402165B (zh) | 一种算子检测的方法、装置、存储介质以及电子设备 | |
CN111522527B (zh) | 防止数据寄存器饱和溢出的方法、装置及电子设备 | |
CN110058881B (zh) | 一种定点累加运算的处理方法、装置和电子设备 | |
CN116384505A (zh) | 一种数据处理的方法、装置、存储介质及电子设备 | |
CN107368281B (zh) | 一种数据处理方法及装置 | |
CN111598219A (zh) | 一种深度可分离卷积的量化方法、装置、设备及介质 | |
CN110096477B (zh) | 一种数据存储的方法及装置 | |
CN109325127B (zh) | 一种风险识别方法和装置 | |
CN111539520A (zh) | 增强深度学习模型鲁棒性的方法及装置 | |
CN117873789B (zh) | 一种基于分段量化的检查点写入方法及装置 | |
CN116107636B (zh) | 一种硬件加速方法、装置、存储介质及电子设备 | |
CN110209746B (zh) | 一种数据仓库的数据处理方法及装置 | |
CN114610376A (zh) | 桌面应用开发方法及装置 |
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 |