一種浮點(diǎn)數(shù)處理方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機(jī)技術(shù)領(lǐng)域,特別涉及一種浮點(diǎn)數(shù)處理方法及裝置。
【背景技術(shù)】
[0002]GPU (Graphics Processing Unit,圖形處理單元),又稱圖形處理器、顯示核心、視覺處理器、顯示芯片,是一種專門在個人電腦、工作站、游戲機(jī)和一些移動設(shè)備(如平板電腦、智能手機(jī)等)上圖像運(yùn)算工作的微處理器。
[0003]目前,GPU的浮點(diǎn)數(shù)計算性能比CPU的浮點(diǎn)數(shù)計算性能高很多,因此,GPU也被主要應(yīng)用于浮點(diǎn)數(shù)計算。
[0004]但是,GPU制造商處于成本和市場劃分的考慮,在高端GPU產(chǎn)品上會保留雙精度浮點(diǎn)數(shù)的硬件計算單元,在中低端GPU產(chǎn)品上會縮減雙精度浮點(diǎn)數(shù)的硬件計算單元,這就導(dǎo)致中低端GPU產(chǎn)品的雙精度浮點(diǎn)數(shù)計算能力較差,甚至不具備雙精度浮點(diǎn)數(shù)計算能力。
【發(fā)明內(nèi)容】
[0005]本發(fā)明實(shí)施例的目的在于提供一種浮點(diǎn)數(shù)處理方法及裝置,以使中低端GPU產(chǎn)品具備高精度浮點(diǎn)數(shù)的計算能力或提高中低端GPU產(chǎn)品對高精度浮點(diǎn)數(shù)的計算能力。
[0006]為達(dá)到上述目的,本發(fā)明實(shí)施例公開了一種浮點(diǎn)數(shù)處理方法,包括:
[0007]獲得第一目標(biāo)浮點(diǎn)數(shù)X和第二目標(biāo)浮點(diǎn)數(shù)Y,其中,X = 2Ex*Mx,Y = 2Ey*MY;
[0008]獲得X與Y的運(yùn)算法則,所述運(yùn)算法則為加法或減法;
[0009]判斷X和Y是否均不為零;
[0010]如果X和Y均不為零,則對階所述第一目標(biāo)浮點(diǎn)數(shù)X和所述第二目標(biāo)浮點(diǎn)數(shù)Y,以使所述第一目標(biāo)浮點(diǎn)數(shù)X和所述第二目標(biāo)浮點(diǎn)數(shù)Y的階碼相同,其中,若Ex多Ey,則對階后Y = 2Ex*My ',若 Ex〈Ey,則對階后 X = 2Ey*Mx';
[0011]將對階后的X和Y的尾數(shù)分別進(jìn)行分段,并將每段數(shù)據(jù)轉(zhuǎn)換成單精度浮點(diǎn)數(shù);
[0012]根據(jù)獲得的運(yùn)算法則,分別計算X和Y的尾數(shù)相應(yīng)段數(shù)據(jù)的結(jié)果;
[0013]根據(jù)計算得到的每段數(shù)據(jù)的結(jié)果,生成最終的尾數(shù);
[0014]根據(jù)生成的最終的尾數(shù)和對階后的階碼,生成計算結(jié)果;
[0015]對生成的計算結(jié)果規(guī)格化處理,得到最終計算結(jié)果。
[0016]可選的,所述第一目標(biāo)浮點(diǎn)數(shù)和/或所述第二目標(biāo)浮點(diǎn)數(shù),包括:
[0017]雙精度浮點(diǎn)數(shù);
[0018]或單精度擴(kuò)展浮點(diǎn)數(shù);
[0019]或雙精度擴(kuò)展浮點(diǎn)數(shù);
[0020]或滿足預(yù)設(shè)表達(dá)式的浮點(diǎn)數(shù)。
[0021]可選的,所述預(yù)設(shè)表達(dá)式,包括:
[0022](_1)S*M*2E,其中,
[0023](_1)5為符號位;M為有效數(shù)字,且I彡M < 2 ;E為階碼。
[0024]可選的,尾數(shù)分段的位數(shù)不大于22。
[0025]可選的,若Ex ^ Ey,所述將對階后的X和Y的尾數(shù)分別進(jìn)行分段,并將每段數(shù)據(jù)轉(zhuǎn)換成單精度浮點(diǎn)數(shù),包括:
[0026]X的尾數(shù)
[0027]Mx= M χη* (Μδ ) n+Mxn 3 (Μδ )η 丄+…+Mxn ^ (ΜΔ )η 彳…+Mx0* (ΜΔ ) °;
[0028]Y的尾數(shù)
[0029]Μγ, = My, η*(ΜΛ )n+My- η ^(Ma)" 4…+My, η ^(Ma )η 彳…+My, 0*(ΜΔ )?;其中,
[0030]η ^ i ^ O ;ΜΔ = 2m;m 彡 22 ;
[0031]若Ex〈Ey,所述將對階后的X和Y的尾數(shù)分別進(jìn)行分段,并將每段數(shù)據(jù)轉(zhuǎn)換成單精度浮點(diǎn)數(shù),包括:
[0032]X的尾數(shù)
[0033]Mx, = Mx, η*(Μδ )n+Mx, n ^(Μδ )n 4…+Mx, n 產(chǎn)(ΜΔ )η 八…+Mx,。*(ΜΔ )°;
[0034]Y的尾數(shù)
[0035]My= Myn*(Μδ )n+Myn ^(Μδ )η k…+Myn 產(chǎn)(ΜΔ )η J+…+My0*(ΜΛ )。;其中,
[0036]n ^ j ^ O ;Μδ = 2m;m 22。
[0037]為達(dá)到上述目的,本發(fā)明實(shí)施例公開了一種浮點(diǎn)數(shù)處理裝置,包括:浮點(diǎn)數(shù)獲得模塊、運(yùn)算法則獲得模塊、判斷模塊、對階模塊、分段轉(zhuǎn)換模塊、計算模塊、尾數(shù)生成模塊、計算結(jié)果生成模塊和規(guī)格化模塊,其中,
[0038]所述浮點(diǎn)數(shù)獲得模塊,用于獲得第一目標(biāo)浮點(diǎn)數(shù)X和第二目標(biāo)浮點(diǎn)數(shù)Y,其中,X =2Ex*Mx,Y = 2Ey*MY;
[0039]所述運(yùn)算法則獲得模塊,用于獲得X與Y的運(yùn)算法則,所述運(yùn)算法則為加法或減法;
[0040]所述判斷模塊,用于判斷X和Y是否均不為零;
[0041 ] 所述對階模塊,用于在所述判斷模塊判斷X和Y均不為零的情況下,對階所述第一目標(biāo)浮點(diǎn)數(shù)X和所述第二目標(biāo)浮點(diǎn)數(shù)Y,以使所述第一目標(biāo)浮點(diǎn)數(shù)X和所述第二目標(biāo)浮點(diǎn)數(shù)Y的階碼相同,其中,若Ex彡Ey,則對階后Y = 2Ex*My丨,若Ex〈Ey,則對階后X = 2Ey*Mx丨;
[0042]所述分段轉(zhuǎn)換模塊,用于將對階后的X和Y的尾數(shù)分別進(jìn)行分段,并將每段數(shù)據(jù)轉(zhuǎn)換成單精度浮點(diǎn)數(shù);
[0043]所述計算模塊,用于根據(jù)所述運(yùn)算法則獲得模塊獲得的運(yùn)算法則,分別計算X和Y的尾數(shù)相應(yīng)段數(shù)據(jù)的結(jié)果;
[0044]所述尾數(shù)生成模塊,用于根據(jù)所述計算模塊計算得到的每段數(shù)據(jù)的結(jié)果,生成最終的尾數(shù);
[0045]所述計算結(jié)果生成模塊,用于根據(jù)所述尾數(shù)生成模塊生成的最終的尾數(shù)和所述對階模塊對階后的階碼,生成計算結(jié)果;
[0046]所述規(guī)格化模塊,用于對所述計算結(jié)果生成模塊生成的計算結(jié)果規(guī)格化處理,得到最終計算結(jié)果。
[0047]可選的,所述第一目標(biāo)浮點(diǎn)數(shù)和/或所述第二目標(biāo)浮點(diǎn)數(shù),包括:
[0048]雙精度浮點(diǎn)數(shù);
[0049]或單精度擴(kuò)展浮點(diǎn)數(shù);
[0050]或雙精度擴(kuò)展浮點(diǎn)數(shù);
[0051]或滿足預(yù)設(shè)表達(dá)式的浮點(diǎn)數(shù)。
[0052]可選的,所述預(yù)設(shè)表達(dá)式,包括:
[0053](_1)S*M*2E,其中,
[0054](_1)5為符號位為有效數(shù)字,且I彡M < 2 ;E為階碼。
[0055]可選的,尾數(shù)分段的位數(shù)不大于22。
[0056]可選的,若Ex彡Ey,所述分段轉(zhuǎn)換模塊,具體用于:
[0057]X的尾數(shù)
[0058]Mx= M χη* (Μδ ) n+Mxn ^ (Μδ )η 丄+…+Mxn ^ (ΜΔ )η 彳…+Mx0* (ΜΔ ) °;
[0059]Y的尾數(shù)
[0060]My- = My- η*(ΜΛ )n+My- η !*(MA)n 4…+My, η ^(Ma )η 彳…+My, 0*(ΜΔ )°;其中,
[0061]η ^ i ^ O ;Μδ = 2m;m < 22 ;
[0062]若Ex〈Ey,所述分段轉(zhuǎn)換模塊,具體用于:
[0063]X的尾數(shù)
[0064]Mx, = Mx, η*(Μδ )n+Mx, n ^(Μδ )n 4…+Mx, n 產(chǎn)(ΜΔ )η 八…+Mx,。*(ΜΔ )°;
[0065]Y的尾數(shù)
[0066]My= Myn*(Μδ )n+Myn ^(Μδ )η k…+Myn 產(chǎn)(ΜΔ )η J+…+My0*(ΜΛ )。;其中,
[0067]n ^ j ^ O ;Μδ = 2m;m ^ 22 0
[0068]由上述的技術(shù)方案可見,本發(fā)明實(shí)施例提供了一種浮點(diǎn)數(shù)處理方法及裝置,方法包括:獲得第一目標(biāo)浮點(diǎn)數(shù)X和第二目標(biāo)浮點(diǎn)數(shù)Y,其中,X = 2Ex*Mx,Y = 2Ey*MY;獲得X與Y的運(yùn)算法則,所述運(yùn)算法則為加法或減法;判斷X和Y是否均不為零;如果X和Y均不為零,則判斷X的階碼Ex和Y的階碼Ey是否相等,如果不相等,則對階所述第一目標(biāo)浮點(diǎn)數(shù)X和所述第二目標(biāo)浮點(diǎn)數(shù)Y,以使所述第一目標(biāo)浮點(diǎn)數(shù)X和所述第二目標(biāo)浮點(diǎn)數(shù)Y的階碼相同,其中,若Ex彡Ey,則對階后Y = 2Ex*My丨,若Ex〈Ey,則對階后X = 2Ey*Mx丨;將對階后的X和Y的尾數(shù)分別進(jìn)行分段,并將每段數(shù)據(jù)轉(zhuǎn)換成單精度浮點(diǎn)數(shù);根據(jù)獲得的運(yùn)算法則,分別計算X和Y的尾數(shù)相應(yīng)段數(shù)據(jù)的結(jié)果;根據(jù)計算得到的每段數(shù)據(jù)的結(jié)果,生成最終的尾數(shù);根據(jù)生成的最終的尾數(shù)和對階后的階碼,生成計算結(jié)果;對生成的計算結(jié)果規(guī)格化處理,得到最終計算結(jié)果。
[0069]應(yīng)用本發(fā)明實(shí)施例提供的技術(shù)方案,將高精度的浮點(diǎn)數(shù)的尾數(shù)進(jìn)行分段,將每段尾數(shù)轉(zhuǎn)化為單精度浮點(diǎn)數(shù)進(jìn)行計算,使得不具備雙精度浮點(diǎn)數(shù)計算能力的中低端GPU產(chǎn)品具備高精度浮點(diǎn)數(shù)的計算能力,提高了中低端GPU產(chǎn)品對高精度浮點(diǎn)數(shù)的計算能力。
【附圖說明】
[0070]為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0071]圖1為本發(fā)明實(shí)施例提供的一種浮點(diǎn)數(shù)處理方法的流程示意圖;
[0072]圖2為本發(fā)明實(shí)施例提供的一種浮點(diǎn)數(shù)處理裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0073]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0074]為了解決現(xiàn)有技術(shù)問題,本發(fā)明實(shí)施例提供了一種浮點(diǎn)數(shù)處理方法及裝置。下面首先對本發(fā)明實(shí)施例所提供的一種浮點(diǎn)數(shù)處理方法進(jìn)行介紹。
[0075]圖1為本發(fā)明實(shí)施例提供的一種浮點(diǎn)數(shù)處理方法的流程示意圖,可以包括:
[0076]SlOl:獲得第一目標(biāo)浮點(diǎn)數(shù)X和第二目標(biāo)浮點(diǎn)數(shù)Y,其中,X =