一种浮点数处理方法及装置制造方法及图纸

技术编号:12653696 阅读:39 留言:0更新日期:2016-01-06 11:39
本发明专利技术实施例公开了一种浮点数处理方法及装置,方法包括:获得第一目标浮点数X和第二目标浮点数Y;获得X与Y的运算法则;判断X和Y是否均不为零;如果X和Y均不为零且X和Y的阶码不相等,则对阶X和Y;将对阶后的X和Y的尾数分别进行分段,并将每段数据转换成单精度浮点数;分别计算X和Y的尾数相应段数据的结果;根据计算得到的每段数据的结果,生成最终的尾数;进而生成计算结果;并对计算结果规格化处理。应用本发明专利技术实施例,将高精度的浮点数的尾数进行分段,将每段尾数转化为单精度浮点数进行计算,使得不具备双精度浮点数计算能力的中低端GPU产品具备高精度浮点数的计算能力,提高了中低端GPU产品对高精度浮点数的计算能力。

【技术实现步骤摘要】

本专利技术涉及计算机
,特别涉及一种浮点数处理方法及装置
技术介绍
GPU (Graphics Processing Unit,图形处理单元),又称图形处理器、显示核心、视觉处理器、显示芯片,是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上图像运算工作的微处理器。目前,GPU的浮点数计算性能比CPU的浮点数计算性能高很多,因此,GPU也被主要应用于浮点数计算。但是,GPU制造商处于成本和市场划分的考虑,在高端GPU产品上会保留双精度浮点数的硬件计算单元,在中低端GPU产品上会缩减双精度浮点数的硬件计算单元,这就导致中低端GPU产品的双精度浮点数计算能力较差,甚至不具备双精度浮点数计算能力。
技术实现思路
本专利技术实施例的目的在于提供一种浮点数处理方法及装置,以使中低端GPU产品具备高精度浮点数的计算能力或提高中低端GPU产品对高精度浮点数的计算能力。为达到上述目的,本专利技术实施例公开了一种浮点数处理方法,包括:获得第一目标浮点数X和第二目标浮点数Y,其中,X = 2Ex*Mx,Y = 2Ey*MY;获得X与Y的运算法则,所述运算法则为加法或减法;判断X和Y是否均不为零;如果X和Y均不为零,则对阶所述第一目标浮点数X和所述第二目标浮点数Y,以使所述第一目标浮点数X和所述第二目标浮点数Y的阶码相同,其中,若Ex多Ey,则对阶后Y = 2Ex*My ',若 Ex〈Ey,则对阶后 X = 2Ey*Mx';将对阶后的X和Y的尾数分别进行分段,并将每段数据转换成单精度浮点数;根据获得的运算法则,分别计算X和Y的尾数相应段数据的结果;根据计算得到的每段数据的结果,生成最终的尾数;根据生成的最终的尾数和对阶后的阶码,生成计算结果;对生成的计算结果规格化处理,得到最终计算结果。可选的,所述第一目标浮点数和/或所述第二目标浮点数,包括:双精度浮点数;或单精度扩展浮点数;或双精度扩展浮点数;或满足预设表达式的浮点数。可选的,所述预设表达式,包括:(_1)S*M*2E,其中,(_1)5为符号位;M为有效数字,且I彡M < 2 ;E为阶码。可选的,尾数分段的位数不大于22。可选的,若Ex ^ Ey,所述将对阶后的X和Y的尾数分别进行分段,并将每段数据转换成单精度浮点数,包括:X的尾数Mx= M χη* (Μδ ) n+Mxn 3 (Μδ )η 丄+…+Mxn ^ (ΜΔ )η 彳…+Mx0* (ΜΔ ) °;Y的尾数Μγ, = My, η*(ΜΛ )n+My- η ^(Ma)" 4…+My, η ^(Ma )η 彳…+My, 0*(ΜΔ )?;其中,η ^ i ^ O ;ΜΔ = 2m;m 彡 22 ;若Ex〈Ey,所述将对阶后的X和Y的尾数分别进行分段,并将每段数据转换成单精度浮点数,包括:X的尾数Mx, = Mx, η*(Μδ )n+Mx, n ^(Μδ )n 4…+Mx, n 产(ΜΔ )η 八…+Mx,。*(ΜΔ )°;Y的尾数My= Myn*(Μδ )n+Myn ^(Μδ )η k…+Myn 产(ΜΔ )η J+…+My0*(ΜΛ )。;其中,n ^ j ^ O ;Μδ = 2m;m 22。为达到上述目的,本专利技术实施例公开了一种浮点数处理装置,包括:浮点数获得模块、运算法则获得模块、判断模块、对阶模块、分段转换模块、计算模块、尾数生成模块、计算结果生成模块和规格化模块,其中,所述浮点数获得模块,用于获得第一目标浮点数X和第二目标浮点数Y,其中,X =2Ex*Mx,Y = 2Ey*MY;所述运算法则获得模块,用于获得X与Y的运算法则,所述运算法则为加法或减法;所述判断模块,用于判断X和Y是否均不为零; 所述对阶模块,用于在所述判断模块判断X和Y均不为零的情况下,对阶所述第一目标浮点数X和所述第二目标浮点数Y,以使所述第一目标浮点数X和所述第二目标浮点数Y的阶码相同,其中,若Ex彡Ey,则对阶后Y = 2Ex*My丨,若Ex〈Ey,则对阶后X = 2Ey*Mx丨;所述分段转换模块,用于将对阶后的X和Y的尾数分别进行分段,并将每段数据转换成单精度浮点数;所述计算模块,用于根据所述运算法则获得模块获得的运算法则,分别计算X和Y的尾数相应段数据的结果;所述尾数生成模块,用于根据所述计算模块计算得到的每段数据的结果,生成最终的尾数;所述计算结果生成模块,用于根据所述尾数生成模块生成的最终的尾数和所述对阶模块对阶后的阶码,生成计算结果;所述规格化模块,用于对所述计算结果生成模块生成的计算结果规格化处理,得到最终计算结果。可选的,所述第一目标浮点数和/或所述第二目标浮点数,包括:双精度浮点数;或单精度扩展浮点数;或双精度扩展浮点数;或满足预设表达式的浮点数。可选的,所述预设表达式,包括:(_1)S*M*2E,其中,(_1)5为符号位为有效数字,且I彡M < 2 ;E为阶码。可选的,尾数分段的位数不大于22。可选的,若Ex彡Ey,所述分段转换模块,具体用于:X的尾数Mx= M χη* (Μδ ) n+Mxn ^ (Μδ )η 丄+…+Mxn ^ (ΜΔ )η 彳…+Mx0* (ΜΔ ) °;Y的尾数My- = My- η*(ΜΛ )n+My- η !*(MA)n 4…+My, η ^(Ma )η 彳…+My, 0*(ΜΔ )°;其中,η ^ i ^ O ;Μδ = 2m;m < 22 ;若Ex〈Ey,所述分段转换模块,具体用于:X的尾数Mx, = Mx, η*(Μδ )n+Mx, n ^(Μδ )n 4…+Mx, n 产(ΜΔ )η 八…+Mx,。*(ΜΔ )°;Y的尾数My= Myn*(Μδ )n+Myn ^(Μδ )η k…+Myn 产(ΜΔ )η J+…+My0*(ΜΛ )。;其中,n ^ j ^ O ;Μδ = 2m;m ^ 22 0由上述的技术方案可见,本专利技术实施例提供了一种浮点数处理方法及装置,方法包括:获得第一目标浮点数X和第二目标浮点数Y,其中,X = 2Ex*Mx,Y = 2Ey*MY;获得X与Y的运算法则,所述运算法则为加法或减法;判断X和Y是否均不为零;如果X和Y均不为零,则判断X的阶码Ex和Y的阶码Ey是否相等,如果不相等,则对阶所述第一目标浮点数X和所述第二目标浮点数Y,以使所述第一目标浮点数X和所述第二目标浮点数Y的阶码相同,其中,若Ex彡Ey,则对阶后Y = 2Ex*My丨,若Ex〈Ey,则对阶后X = 2Ey*Mx丨;将对阶后的X和Y的尾数分别进行分段,并将每段数据转换成单精度浮点数;根据获得的运算法则,分别计算X和Y的尾数相应段数据的结果;根据计算得到的每段数据的结果,生成最终的尾数;根据生成的最终的尾数和对阶后的阶码,生成计算结果;对生成的计算结果规格化处理,得到最终计算结果。应用本专利技术实施例提供的技术方案,将高精度的浮点数的尾数进行分段,将每段尾数转化为单精度浮点数进行计算,使得不具备双精度浮点数计算能力的中低端GPU产品具备高精度浮点数的计算能力,提高了中低端GPU产品对高精度浮点数的计算能力。【附图说明】为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见本文档来自技高网...
一种浮点数处理方法及装置

【技术保护点】
一种浮点数处理方法,其特征在于,包括:获得第一目标浮点数X和第二目标浮点数Y,其中,X=2Ex*MX,Y=2Ey*MY;获得X与Y的运算法则,所述运算法则为加法或减法;判断X和Y是否均不为零;如果X和Y均不为零,则对阶所述第一目标浮点数X和所述第二目标浮点数Y,以使所述第一目标浮点数X和所述第二目标浮点数Y的阶码相同,其中,若Ex≥Ey,则对阶后Y=2Ex*MY′,若Ex<Ey,则对阶后X=2Ey*MX′;将对阶后的X和Y的尾数分别进行分段,并将每段数据转换成单精度浮点数;根据获得的运算法则,分别计算X和Y的尾数相应段数据的结果;根据计算得到的每段数据的结果,生成最终的尾数;根据生成的最终的尾数和对阶后的阶码,生成计算结果;对生成的计算结果规格化处理,得到最终计算结果。

【技术特征摘要】

【专利技术属性】
技术研发人员:潘昊
申请(专利权)人:北京奇艺世纪科技有限公司
类型:发明
国别省市:北京;11

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

1