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

文档序号:9471123阅读:176来源:国知局
一种浮点数处理方法及装置的制造方法
【技术领域】
[0001]本发明涉及计算机技术领域,特别涉及一种浮点数处理方法及装置。
【背景技术】
[0002]GPU (Graphics Processing Unit,图形处理单元),又称图形处理器、显示核心、视觉处理器、显示芯片,是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上图像运算工作的微处理器。
[0003]目前,GPU的浮点数计算性能比CPU的浮点数计算性能高很多,因此,GPU也被主要应用于浮点数计算。
[0004]但是,GPU制造商处于成本和市场划分的考虑,在高端GPU产品上会保留双精度浮点数的硬件计算单元,在中低端GPU产品上会缩减双精度浮点数的硬件计算单元,这就导致中低端GPU产品的双精度浮点数计算能力较差,甚至不具备双精度浮点数计算能力。

【发明内容】

[0005]本发明实施例的目的在于提供一种浮点数处理方法及装置,以使中低端GPU产品具备高精度浮点数的计算能力或提高中低端GPU产品对高精度浮点数的计算能力。
[0006]为达到上述目的,本发明实施例公开了一种浮点数处理方法,包括:
[0007]获得第一目标浮点数X和第二目标浮点数Y,其中,X = 2Ex*Mx,Y = 2Ey*MY;
[0008]获得X与Y的运算法则,所述运算法则为加法或减法;
[0009]判断X和Y是否均不为零;
[0010]如果X和Y均不为零,则对阶所述第一目标浮点数X和所述第二目标浮点数Y,以使所述第一目标浮点数X和所述第二目标浮点数Y的阶码相同,其中,若Ex多Ey,则对阶后Y = 2Ex*My ',若 Ex〈Ey,则对阶后 X = 2Ey*Mx';
[0011]将对阶后的X和Y的尾数分别进行分段,并将每段数据转换成单精度浮点数;
[0012]根据获得的运算法则,分别计算X和Y的尾数相应段数据的结果;
[0013]根据计算得到的每段数据的结果,生成最终的尾数;
[0014]根据生成的最终的尾数和对阶后的阶码,生成计算结果;
[0015]对生成的计算结果规格化处理,得到最终计算结果。
[0016]可选的,所述第一目标浮点数和/或所述第二目标浮点数,包括:
[0017]双精度浮点数;
[0018]或单精度扩展浮点数;
[0019]或双精度扩展浮点数;
[0020]或满足预设表达式的浮点数。
[0021]可选的,所述预设表达式,包括:
[0022](_1)S*M*2E,其中,
[0023](_1)5为符号位;M为有效数字,且I彡M < 2 ;E为阶码。
[0024]可选的,尾数分段的位数不大于22。
[0025]可选的,若Ex ^ Ey,所述将对阶后的X和Y的尾数分别进行分段,并将每段数据转换成单精度浮点数,包括:
[0026]X的尾数
[0027]Mx= M χη* (Μδ ) n+Mxn 3 (Μδ )η 丄+…+Mxn ^ (ΜΔ )η 彳…+Mx0* (ΜΔ ) °;
[0028]Y的尾数
[0029]Μγ, = My, η*(ΜΛ )n+My- η ^(Ma)" 4…+My, η ^(Ma )η 彳…+My, 0*(ΜΔ )?;其中,
[0030]η ^ i ^ O ;ΜΔ = 2m;m 彡 22 ;
[0031]若Ex〈Ey,所述将对阶后的X和Y的尾数分别进行分段,并将每段数据转换成单精度浮点数,包括:
[0032]X的尾数
[0033]Mx, = Mx, η*(Μδ )n+Mx, n ^(Μδ )n 4…+Mx, n 产(ΜΔ )η 八…+Mx,。*(ΜΔ )°;
[0034]Y的尾数
[0035]My= Myn*(Μδ )n+Myn ^(Μδ )η k…+Myn 产(ΜΔ )η J+…+My0*(ΜΛ )。;其中,
[0036]n ^ j ^ O ;Μδ = 2m;m 22。
[0037]为达到上述目的,本发明实施例公开了一种浮点数处理装置,包括:浮点数获得模块、运算法则获得模块、判断模块、对阶模块、分段转换模块、计算模块、尾数生成模块、计算结果生成模块和规格化模块,其中,
[0038]所述浮点数获得模块,用于获得第一目标浮点数X和第二目标浮点数Y,其中,X =2Ex*Mx,Y = 2Ey*MY;
[0039]所述运算法则获得模块,用于获得X与Y的运算法则,所述运算法则为加法或减法;
[0040]所述判断模块,用于判断X和Y是否均不为零;
[0041 ] 所述对阶模块,用于在所述判断模块判断X和Y均不为零的情况下,对阶所述第一目标浮点数X和所述第二目标浮点数Y,以使所述第一目标浮点数X和所述第二目标浮点数Y的阶码相同,其中,若Ex彡Ey,则对阶后Y = 2Ex*My丨,若Ex〈Ey,则对阶后X = 2Ey*Mx丨;
[0042]所述分段转换模块,用于将对阶后的X和Y的尾数分别进行分段,并将每段数据转换成单精度浮点数;
[0043]所述计算模块,用于根据所述运算法则获得模块获得的运算法则,分别计算X和Y的尾数相应段数据的结果;
[0044]所述尾数生成模块,用于根据所述计算模块计算得到的每段数据的结果,生成最终的尾数;
[0045]所述计算结果生成模块,用于根据所述尾数生成模块生成的最终的尾数和所述对阶模块对阶后的阶码,生成计算结果;
[0046]所述规格化模块,用于对所述计算结果生成模块生成的计算结果规格化处理,得到最终计算结果。
[0047]可选的,所述第一目标浮点数和/或所述第二目标浮点数,包括:
[0048]双精度浮点数;
[0049]或单精度扩展浮点数;
[0050]或双精度扩展浮点数;
[0051]或满足预设表达式的浮点数。
[0052]可选的,所述预设表达式,包括:
[0053](_1)S*M*2E,其中,
[0054](_1)5为符号位为有效数字,且I彡M < 2 ;E为阶码。
[0055]可选的,尾数分段的位数不大于22。
[0056]可选的,若Ex彡Ey,所述分段转换模块,具体用于:
[0057]X的尾数
[0058]Mx= M χη* (Μδ ) n+Mxn ^ (Μδ )η 丄+…+Mxn ^ (ΜΔ )η 彳…+Mx0* (ΜΔ ) °;
[0059]Y的尾数
[0060]My- = My- η*(ΜΛ )n+My- η !*(MA)n 4…+My, η ^(Ma )η 彳…+My, 0*(ΜΔ )°;其中,
[0061]η ^ i ^ O ;Μδ = 2m;m < 22 ;
[0062]若Ex〈Ey,所述分段转换模块,具体用于:
[0063]X的尾数
[0064]Mx, = Mx, η*(Μδ )n+Mx, n ^(Μδ )n 4…+Mx, n 产(ΜΔ )η 八…+Mx,。*(ΜΔ )°;
[0065]Y的尾数
[0066]My= Myn*(Μδ )n+Myn ^(Μδ )η k…+Myn 产(ΜΔ )η J+…+My0*(ΜΛ )。;其中,
[0067]n ^ j ^ O ;Μδ = 2m;m ^ 22 0
[0068]由上述的技术方案可见,本发明实施例提供了一种浮点数处理方法及装置,方法包括:获得第一目标浮点数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的尾数相应段数据的结果;根据计算得到的每段数据的结果,生成最终的尾数;根据生成的最终的尾数和对阶后的阶码,生成计算结果;对生成的计算结果规格化处理,得到最终计算结果。
[0069]应用本发明实施例提供的技术方案,将高精度的浮点数的尾数进行分段,将每段尾数转化为单精度浮点数进行计算,使得不具备双精度浮点数计算能力的中低端GPU产品具备高精度浮点数的计算能力,提高了中低端GPU产品对高精度浮点数的计算能力。
【附图说明】
[0070]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0071]图1为本发明实施例提供的一种浮点数处理方法的流程示意图;
[0072]图2为本发明实施例提供的一种浮点数处理装置的结构示意图。
【具体实施方式】
[0073]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0074]为了解决现有技术问题,本发明实施例提供了一种浮点数处理方法及装置。下面首先对本发明实施例所提供的一种浮点数处理方法进行介绍。
[0075]图1为本发明实施例提供的一种浮点数处理方法的流程示意图,可以包括:
[0076]SlOl:获得第一目标浮点数X和第二目标浮点数Y,其中,X =
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1