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

文档序号:9471124阅读:来源:国知局
11+100000000000^01100100011)
[0121]= (211*2*00001101101+211*1*00001110010+211*°*10110000001)*
[0122] (2im*01101011+211*3*11000110101+211*2*00111111011+211*1*11100111011+211*°*01100100011)
[0123]= 211W*00001101101*211>N4*01101011+211W*00001101101*211W*11000110101+211*2*00001101101*211*2*00111111011+211*2*00001101101*211*1*11100111011+211*2*00001101101*2n*°*01100100011
[0124]+211*1*00001110010*2im*01101011+211*1*00001110010*211*3*11000110101+211*1*00001110010*211W*00111111011+211>N1*00001110010*211>N1*11100111011+211>N1*00001110010*2n*°*01100100011
[0125]+211W*10110000001*211>N4*01101011+211W*10110000001*211>N3*11000110101+211W*10110000001*211>n2*00111111011+211w*10110000001*211>n1*11100111011+211w*10110000001*2n*°*01100100011
[0126]= 26? (00001101101*01101011)+255* (00001101101*11000110101)+244* (00001101101*00111111011)+233*(00001101101*11100111011)+222* (00001101101*01100100011)
[0127]+255* (00001110010*01101011)+244* (00001110010*11000110101)+233* (00001110010*00111111011)+222*(00001110010*11100111011)+2n*(00001110010*01100100011)
[0128]+244* (10110000001*01101011)+233* (10110000001*11000110101)+222* (10110000001*00111111011)+211* (10110000001*11100111011)+2°* (10110000001*01100100011)
[0129]上述X*Y的计算结果
[0130]= 232*Mx*232*My = 264*Mx*My
[0131]= 264* [266* (00001101101*01101011) +255* (00001101101*11000110101)+244* (00001101101*0011 111 101 1)+233* (00001101101*1 110011 101 1)+222* (00001101101*01100100011)
[0132]+255* (00001110010*01101011)+244* (00001110010*11000110101)+233* (00001110010*00111111011)+222*(00001110010*11100111011)+2n*(00001110010*01100100011)
[0133]+244* (10110000001*01101011)+233* (10110000001*11000110101)+222* (10110000001*00111111011)+211* (10110000001*11100111011)+2°* (10110000001*01100100011)]
[0134]对X*Y的计算结果进行规格化处理得到最终的计算结果。
[0135]X和Y的阶码经过对位后是一致的,对位后主要是尾数的乘除法运算,双精度浮点数的乘法被分解为5*5 = 25个单精度浮点数的加法,使得中低端GPU产品可以利用自身具备的单精度浮点数的计算能力,来计算高精度浮点数的乘除法。
[0136]需要说明的是,上述以两个双精度浮点数的乘法运算以及以11位为一段对尾数进行分段,仅为本发明的一具体实例,并不够成对本发明的限定。
[0137]应用本发明图1所示实施例,将高精度的浮点数的尾数进行分段,将每段尾数转化为单精度浮点数进行计算,使得不具备双精度浮点数计算能力的中低端GPU产品具备高精度浮点数的计算能力,提高了中低端GPU产品对高精度浮点数的计算能力。
[0138]与上述的方法实施例相对应,本发明实施例还提供一种浮点数处理装置。
[0139]图2为本发明实施例提供的一种浮点数处理装置的结构示意图,可以包括:浮点数获得模块201、运算法则获得模块202、判断模块203、对阶模块204、第一计算模块205、分段转换模块206、第二计算模块207、尾数生成模块208、计算结果生成模块209和规格化模块210,其中,
[0140]浮点数获得模块201,用于获得第一目标浮点数X和第二目标浮点数Y,其中,X =2Ex*Mx,Y = 2Ey*MY;
[0141 ] 具体的,在实际应用中,第一目标浮点数和/或所述第二目标浮点数,可以包括:
[0142]双精度浮点数;或单精度扩展浮点数;或双精度扩展浮点数;或满足预设表达式的浮点数。
[0143]其中,上述预设表达式,可以包括:
[0144](_1)S*M*2E,其中,
[0145](_1)5为符号位;M为有效数字,且I彡M < 2 ;E为阶码。
[0146]运算法则获得模块202,用于获得X与Y的运算法则,所述运算法则为乘法或除法;
[0147]判断模块203,用于判断X和Y是否均不为零;
[0148]对阶模块204,用于在判断模块203判断X和Y均不为零的情况下,对阶所述第一目标浮点数X和所述第二目标浮点数Y,以使所述第一目标浮点数X和所述第二目标浮点数Y的阶码相同,其中,若Ex彡Ey,则对阶后Y = 2Ex*My丨,若Ex〈Ey,则对阶后X = 2Ey*Mx丨;
[0149]第一计算模块205,用于根据运算法则获得模块202获得的运算法则以及对阶模块204对阶后的X和Y的阶码,计算最终结果的阶码;
[0150]分段转换模块206,用于将对阶后的X和Y的尾数分别进行分段,并将每段数据转换成单精度浮点数;
[0151]具体的,在实际应用中,尾数分段的位数不大于11。
[0152]具体的,若Ex多Ey,本发明所示实施例的分段转换模块206,具体可以用于:
[0153]X的尾数
[0154]Mx= M χη* (Μδ ) n+Mxn ^ (Μδ )η k …+Mxn ^ (ΜΔ )η 彳…+Mx0* (ΜΔ ) °;
[0155]Y的尾数
[0156]My- =My, n*(MA)n+My, η (ΜΛ )η k…+My, η ^ (ΜΛ )η 彳…+My, 0*(ΜΛ)°;其中,
[0157]η ^ i ^ O ;ΜΔ = 2m;m <11。
[0158]具体的,若Ex〈Ey,本发明所示实施例的分段转换模块206,具体可以用于:
[0159]X的尾数
[0160]Mx, = Mx, η*(ΜΛ )n+Mx, n !*(MA)n k…+Mx, n ^(ΜΔ )n …+Mx, 0*(ΜΔ )°;
[0161]Y的尾数
[0162]My= Myn*(MA )n+Myn ^(Ma )n k…+Myn ^(ΜΔ )n J+…+My0*(ΜΛ )0;其中,
[0163]n ^ j ^ 0 ;Μδ= 2m;m ^ Il0
[0164]第二计算模块207,用于根据运算法则获得模块202获得的运算法则,分别计算X的尾数的每段数据与Y的尾数的每段数据的结果;
[0165]尾数生成模块208,用于根据第二计算模块207计算得到的X的尾数的每段数据与Y的尾数的每段数据的结果
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1