本發(fā)明一般地涉及計(jì)算機(jī)領(lǐng)域。更具體地,本發(fā)明涉及運(yùn)算多個(gè)操作數(shù)的裝置及其集成電路裝置與板卡,以及運(yùn)算多個(gè)操作數(shù)的方法及其計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)、計(jì)算機(jī)程序產(chǎn)品、計(jì)算機(jī)裝置。
背景技術(shù):
1、計(jì)算機(jī)領(lǐng)域經(jīng)常需要進(jìn)行定點(diǎn)數(shù)或浮點(diǎn)數(shù)的運(yùn)算,尤其是深度學(xué)習(xí)算法,乘法和乘累加運(yùn)算占據(jù)了90%以上的運(yùn)算。其中,乘累加指的是一連串的操作數(shù)兩兩相乘,再把相乘的結(jié)果加總起來(lái),例如:
2、z=a0·b0+a1·b1+a2·b2+a3·b3
3、其中a與b為操作數(shù)。
4、乘法及乘累加運(yùn)算應(yīng)用的范圍極廣,因此計(jì)算機(jī)經(jīng)常要應(yīng)付多種數(shù)據(jù)格式的乘累加運(yùn)算,不但包括fp16及fp32等浮點(diǎn)數(shù)及int4及int8等定點(diǎn)數(shù)的運(yùn)算,由于浮點(diǎn)數(shù)的數(shù)據(jù)格式之間也相差較大,例如tf32的指數(shù)位為8位尾數(shù)位為10位,fp8的指數(shù)位為4位尾數(shù)位為3位,或fp8的指數(shù)位為5位尾數(shù)位為2位。在處理器進(jìn)行數(shù)據(jù)的乘法或乘累加運(yùn)算時(shí),如何根據(jù)芯片和處理器的設(shè)計(jì)中所要支持的不同類型的數(shù)據(jù)格式,合理設(shè)置處理器的處理位寬,避免硬件資源的閑置和浪費(fèi),在保證處理效率的同時(shí)盡可能減少芯片面積,是深度學(xué)習(xí)領(lǐng)域亟待解決的問(wèn)題。
技術(shù)實(shí)現(xiàn)思路
1、為了至少部分地解決背景技術(shù)中提到的技術(shù)問(wèn)題,本發(fā)明的方案提供了一種運(yùn)算多個(gè)操作數(shù)的裝置及其集成電路裝置與板卡,以及一種運(yùn)算多個(gè)操作數(shù)的方法及其計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)、計(jì)算機(jī)程序產(chǎn)品、計(jì)算機(jī)裝置。
2、在一個(gè)方面中,本發(fā)明揭露一種運(yùn)算多個(gè)操作數(shù)的裝置,所述裝置包括:比較電路,用于識(shí)別操作數(shù)的尾數(shù)位的位寬,并將所述尾數(shù)位的位寬與位寬閾值比較;分配電路,用于將所述尾數(shù)位的位寬大于位寬閾值的操作數(shù)分配至第一運(yùn)算電路進(jìn)行運(yùn)算,否則分配至第二運(yùn)算電路進(jìn)行運(yùn)算,所述第一運(yùn)算電路和所述第二運(yùn)算電路均包括指數(shù)處理電路和尾數(shù)處理電路,所述第一運(yùn)算電路的尾數(shù)處理電路的處理位寬大于所述第二運(yùn)算電路的尾數(shù)處理電路的處理位寬。
3、在一個(gè)方面中,本發(fā)明揭露一種裝置,至少一個(gè)所述第二運(yùn)算電路的尾數(shù)處理電路復(fù)用一個(gè)所述第一運(yùn)算電路的尾數(shù)處理電路。
4、在一個(gè)方面中,本發(fā)明揭露一種裝置,至少一個(gè)所述第二運(yùn)算電路的指數(shù)處理電路復(fù)用一個(gè)所述第一運(yùn)算電路的指數(shù)處理電路。
5、在一個(gè)方面中,本發(fā)明揭露一種裝置,當(dāng)多個(gè)所述第二運(yùn)算電路的尾數(shù)處理電路復(fù)用一個(gè)所述第一運(yùn)算電路的尾數(shù)處理電路時(shí),多個(gè)所述第二運(yùn)算電路的尾數(shù)處理電路同時(shí)工作;和/或多個(gè)所述第二運(yùn)算電路的指數(shù)處理電路復(fù)用一個(gè)所述第一運(yùn)算電路的指數(shù)處理電路時(shí),多個(gè)所述第二運(yùn)算電路的指數(shù)處理電路同時(shí)工作。
6、在一個(gè)方面中,本發(fā)明揭露一種裝置,所述操作數(shù)包括浮點(diǎn)數(shù),所述浮點(diǎn)數(shù)包括fp32、tf32、bf16、fp16、uhp、fp8、fp12中的至少一種。
7、在一個(gè)方面中,本發(fā)明揭露一種裝置,所述fp12格式的符號(hào)位為1位,指數(shù)位為8位,尾數(shù)位為3位。
8、在一個(gè)方面中,本發(fā)明揭露一種裝置,所述fp12格式的符號(hào)位為1位,指數(shù)位為5位,尾數(shù)位為6位。
9、在一個(gè)方面中,本發(fā)明揭露一種裝置,所述fp12格式的符號(hào)位為1位,指數(shù)位為4位,尾數(shù)位為7位。
10、在一個(gè)方面中,本發(fā)明揭露一種裝置,所述位寬閾值為5。
11、在一個(gè)方面中,本發(fā)明揭露一種裝置,所述第一運(yùn)算電路中的尾數(shù)處理電路的處理位寬為10位,所述第二運(yùn)算電路中的尾數(shù)處理電路的處理位寬為3位或4位。
12、在一個(gè)方面中,本發(fā)明揭露一種裝置,所述第一運(yùn)算電路的指數(shù)處理電路的處理位寬為8位,所述第二運(yùn)算電路的指數(shù)處理電路的處理位寬為5位或8位。
13、在一個(gè)方面中,本發(fā)明揭露一種裝置,所述第一運(yùn)算電路和所述第二運(yùn)算電路為乘法運(yùn)算電路,或所述第一運(yùn)算電路和所述第二運(yùn)算電路為對(duì)階乘累加電路。
14、在一個(gè)方面中,本發(fā)明揭露一種裝置,所述對(duì)階乘累加電路包括:對(duì)階模塊,用以識(shí)別所述多個(gè)操作數(shù)的指數(shù)的基準(zhǔn)值;乘法模塊,用以對(duì)所述多個(gè)操作數(shù)中相乘的兩操作數(shù)的尾數(shù)進(jìn)行乘法運(yùn)算,以獲得所述尾數(shù)的部分積;并將所述部分積進(jìn)行累加運(yùn)算,以獲得所述兩操作數(shù)的尾數(shù)的乘積結(jié)果;移位模塊,用以根據(jù)所述基準(zhǔn)值與所述兩操作數(shù)的指數(shù)的差值,對(duì)所述乘積結(jié)果進(jìn)行移位;加法模塊,用以對(duì)移位后的乘積結(jié)果進(jìn)行加法運(yùn)算,以獲得所述多個(gè)操作數(shù)的乘累加結(jié)果。
15、在一個(gè)方面中,本發(fā)明揭露一種裝置,還包括切換模塊,用以判斷所述多個(gè)操作數(shù)為浮點(diǎn)數(shù)或定點(diǎn)數(shù)。
16、在一個(gè)方面中,本發(fā)明揭露一種裝置,其中當(dāng)所述多個(gè)操作數(shù)為定點(diǎn)數(shù)時(shí),所述切換模塊控制所述對(duì)階模塊關(guān)閉。
17、在一個(gè)方面中,本發(fā)明揭露一種裝置,其中當(dāng)所述多個(gè)操作數(shù)為定點(diǎn)數(shù)時(shí),所述切換模塊控制所述移位模塊關(guān)閉。
18、在一個(gè)方面中,本發(fā)明揭露一種裝置,其中所述基準(zhǔn)值為所述多個(gè)操作數(shù)的指數(shù)的最大值。
19、在一個(gè)方面中,本發(fā)明揭露一種裝置,其中所述對(duì)階模塊對(duì)所述多個(gè)操作數(shù)分群,所述基準(zhǔn)值為每一集群中的操作數(shù)的指數(shù)的最大值,所述乘法模塊、所述移位模塊以集群為單位進(jìn)行運(yùn)算。
20、在一個(gè)方面中,本發(fā)明揭露一種裝置,還包括:轉(zhuǎn)換模塊,用以轉(zhuǎn)換所述乘累加結(jié)果的精度。
21、在一個(gè)方面中,本發(fā)明揭露一種裝置,其中轉(zhuǎn)換后的精度為fp38,fp38的指數(shù)位為9位,fp38的尾數(shù)位為28位。
22、在另一個(gè)方面中,本發(fā)明揭露一種集成電路裝置,包括上述任一項(xiàng)所述的裝置。
23、另一個(gè)方面中,本發(fā)明揭露一種板卡,包括上述的集成電路裝置。
24、另一個(gè)方面中,本發(fā)明揭露一種運(yùn)算多個(gè)操作數(shù)的方法,所述方法包括:識(shí)別操作數(shù)的尾數(shù)位的位寬,并將所述尾數(shù)位的位寬與位寬閾值比較,將所述尾數(shù)位的位寬大于位寬閾值的操作數(shù)分配至第一運(yùn)算電路進(jìn)行運(yùn)算,否則分配至第二運(yùn)算電路進(jìn)行運(yùn)算,所述第一運(yùn)算電路和所述第二運(yùn)算電路均包括指數(shù)處理電路和尾數(shù)處理電路,所述第一運(yùn)算電路的尾數(shù)處理電路的處理位寬大于所述第二運(yùn)算電路的尾數(shù)處理電路的處理位寬。
25、另一個(gè)方面中,本發(fā)明揭露一種方法,至少一個(gè)所述第二運(yùn)算電路的尾數(shù)處理電路復(fù)用一個(gè)所述第一運(yùn)算電路的尾數(shù)處理電路。
26、另一個(gè)方面中,本發(fā)明揭露一種方法,至少一個(gè)所述第二運(yùn)算電路的指數(shù)處理電路復(fù)用一個(gè)所述第一運(yùn)算電路的指數(shù)處理電路。
27、另一個(gè)方面中,本發(fā)明揭露一種方法,當(dāng)多個(gè)所述第二運(yùn)算電路的尾數(shù)處理電路復(fù)用一個(gè)所述第一運(yùn)算電路的尾數(shù)處理電路時(shí),多個(gè)所述第二運(yùn)算電路的尾數(shù)處理電路同時(shí)工作;和/或多個(gè)所述第二運(yùn)算電路的指數(shù)處理電路復(fù)用一個(gè)所述第一運(yùn)算電路的指數(shù)處理電路時(shí),多個(gè)所述第二運(yùn)算電路的指數(shù)處理電路同時(shí)工作。
28、另一個(gè)方面中,本發(fā)明揭露一種方法,所述操作數(shù)包括浮點(diǎn)數(shù),所述浮點(diǎn)數(shù)包括fp32、tf32、bf16、fp16、uhp、fp8、fp12中的至少一種。
29、另一個(gè)方面中,本發(fā)明揭露一種方法,所述fp12格式的符號(hào)位為1位,指數(shù)位為8位,尾數(shù)位為3位。
30、另一個(gè)方面中,本發(fā)明揭露一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有運(yùn)算多個(gè)操作數(shù)的方法的計(jì)算機(jī)程序代碼,當(dāng)所述計(jì)算機(jī)程序代碼由處理裝置運(yùn)行時(shí),執(zhí)行上述任一項(xiàng)所述的方法。
31、另一個(gè)方面中,本發(fā)明揭露一種計(jì)算機(jī)程序產(chǎn)品,包括運(yùn)算多個(gè)操作數(shù)的計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí),實(shí)現(xiàn)上述任一項(xiàng)所述方法的步驟。
32、另一個(gè)方面中,本發(fā)明揭露一種計(jì)算機(jī)裝置,包括存儲(chǔ)器、處理器及存儲(chǔ)在存儲(chǔ)器上的計(jì)算機(jī)程序,所述處理器執(zhí)行所述計(jì)算機(jī)程序以實(shí)現(xiàn)上述任一項(xiàng)所述方法的步驟。
33、深度學(xué)習(xí)的運(yùn)算中,定點(diǎn)數(shù)或浮點(diǎn)數(shù)的乘法運(yùn)算電路或乘累加運(yùn)算電路至少包括指數(shù)處理電路和尾數(shù)處理電路,其中尾數(shù)處理電路比指數(shù)處理電路的開(kāi)銷大,會(huì)占用較大的芯片面積。本發(fā)明在芯片中設(shè)置多個(gè)運(yùn)算電路,不同的運(yùn)算電路中尾數(shù)處理電路能夠處理的尾數(shù)的位寬不同。將不同尾數(shù)位寬的操作數(shù)分配至不同的運(yùn)算電路進(jìn)行乘累加運(yùn)算或乘法運(yùn)算,當(dāng)操作數(shù)的尾數(shù)位較短時(shí),將其分配至處理較短尾數(shù)位寬的運(yùn)算電路,以最大程度節(jié)省硬件開(kāi)銷,減少芯片面積。
34、本發(fā)明以乘累加運(yùn)算為基礎(chǔ),利用對(duì)階的概念,使得浮點(diǎn)數(shù)的部分運(yùn)算與定點(diǎn)數(shù)運(yùn)算相同,如此便可復(fù)用部分相同運(yùn)算進(jìn)行定點(diǎn)數(shù)的乘累加運(yùn)算,達(dá)到涵蓋浮點(diǎn)數(shù)的乘累加運(yùn)算與定點(diǎn)數(shù)的乘累加運(yùn)算的技術(shù)效果,不再單獨(dú)設(shè)置定點(diǎn)數(shù)的運(yùn)算電路,節(jié)省了硬件開(kāi)銷,減少了芯片面積。