一种浮点数处理方法及装置的制造方法_4

文档序号:9471124阅读:来源:国知局
,生成最终的尾数;
[0166]计算结果生成模块209,用于根据尾数生成模块208生成的最终的尾数和第一计算模块205计算得到的阶码,生成计算结果;
[0167]规格化模块210,用于对计算结果生成模块209生成的计算结果规格化处理,得到最终计算结果。
[0168]应用本发明图2所示实施例,将高精度的浮点数的尾数进行分段,将每段尾数转化为单精度浮点数进行计算,使得不具备双精度浮点数计算能力的中低端GPU产品具备高精度浮点数的计算能力,提高了中低端GPU产品对高精度浮点数的计算能力。
[0169]需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0170]本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0171]本领域普通技术人员可以理解实现上述方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的存储介质,如:R0M/RAM、磁碟、光盘等。
[0172]以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
【主权项】
1.一种浮点数处理方法,其特征在于,包括: 获得第一目标浮点数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的尾数分别进行分段,并将每段数据转换成单精度浮点数; 根据获得的运算法则,分别计算X的尾数的每段数据与Y的尾数的每段数据的结果; 根据计算得到的X的尾数的每段数据与Y的尾数的每段数据的结果,生成最终的尾数; 根据生成的最终的尾数和计算得到的最终结果的阶码,生成计算结果; 对生成的计算结果规格化处理,得到最终计算结果。2.根据权利要求1所述的方法,其特征在于,所述第一目标浮点数和/或所述第二目标浮点数,包括: 双精度浮点数;或单精度扩展浮点数;或双精度扩展浮点数;或满足预设表达式的浮点数。3.根据权利要求2所述的方法,其特征在于,所述预设表达式,包括: (_1)S*M*2E,其中, (_1)5为符号位;M为有效数字,且I < M < 2 ;E为阶码。4.根据权利要求1所述的方法,其特征在于, 尾数分段的位数不大于11。5.根据权利要求1所述的方法,其特征在于, 若Ex多Ey,所述将对阶后的X和Y的尾数分别进行分段,并将每段数据转换成单精度浮点数,包括: X的尾数Mx=M χη* (Μδ )n+Mxn ^ (Μδ )η 4…+Mxn ^ (Μδ )η >…+Mx0* (Μδ )°; Y的尾数 Μγ, =My- η*(ΜΔ)η+Μγ- η1*(ΜΛ)η1+…+My, ηι*(ΜΛ)η1+…+My, 0*(ΜΛ)°;其中, η ^ i ^ O ;Μδ = 2m;m ^ 11 ; 若Ex〈Ey,所述将对阶后的X和Y的尾数分别进行分段,并将每段数据转换成单精度浮点数,包括: X的尾数Mx- =Mx- η*(ΜΛ)η+Μχ, η1*(ΜΛ)η1+…+Mx, η^(ΜΛ)η?+…+Mx, 0*(ΜΔ)°; Y的尾数My=M yn* (Μδ ) n+Myn ^ (Μδ )n k…+Myn 产(Μδ )n J+…+My0* (Μδ)°; 其中,n ^ j ^ O ;Μδ = 2m;m < Il06.一种浮点数处理装置,其特征在于,包括:浮点数获得模块、运算法则获得模块、判断模块、对阶模块、第一计算模块、分段转换模块、第二计算模块、尾数生成模块、计算结果生成模块和规格化模块,其中, 所述浮点数获得模块,用于获得第一目标浮点数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的尾数分别进行分段,并将每段数据转换成单精度浮点数; 所述第二计算模块,用于根据所述运算法则获得模块获得的运算法则,分别计算X的尾数的每段数据与Y的尾数的每段数据的结果; 所述尾数生成模块,用于根据所述第二计算模块计算得到的X的尾数的每段数据与Y的尾数的每段数据的结果,生成最终的尾数; 所述计算结果生成模块,用于根据所述尾数生成模块生成的最终的尾数和所述第一计算模块计算得到的阶码,生成计算结果; 所述规格化模块,用于对所述计算结果生成模块生成的计算结果规格化处理,得到最终计算结果。7.根据权利要求6所述的装置,其特征在于,所述第一目标浮点数和/或所述第二目标浮点数,包括: 双精度浮点数;或单精度扩展浮点数;或双精度扩展浮点数;或满足预设表达式的浮点数。8.根据权利要求7所述的装置,其特征在于,所述预设表达式,包括:(_1)S*M*2E,其中, (_1)5为符号位;M为有效数字,且I < M < 2 ;E为阶码。9.根据权利要求6所述的装置,其特征在于, 尾数分段的位数不大于11。10.根据权利要求6所述的装置,其特征在于,若Ex多Ey,所述分段转换模块,具体用于: X的尾数Mx=M χη* (Μδ )n+Mxn ^ (Μδ )η 4…+Mxn ^ (Μδ )η >…+Mx0* (Μδ )°; Y的尾数 Μγ, =My- η*(ΜΔ)η+Μγ- η1*(ΜΛ)η1+…+My, ηι*(ΜΛ)η1+…+My, 0*(ΜΛ)°;其中, η ^ i ^ O ;Μδ = 2m;m ^ 11 ; 若Ex〈Ey,所述分段转换模块,具体用于: W e^H vs1A\rA\u frK”。(4S\s+ …+‘ u (*‘ £s+ …+U (*ss+u (*£ w iwSs ansv。S+:.+u?Μν‘"S+:.+u?Μ)气"s+u(4s' 'Sx=SSs XKε/ε Cl ^ Γ-十 V Sg寸CSOI Zo
【专利摘要】本发明实施例公开了一种浮点数处理方法及装置,方法包括:获得第一目标浮点数X和第二目标浮点数Y;获得X与Y的运算法则;在X和Y均不为零的情况下,对阶X和Y;计算最终结果的阶码;将对阶后的X和Y的尾数分别进行分段,并分别计算X的尾数的每段数据与Y的尾数的每段数据的结果;根据计算结果,生成最终的尾数;根据最终的尾数和计算得到的阶码,生成计算结果;对生成的计算结果规格化处理,得到最终计算结果。应用本发明实施例,将高精度的浮点数的尾数进行分段,将每段尾数转化为单精度浮点数进行计算,使得不具备双精度浮点数计算能力的中低端GPU产品具备高精度浮点数的计算能力,提高了中低端GPU产品对高精度浮点数的计算能力。
【IPC分类】G06F7/57
【公开号】CN105224284
【申请号】CN201510629934
【发明人】潘昊
【申请人】北京奇艺世纪科技有限公司
【公开日】2016年1月6日
【申请日】2015年9月29日
当前第4页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1