本技術(shù)涉及數(shù)據(jù)處理,特別是涉及一種張量數(shù)據(jù)處理方法、裝置、設(shè)備及介質(zhì)。
背景技術(shù):
1、張量計(jì)算核心是通用圖形處理器(general?purpose?graphics?processingunit,gpgpu)中的硬件單元,專為加速深度學(xué)習(xí)和機(jī)器學(xué)習(xí)中的張量計(jì)算而設(shè)計(jì)。它由多個(gè)乘法累加單元組成,能高效執(zhí)行矩陣乘法、卷積等操作,提供高計(jì)算密度、低功耗和高性能,廣泛應(yīng)用于深度學(xué)習(xí)、機(jī)器學(xué)習(xí)和科學(xué)計(jì)算領(lǐng)域。
2、目前,基于gpgpu的張量數(shù)據(jù)處理過(guò)程,主要從寄存器堆讀取指令進(jìn)行卷積計(jì)算。但因gpgpu中寄存器堆數(shù)據(jù)位寬有限,無(wú)法大量存儲(chǔ)數(shù)據(jù),導(dǎo)致張量計(jì)算核心單次運(yùn)算規(guī)模受限。
3、鑒于上述問(wèn)題,如何解決目前張量計(jì)算核心單次運(yùn)算規(guī)模受到寄存器堆的數(shù)據(jù)位寬限制,無(wú)法大規(guī)模計(jì)算和處理張量數(shù)據(jù),是該領(lǐng)域技術(shù)人員亟待解決的問(wèn)題。
技術(shù)實(shí)現(xiàn)思路
1、本技術(shù)的目的是提供一種張量數(shù)據(jù)處理方法、裝置、設(shè)備及介質(zhì),以解決目前張量計(jì)算核心單次運(yùn)算規(guī)模受到寄存器堆的數(shù)據(jù)位寬限制,無(wú)法大規(guī)模計(jì)算和處理張量數(shù)據(jù)的問(wèn)題。
2、為解決上述技術(shù)問(wèn)題,本技術(shù)提供一種張量數(shù)據(jù)處理方法,應(yīng)用于包含控制器、寄存器堆、累加器、輸入緩存和乘加器陣列的張量計(jì)算核心;所述方法包括:
3、獲取張量數(shù)據(jù)處理任務(wù),并獲取所述張量數(shù)據(jù)處理任務(wù)對(duì)應(yīng)的計(jì)算指令;其中,所述張量數(shù)據(jù)處理任務(wù)中至少包含本次張量數(shù)據(jù)處理所需的線程數(shù)量、線程束數(shù)量、寄存器數(shù)量和指令數(shù)量;
4、獲取待處理數(shù)據(jù),并將所述待處理數(shù)據(jù)傳輸至所述輸入緩存中;
5、根據(jù)所述計(jì)算指令判斷全部所述待處理數(shù)據(jù)是否均存入所述輸入緩存;
6、若否,則返回至所述獲取待處理數(shù)據(jù),并將所述待處理數(shù)據(jù)傳輸至所述輸入緩存中的步驟;
7、若是,則通過(guò)所述乘加器陣列和所述累加器對(duì)所述待處理數(shù)據(jù)進(jìn)行處理,以得到張量數(shù)據(jù)處理結(jié)果。
8、一方面,所述獲取張量數(shù)據(jù)處理任務(wù),并獲取所述張量數(shù)據(jù)處理任務(wù)對(duì)應(yīng)的計(jì)算指令,包括:
9、接收主機(jī)端發(fā)送的所述張量數(shù)據(jù)處理任務(wù);
10、根據(jù)所述張量數(shù)據(jù)處理任務(wù)中本次張量數(shù)據(jù)處理所需的所述線程數(shù)量、所述線程束數(shù)量和所述寄存器數(shù)量,判斷當(dāng)前是否具有張量數(shù)據(jù)處理?xiàng)l件;
11、若確認(rèn)當(dāng)前不具有張量數(shù)據(jù)處理?xiàng)l件,則結(jié)束;
12、若確認(rèn)當(dāng)前具有張量數(shù)據(jù)處理?xiàng)l件,則從存儲(chǔ)器中獲取所述張量數(shù)據(jù)處理任務(wù)對(duì)應(yīng)的所述計(jì)算指令。
13、另一方面,所述根據(jù)所述張量數(shù)據(jù)處理任務(wù)中本次張量數(shù)據(jù)處理所需的所述線程數(shù)量、所述線程束數(shù)量和所述寄存器數(shù)量,判斷當(dāng)前是否具有張量數(shù)據(jù)處理?xiàng)l件,包括:
14、判斷當(dāng)前空閑的線程束的數(shù)量是否不小于所述張量數(shù)據(jù)處理任務(wù)中本次張量數(shù)據(jù)處理所需的所述線程束數(shù)量;
15、若確認(rèn)當(dāng)前空閑的線程束的數(shù)量小于所述張量數(shù)據(jù)處理任務(wù)中本次張量數(shù)據(jù)處理所需的所述線程束數(shù)量,則確認(rèn)當(dāng)前不具有張量數(shù)據(jù)處理?xiàng)l件;
16、若確認(rèn)當(dāng)前空閑的線程束的數(shù)量不小于所述張量數(shù)據(jù)處理任務(wù)中本次張量數(shù)據(jù)處理所需的所述線程束數(shù)量,則判斷當(dāng)前線程束中的空閑線程的數(shù)量是否不小于所述張量數(shù)據(jù)處理任務(wù)中本次張量數(shù)據(jù)處理所需的所述線程數(shù)量;
17、若確認(rèn)當(dāng)前線程束中的空閑線程的數(shù)量小于所述張量數(shù)據(jù)處理任務(wù)中本次張量數(shù)據(jù)處理所需的所述線程數(shù)量,則確認(rèn)當(dāng)前不具有張量數(shù)據(jù)處理?xiàng)l件;
18、若確認(rèn)當(dāng)前線程束中的空閑線程的數(shù)量不小于所述張量數(shù)據(jù)處理任務(wù)中本次張量數(shù)據(jù)處理所需的所述線程數(shù)量,則判斷當(dāng)前所述寄存器堆中的寄存器的數(shù)量是否不小于所述張量數(shù)據(jù)處理任務(wù)中本次張量數(shù)據(jù)處理所需的所述寄存器數(shù)量;
19、若確認(rèn)當(dāng)前所述寄存器堆中的寄存器的數(shù)量小于所述張量數(shù)據(jù)處理任務(wù)中本次張量數(shù)據(jù)處理所需的所述寄存器數(shù)量,則確認(rèn)當(dāng)前不具有張量數(shù)據(jù)處理?xiàng)l件;
20、若確認(rèn)當(dāng)前所述寄存器堆中的寄存器的數(shù)量不小于所述張量數(shù)據(jù)處理任務(wù)中本次張量數(shù)據(jù)處理所需的所述寄存器數(shù)量,則確認(rèn)當(dāng)前具有張量數(shù)據(jù)處理?xiàng)l件。
21、另一方面,所述獲取待處理數(shù)據(jù),并將所述待處理數(shù)據(jù)傳輸至所述輸入緩存中,包括:
22、對(duì)所述計(jì)算指令進(jìn)行譯碼處理,以生成控制信號(hào);其中,所述控制信號(hào)中包含所述待處理數(shù)據(jù)所在的寄存器的目標(biāo)寄存器信息;
23、根據(jù)所述目標(biāo)寄存器信息在所述寄存器堆中選取對(duì)應(yīng)的向量寄存器;
24、獲取所述向量寄存器中的特征數(shù)據(jù)、權(quán)重?cái)?shù)據(jù)和偏置數(shù)據(jù);
25、分別將特征數(shù)據(jù)、權(quán)重?cái)?shù)據(jù)和偏置數(shù)據(jù)傳輸至所述輸入緩存中。
26、另一方面,所述根據(jù)所述計(jì)算指令判斷全部所述待處理數(shù)據(jù)是否均存入所述輸入緩存,包括:
27、獲取所述控制信號(hào)中包含的全部所述待處理數(shù)據(jù)的數(shù)據(jù)總量;
28、判斷所述輸入緩存中所述待處理數(shù)據(jù)的數(shù)據(jù)量是否等于所述數(shù)據(jù)總量;
29、若否,則確認(rèn)全部所述待處理數(shù)據(jù)未均存入所述輸入緩存;
30、若是,則確認(rèn)全部所述待處理數(shù)據(jù)均存入所述輸入緩存。
31、另一方面,所述通過(guò)所述乘加器陣列和所述累加器對(duì)所述待處理數(shù)據(jù)進(jìn)行處理,以得到張量數(shù)據(jù)處理結(jié)果,包括:
32、通過(guò)所述乘加器陣列對(duì)特征數(shù)據(jù)和權(quán)重?cái)?shù)據(jù)進(jìn)行卷積計(jì)算,以得到卷積計(jì)算結(jié)果;
33、通過(guò)所述累加器將所述卷積計(jì)算結(jié)果和偏置數(shù)據(jù)進(jìn)行相加,以得到所述張量數(shù)據(jù)處理結(jié)果。
34、另一方面,所述控制信號(hào)中還包含用于存儲(chǔ)所述張量數(shù)據(jù)處理結(jié)果的目標(biāo)向量寄存器的寄存器信息;對(duì)應(yīng)地,在得到所述張量數(shù)據(jù)處理結(jié)果之后,還包括:
35、根據(jù)所述控制信號(hào)中的所述寄存器信息,確定所述寄存器堆中的所述目標(biāo)向量寄存器;
36、將所述張量數(shù)據(jù)處理結(jié)果存儲(chǔ)至所述目標(biāo)向量寄存器中。
37、為解決上述技術(shù)問(wèn)題,本技術(shù)還提供一種張量數(shù)據(jù)處理裝置,應(yīng)用于包含控制器、寄存器堆、累加器、輸入緩存和乘加器陣列的張量計(jì)算核心;所述裝置包括:
38、獲取模塊,用于獲取張量數(shù)據(jù)處理任務(wù),并獲取所述張量數(shù)據(jù)處理任務(wù)對(duì)應(yīng)的計(jì)算指令;其中,所述張量數(shù)據(jù)處理任務(wù)中至少包含本次張量數(shù)據(jù)處理所需的線程數(shù)量、線程束數(shù)量、寄存器數(shù)量和指令數(shù)量;
39、傳輸模塊,用于獲取待處理數(shù)據(jù),并將所述待處理數(shù)據(jù)傳輸至所述輸入緩存中;
40、判斷模塊,用于根據(jù)所述計(jì)算指令判斷全部所述待處理數(shù)據(jù)是否均存入所述輸入緩存;若否,則觸發(fā)所述傳輸模塊;若是,則觸發(fā)處理模塊;
41、所述處理模塊,用于通過(guò)所述乘加器陣列和所述累加器對(duì)所述待處理數(shù)據(jù)進(jìn)行處理,以得到張量數(shù)據(jù)處理結(jié)果。
42、為解決上述技術(shù)問(wèn)題,本技術(shù)還提供一種張量數(shù)據(jù)處理設(shè)備,包括:
43、存儲(chǔ)器,用于存儲(chǔ)計(jì)算機(jī)程序;
44、處理器,用于執(zhí)行所述計(jì)算機(jī)程序時(shí)實(shí)現(xiàn)上述的張量數(shù)據(jù)處理方法的步驟。
45、為解決上述技術(shù)問(wèn)題,本技術(shù)還提供一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上存儲(chǔ)有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)上述的張量數(shù)據(jù)處理方法的步驟。
46、本技術(shù)所提供的張量數(shù)據(jù)處理方法,應(yīng)用于包含控制器、寄存器堆、累加器、輸入緩存和乘加器陣列的張量計(jì)算核心。方法具體通過(guò)獲取張量數(shù)據(jù)處理任務(wù),并獲取張量數(shù)據(jù)處理任務(wù)對(duì)應(yīng)的計(jì)算指令;其中,張量數(shù)據(jù)處理任務(wù)中至少包含本次張量數(shù)據(jù)處理所需的線程數(shù)量、線程束數(shù)量、寄存器數(shù)量和指令數(shù)量;獲取待處理數(shù)據(jù),并將待處理數(shù)據(jù)傳輸至輸入緩存中;根據(jù)計(jì)算指令判斷全部待處理數(shù)據(jù)是否均存入輸入緩存;若否,則返回至獲取待處理數(shù)據(jù),并將待處理數(shù)據(jù)傳輸至輸入緩存中的步驟;若是,則通過(guò)乘加器陣列和累加器對(duì)待處理數(shù)據(jù)進(jìn)行處理,以得到張量數(shù)據(jù)處理結(jié)果。由此可知,本方案在張量計(jì)算核心中新增了輸入緩存,用于存儲(chǔ)張量數(shù)據(jù)處理中的待處理數(shù)據(jù)。當(dāng)獲取到張量數(shù)據(jù)處理任務(wù)及其對(duì)應(yīng)的計(jì)算指令,準(zhǔn)備執(zhí)行張量數(shù)據(jù)計(jì)算時(shí),將待處理數(shù)據(jù)存入輸入緩存中;且只有將所有待處理數(shù)據(jù)全部存入輸入緩存時(shí),才會(huì)發(fā)送待處理數(shù)據(jù)給乘加器陣列和累加器執(zhí)行張量數(shù)據(jù)處理過(guò)程,使得張量計(jì)算核心單次運(yùn)算數(shù)據(jù)明顯增多,不會(huì)受到寄存器位寬限制,極大地提高了張量計(jì)算核心的運(yùn)行效率。
47、此外,本技術(shù)還提供了一種張量數(shù)據(jù)處理裝置、設(shè)備及介質(zhì),效果同上。