本技術(shù)涉及高性能計(jì)算領(lǐng)域,具體而言,涉及一種運(yùn)行在計(jì)算平臺中的批量矩陣乘法的加速方法、批量矩陣乘法的加速裝置和計(jì)算機(jī)可讀存儲介質(zhì)。
背景技術(shù):
1、隨著各類人工智能模型參數(shù)量不斷提升,所需的算力也隨之提升,而批量矩陣乘法可以通過硬件特性和算法支持,顯著提高計(jì)算效率。
2、現(xiàn)有技術(shù)中,在計(jì)算平臺上還沒有性能較好的批量矩陣乘法的實(shí)現(xiàn),一般采用循環(huán)調(diào)用單個矩陣乘法去完成批量矩陣乘法的操作,這樣npu中計(jì)算核空閑率較高,計(jì)算的并行性不高,沒有很好的利用硬件設(shè)施提供的算力,批量矩陣乘法計(jì)算方法的計(jì)算效率不高。
技術(shù)實(shí)現(xiàn)思路
1、本技術(shù)的主要目的在于提供一種運(yùn)行在計(jì)算平臺中的批量矩陣乘法的加速方法、批量矩陣乘法的加速裝置和計(jì)算機(jī)可讀存儲介質(zhì),以至少解決現(xiàn)有技術(shù)中批量矩陣乘法計(jì)算方法的計(jì)算效率不高的問題。
2、為了實(shí)現(xiàn)上述目的,根據(jù)本技術(shù)的一個方面,提供了一種運(yùn)行在計(jì)算平臺中的批量矩陣乘法的加速方法,包括:將批量結(jié)果矩陣切分為最大數(shù)量的任務(wù)塊,其中,所述批量結(jié)果矩陣包括多個結(jié)果矩陣,任一所述結(jié)果矩陣為兩個矩陣相乘得到的矩陣;根據(jù)所述最大數(shù)量的任務(wù)塊確定均衡劃分策略,其中,所述均衡劃分策略為將多個所述任務(wù)塊平均分配到所述計(jì)算平臺中的神經(jīng)網(wǎng)絡(luò)處理單元npu的多個計(jì)算核的策略;根據(jù)所述均衡劃分策略調(diào)用所述計(jì)算核中的計(jì)算單元,進(jìn)行所有所述任務(wù)塊的矩陣乘法運(yùn)算,得到所述批量結(jié)果矩陣的計(jì)算結(jié)果。
3、可選地,將批量結(jié)果矩陣切分為最大數(shù)量的任務(wù)塊,包括:根據(jù)統(tǒng)一緩沖區(qū)ub的內(nèi)存空間確定單任務(wù)塊的大小,所述統(tǒng)一緩沖區(qū)ub為所述計(jì)算平臺的npu中的統(tǒng)一緩沖區(qū);依據(jù)所述批量結(jié)果矩陣中最大的mnk和所述單任務(wù)塊的大小,確定所述批量結(jié)果矩陣的任務(wù)塊總數(shù)量的最大值,所述mnk為對應(yīng)矩陣乘法中的行、列、內(nèi)積的維度。
4、可選地,根據(jù)統(tǒng)一緩沖區(qū)的內(nèi)存空間確定單任務(wù)塊的大小,包括:設(shè)所述單任務(wù)塊的大小為m×m,m的計(jì)算公式為,其中,k為所述統(tǒng)一緩沖區(qū)的內(nèi)存空間大小。
5、可選地,依據(jù)所述批量結(jié)果矩陣中最大的mnk和所述單任務(wù)塊的大小,確定所述批量結(jié)果矩陣的任務(wù)塊總數(shù)量的最大值,包括:對矩陣a和矩陣b進(jìn)行矩陣乘法運(yùn)算,所述矩陣a和所述矩陣b為所述批量結(jié)果矩陣中的兩個所述結(jié)果矩陣;以數(shù)組的形式向程序傳入所述矩陣a的m值、k值和所述矩陣b的k值、n值,設(shè)所述批量結(jié)果矩陣的總個數(shù)為batchcount,所在批次為batchid,所述批次的矩陣的長寬為mbatchid、kbatchid和nbatchid,其中,;遍歷m、n、k的三個數(shù)組,得到三個所述數(shù)組中最大的m值、n值、k值為mmax、kmax和nmax;根據(jù)mmax、kmax、nmax和所述單任務(wù)塊的大小,將單個所述結(jié)果矩陣切分為多個任務(wù)塊,單個所述結(jié)果矩陣的最大任務(wù)塊數(shù)量;根據(jù)單個所述結(jié)果矩陣的最大任務(wù)塊數(shù)量,確定所述批量結(jié)果矩陣的任務(wù)塊總數(shù)量的最大值為。
6、可選地,所述方法還包括:將各所述結(jié)果矩陣按照單個所述結(jié)果矩陣的最大任務(wù)塊數(shù)量進(jìn)行劃分;其中,將各所述結(jié)果矩陣按照單個所述結(jié)果矩陣的最大任務(wù)塊數(shù)量進(jìn)行劃分,包括:定義目標(biāo)任務(wù)塊的序號為id1,所述目標(biāo)任務(wù)塊所在批次為batchid1,在所述批次中所述目標(biāo)任務(wù)塊的序號為tilesid1,其中,,,,batchid1和tilesid1的計(jì)算公式為,。
7、可選地,所述均衡劃分策略包括:第一分配步驟,將最大數(shù)量的多個所述任務(wù)塊按照所述npu的計(jì)算核序號coreid從0號開始分配,依次分配至所述npu的各個計(jì)算核,各所述計(jì)算核的計(jì)算任務(wù)量為,其中,task(i)表示id為i的所述計(jì)算核所分配的任務(wù)塊數(shù)量,c為所述計(jì)算核的數(shù)量,為所述計(jì)算核的序號;第二分配步驟,在分配到最后一個所述計(jì)算核時仍有未分配的所述任務(wù)塊的情況下,將未分配的所述任務(wù)塊重新從coreid為0號的所述計(jì)算核開始分配,依次分配至所述npu的各個所述計(jì)算核;重復(fù)所述第一分配步驟和所述第二分配步驟至少一次,直至所有的所述任務(wù)塊均被分配;優(yōu)化步驟,優(yōu)化所述批量結(jié)果矩陣的乘法計(jì)算方法。
8、可選地,所述優(yōu)化步驟包括:設(shè)置判斷函數(shù):
9、,其中,,,其中,id為所述任務(wù)塊的序號,batchid為所述任務(wù)塊所在批次,tilesid為在所述批次中所述任務(wù)塊的序號,mbatchid、nbatchid和kbatchid為所述任務(wù)塊所在所述批次的矩陣的mnk,x和y分別為所述任務(wù)塊在所述結(jié)果矩陣的行數(shù)和列數(shù);在所述計(jì)算核執(zhí)行任務(wù)塊計(jì)算前,利用所述判斷函數(shù)判斷所述任務(wù)塊是否為有效任務(wù)塊;在所述任務(wù)塊是有效任務(wù)塊的情況下,所述計(jì)算核執(zhí)行所述任務(wù)塊的矩陣乘法運(yùn)算;在所述任務(wù)塊非有效任務(wù)塊的情況下,所述計(jì)算核跳過所述任務(wù)塊的計(jì)算,直接進(jìn)行下一個任務(wù)塊的計(jì)算。
10、可選地,根據(jù)所述均衡劃分策略調(diào)用所述計(jì)算核中的計(jì)算單元,進(jìn)行所有所述任務(wù)塊的矩陣乘法運(yùn)算,得到所述批量結(jié)果矩陣的計(jì)算結(jié)果,包括:運(yùn)算步驟,針對各批次的所述結(jié)果矩陣,將任意兩個所述結(jié)果矩陣中的一行任務(wù)塊和一列任務(wù)塊進(jìn)行矩陣乘法運(yùn)算,得到多個計(jì)算結(jié)果;累加步驟,將多個所述計(jì)算結(jié)果進(jìn)行累加,得到對應(yīng)批次的所述結(jié)果矩陣中的所述任務(wù)塊的最終結(jié)果矩陣;判斷步驟,判斷所述結(jié)果矩陣中所有所述任務(wù)塊的計(jì)算是否全部完畢,在所述結(jié)果矩陣中所有所述任務(wù)塊的計(jì)算全部完畢的情況下,確定所述結(jié)果矩陣計(jì)算完成;重復(fù)執(zhí)行所述運(yùn)算步驟、所述累加步驟和所述判斷步驟至少一次,直至所有所述結(jié)果矩陣均計(jì)算完成,得到所述批量結(jié)果矩陣的計(jì)算結(jié)果。
11、為了實(shí)現(xiàn)上述目的,根據(jù)本技術(shù)的另一個方面,提供了一種批量矩陣乘法的加速裝置,包括:切分單元,用于將批量結(jié)果矩陣切分為最大數(shù)量的任務(wù)塊,其中,所述批量結(jié)果矩陣包括多個結(jié)果矩陣,任一所述結(jié)果矩陣為兩個矩陣相乘得到的矩陣;確定單元,用于根據(jù)所述最大數(shù)量的任務(wù)塊確定均衡劃分策略,其中,所述均衡劃分策略為將多個所述任務(wù)塊平均分配到計(jì)算平臺中的神經(jīng)網(wǎng)絡(luò)處理單元npu的多個計(jì)算核的策略;調(diào)用單元,用于根據(jù)所述均衡劃分策略調(diào)用所述計(jì)算核中的計(jì)算單元,進(jìn)行所有所述任務(wù)塊的矩陣乘法運(yùn)算,得到所述批量結(jié)果矩陣的計(jì)算結(jié)果。
12、根據(jù)本技術(shù)的再一方面,提供了一種計(jì)算機(jī)可讀存儲介質(zhì),所述計(jì)算機(jī)可讀存儲介質(zhì)包括存儲的程序,其中,在所述程序運(yùn)行時控制所述計(jì)算機(jī)可讀存儲介質(zhì)所在設(shè)備執(zhí)行任意一種所述的批量矩陣乘法的加速方法。
13、應(yīng)用本技術(shù)的技術(shù)方案,將批量結(jié)果矩陣切分為最大數(shù)量的任務(wù)塊,其中,批量結(jié)果矩陣包括多個結(jié)果矩陣,任一結(jié)果矩陣為兩個矩陣相乘得到的矩陣;根據(jù)最大數(shù)量的任務(wù)塊確定均衡劃分策略,其中,均衡劃分策略為將多個任務(wù)塊平均分配到計(jì)算平臺中的神經(jīng)網(wǎng)絡(luò)處理單元npu的多個計(jì)算核的策略;根據(jù)均衡劃分策略調(diào)用計(jì)算核中的計(jì)算單元,進(jìn)行所有任務(wù)塊的矩陣乘法運(yùn)算,得到批量結(jié)果矩陣的計(jì)算結(jié)果。該方案中,通過提出基于最大數(shù)量的任務(wù)塊的預(yù)設(shè)均衡劃分策略,調(diào)用計(jì)算核中的計(jì)算單元完成批量矩陣乘法,加速了批量矩陣乘法的計(jì)算,從而解決了現(xiàn)有技術(shù)中批量矩陣乘法計(jì)算方法的計(jì)算效率不高的問題。