浮点运算定点化方法及系统技术方案

技术编号:16756625 阅读:83 留言:0更新日期:2017-12-09 02:39
本发明专利技术公开了一种浮点运算定点化方法,包括以下步骤:根据预设的数值范围以及计算的精度需求,调整可调精度浮点数据的指数和有效位,预先将单精度浮点格式的参数数据转换为可调精度浮点数据;计算时将所述可调精度浮点数据转换为定点数据并用于计算,并将计算产生的中间结果转换为可调精度浮点数据;待全部计算完成后产生最终结果,将最终结果转换为单精度浮点格式数据。本发明专利技术可以用16位位宽或是更小的位宽表示标准浮点数据,实现浮点运算定点化的转换,从而节省存储空间和提升运算性能,且几乎不影响计算精度。

Floating-point operation fixed-point method and system

The invention discloses a floating-point fixed-point method comprises the following steps: according to the preset value range and the precision of calculation needs, adjust the index data precision floating point and effective, in advance of converting parameters of single precision floating point format data for adjustable precision floating point data; calculation of the adjustable the data is converted to floating-point and fixed-point data for calculation, and the calculation result of the intermediate conversion adjustable precision floating-point data; the calculation after the completion of the final results, the final result is converted to single precision floating-point data format. The invention can use 16 bit or smaller width of said standard floating-point data, realize fixed-point floating-point conversion, so as to save storage space and improve operational performance, and almost does not affect the calculation accuracy.

【技术实现步骤摘要】
浮点运算定点化方法及系统
本专利技术涉及可编程处理器,尤其涉及了一种浮点运算定点化方法及系统。
技术介绍
目前,由于深度学习算法的不断进步,人工智能技术取得了巨大突破。在深度学习中,机器可以在监督或不受监督的方式下从大量数据中学习一项任务。大规模监督式学习已经在机器视觉、语音识别、自然语言处理等应用领域取得成功。而人工神经网络(ArtificialNeuralNetwork)目前在深度学习领域应用最为广泛,用神经网络识别和分类需要进行大量的浮点运算,因此计算硬件已成为目前神经网络应用中最主要的瓶颈。而且随着计算数据量的大幅增加,深度学习转移到云平台时,对负责神经网络运算的硬件性能提出了更高的要求。在神经网络运算方面,业内通常采用高性能GPU(GraphicsProcessingUnit,图形处理器)来提升计算效率,并取得了显著的加速效果,但GPU在带来高性能计算的同时存在高功耗的缺点,使其在应用环境上有所限制。相比GPU,FPGA(FieldProgrammableGateArray,可编程逻辑门阵列)可以在较低功耗下实现并行处理和计算,并能灵活实现各种不同的神经网络架构,作为一种既能加速算法又能不显著增加功耗的计算平台在神经网络加速计算方面适用于更多的应用场合,特别是当应用在数据中心时有其独特优势。单精度浮点数为IEEE标准754浮点数格式之一。IEEE标准754采用{S,E,M}表示一个浮点数N,N的实际值n由公式n=(-1)s×1.m×2e表示。N,S,E,M采用二进制表示,n,s,e,m分别为N,S,E,M对应的实际数值。S表示N的符号位。对应值s满足:n>0时,s=0;n<0时,s=1。E表示N的指数位,位于S和M之间的若干位。对应值e值也可正可负。M表示N的有效数位,它位于N末尾,为有效数的小数部分。有效数为1.m,1为隐含位是多出来的1位精度。对于单精度浮点数,E的位宽为8位,M的位宽为23位,总共32位;对于半精度浮点数,E的位宽为5位,M的位宽为10位,总共16位。关于浮点数的详细说明参见IEEE标准754,在此不再赘述。神经网络的识别分类需要进行大量的浮点运算,但是相比GPU,目前FPGA的浮点计算资源主要是支持浮点运算的DSP(DigitalSignalProcessor,数字信号处理器)数量有限,使其在计算性能上并不占优势。同时由于神经网络一般使用单精度浮点格式表示数据,单精度浮点数据的位宽达到32位,虽然精度较高,但使FPGA在和DDR读写数据时效率较低,并使FPGA需要使用较多的逻辑资源用于浮点数据的传输处理以及较多的RAM资源用于浮点数据的存储,资源占用较多不利于FPGA的时序收敛,会导致FPGA的性能受限以及产生更大的功耗。以上的这些问题都会导致FPGA在进行浮点运算时性能较低。目前在深度学习领域有一种采用较小位宽的定点数据的优化方法,这种方法由于数据降低到了比较小的位宽例如8位,能够提升数据的传输存储效率、降低资源消耗以及提升计算性能,但是只能针对特定的神经网络,其网络参数需要专门的训练,对于一般已有的采用浮点数据运算的神经网络无法满足计算精度要求,会引起神经网络的识别分类结果产生较大偏差。
技术实现思路
本专利技术针对现有技术中采用标准浮点数据运算的神经网络无法满足计算性能要求这个缺点,提供了一种浮点运算定点化方法及系统。为了解决上述技术问题,本专利技术通过下述技术方案得以解决:一种浮点运算定点化方法,包括以下步骤:根据预设的数值范围以及计算的精度需求,调整可调精度浮点数据的指数和有效位,预先将单精度浮点格式的参数数据转换为可调精度浮点数据;计算时将所述可调精度浮点数据转换为定点数据并用于计算,并将计算产生的中间结果转换为可调精度浮点数据;待全部计算完成后产生最终结果,将最终结果转换为单精度浮点格式数据。作为一种可实施方式,所述可调精度浮点数据包括符号、指数和有效数;所述可调精度浮点数据的指数的位宽和有效数的位宽随所述数值范围和所述精度要求的变化做相应调整。作为一种可实施方式,所述将单精度浮点格式的参数数据转换为可调精度浮点数据的具体步骤包括:单精度浮点数据定点化,将含有小数的单精度浮点数据乘以系数后转换为定点整数;将转换后的定点整数表示为二进制数,并根据可调精度浮点数据有效数所支持的位宽对此二进制定点整数向右移位,移位后的数据即有效数,并根据移位的位数确定指数,将有效数添加上指数和符号位后即为可调精度浮点数据。作为一种可实施方式,所述将所述可调精度浮点数据转换为定点数据的具体步骤包括:根据所述可调精度浮点数据的指数大小对所述可调精度浮点数据的有效数向左移位,移位的位数由指数确定;移位后判断符号位,如果是负数将移位后的数据采用补码表示。作为一种可实施方式,所述根据预设的数值范围以及计算的精度需求的具体设置过程为:将神经网络模型训练好的参数数据进行归纳分析,确定参数数据的最大值和最小值,并对神经网络模型中的单精度浮点格式数据进行模拟计算得到计算结果,根据计算结果确定数值范围以及计算的精度要求,为可调精度浮点数据转换过程中的指数和有效数的调整提供依据。一种浮点运算定点化系统,包括:第一转换模块,用于根据预设的数值范围以及计算的精度需求,调整可调精度浮点数据的指数和有效位,预先将单精度浮点格式的参数数据转换为可调精度浮点数据;第二转换模块,用于计算时将所述可调精度浮点数据转换为定点数据并用于计算,并将计算产生的中间结果转换为可调精度浮点数据;第三转换模块,用于待全部计算完成后产生最终结果,将最终结果转换为单精度浮点格式数据。作为一种可实施方式,所述第一转换模块设置为:所述可调精度浮点数据包括符号、指数和有效数;所述可调精度浮点数据的指数的位宽和有效数的位宽随所述数值范围和所述精度要求的变化做相应调整。作为一种可实施方式,所述第一转换模块设置为:所述将单精度浮点格式的参数数据转换为可调精度浮点数据的具体步骤包括:单精度浮点数据定点化,将含有小数的单精度浮点数据乘以系数后转换为定点整数;将转换后的定点整数表示为二进制数,并根据可调精度浮点数据有效数所支持的位宽对此二进制定点整数向右移位,移位后的数据即有效数,并根据移位的位数确定指数,将有效数添加上指数和符号位后即为可调精度浮点数据。作为一种可实施方式,所述第二转换模块设置为:根据所述可调精度浮点数据的指数大小对所述可调精度浮点数据的有效数向左移位,移位的位数由指数确定;移位后判断符号位,如果是负数将移位后的数据采用补码表示。作为一种可实施方式,所述第一转换模块设置为:将神经网络模型训练好的参数数据进行归纳分析,确定参数数据的最大值和最小值,并对神经网络模型中的单精度浮点格式数据进行模拟计算得到计算结果,根据计算结果确定数值范围以及计算的精度要求,为可调精度浮点数据转换过程中的指数和有效数的调整提供依据。本专利技术由于采用了以上技术方案,具有显著的技术效果:本专利技术提供了一种浮点运算定点化方法和系统,降低转换过程和计算过程中的误差和降低最终结果的精度损失;同时用较小的位宽来表示数据,降低了用于数据存储的资源占用以及提升传输数据的效率,从而实现在不明显影响计算精度的情况下显著提升浮点运算性能。附图说明为了更清楚地说明本专利技术实施例或现有技本文档来自技高网
...
浮点运算定点化方法及系统

【技术保护点】
一种浮点运算定点化方法,其特征在于包括以下步骤:根据预设的数值范围以及计算的精度需求,调整可调精度浮点数据的指数和有效位,预先将单精度浮点格式的参数数据转换为可调精度浮点数据;计算时将所述可调精度浮点数据转换为定点数据并用于计算,并将计算产生的中间结果转换为可调精度浮点数据;待全部计算完成后产生最终结果,将最终结果转换为单精度浮点格式数据。

【技术特征摘要】
1.一种浮点运算定点化方法,其特征在于包括以下步骤:根据预设的数值范围以及计算的精度需求,调整可调精度浮点数据的指数和有效位,预先将单精度浮点格式的参数数据转换为可调精度浮点数据;计算时将所述可调精度浮点数据转换为定点数据并用于计算,并将计算产生的中间结果转换为可调精度浮点数据;待全部计算完成后产生最终结果,将最终结果转换为单精度浮点格式数据。2.根据权利要求1所述的浮点运算定点化方法,其特征在于:所述可调精度浮点数据包括符号、指数和有效数;所述可调精度浮点数据的指数的位宽和有效数的位宽随所述数值范围和所述精度要求的变化做相应调整。3.根据权利要求2所述的浮点运算定点化方法,其特征在于:所述将单精度浮点格式的参数数据转换为可调精度浮点数据的具体步骤包括:单精度浮点数据定点化,将含有小数的单精度浮点数据乘以系数后转换为定点整数;将转换后的定点整数表示为二进制数,并根据可调精度浮点数据有效数所支持的位宽对此二进制定点整数向右移位,移位后的数据即有效数,并根据移位的位数确定指数,将有效数添加上指数和符号位后即为可调精度浮点数据。4.根据权利要求2所述的浮点运算定点化方法,其特征在于:所述将所述可调精度浮点数据转换为定点数据的具体步骤包括:根据所述可调精度浮点数据的指数大小对所述可调精度浮点数据的有效数向左移位,移位的位数由指数确定;移位后判断符号位,如果是负数将移位后的数据采用补码表示。5.根据权利要求1所述的浮点运算定点化方法,其特征在于:所述根据预设的数值范围以及计算的精度需求的具体设置过程为:将神经网络模型训练好的参数数据进行归纳分析,确定参数数据的最大值和最小值,并对神经网络模型中的单精度浮点格式数据进行模拟计算得到计算结果,根据计算结果确定数值范围以及计算的精度要求,为可调精度浮点数据转换过程中的指数和有效数的调整提供依据。6.一种浮点运...

【专利技术属性】
技术研发人员:丁昊杰王文华
申请(专利权)人:杭州菲数科技有限公司
类型:发明
国别省市:浙江,33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1