System.ArgumentOutOfRangeException: 索引和長(zhǎng)度必須引用該字符串內(nèi)的位置。 參數(shù)名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術(shù)實(shí)現(xiàn)步驟摘要】
本公開涉及計(jì)算機(jī),尤其涉及一種通用矩陣乘運(yùn)算裝置、方法、電子設(shè)備。
技術(shù)介紹
1、通用矩陣乘運(yùn)算(general?matrix?multiplication,gemm),是在計(jì)算機(jī)
中經(jīng)常使用的一種算法。它能夠高效地完成矩陣乘法運(yùn)算,被廣泛應(yīng)用于各種科學(xué)計(jì)算、圖形處理和人工智能等領(lǐng)域。然而,矩陣乘法運(yùn)算十分復(fù)雜,如何實(shí)現(xiàn)高效的gemm算法一直是本領(lǐng)域的研究熱點(diǎn)。
2、現(xiàn)有技術(shù)主要是針對(duì)支持gemm算法的硬件裝置(如圖形處理器(graphicsprocessing?unit,gpu)、人工智能(artificial?intelligence,ai)加速器等)的計(jì)算性能和帶寬瓶頸進(jìn)行優(yōu)化,gemm算法總體的計(jì)算量沒(méi)有變化,因此裝置的計(jì)算功耗較大,裝置的能效較低。如何降低裝置的計(jì)算功耗、提升裝置的能效,成為本領(lǐng)域亟待解決的技術(shù)問(wèn)題。
技術(shù)實(shí)現(xiàn)思路
1、有鑒于此,本公開提出了一種通用矩陣乘運(yùn)算裝置、方法、電子設(shè)備。本公開的通用矩陣乘運(yùn)算裝置實(shí)現(xiàn)的gemm算法可降低要計(jì)算的數(shù)據(jù)量,從而降低裝置的計(jì)算功耗、提升裝置的能效。
2、根據(jù)本公開的一方面,提供了一種通用矩陣乘運(yùn)算裝置,所述裝置用于對(duì)第一數(shù)據(jù)矩陣和第二數(shù)據(jù)矩陣進(jìn)行通用矩陣乘運(yùn)算得到第三數(shù)據(jù)矩陣,所述第一數(shù)據(jù)矩陣行數(shù)為m、列數(shù)為s,所述第二數(shù)據(jù)矩陣行數(shù)為s、列數(shù)為n,所述第三數(shù)據(jù)矩陣行數(shù)為m、列數(shù)為n,m、s、n是正整數(shù),所述裝置包括:第一存儲(chǔ)模塊,用于存儲(chǔ)所述第一數(shù)據(jù)矩陣和所述第二數(shù)據(jù)矩陣;掩碼生成模塊,用
3、在一種可能的實(shí)現(xiàn)方式中,所述掩碼生成模塊包括:掩碼矩陣生成單元,用于根據(jù)所述第一數(shù)據(jù)矩陣生成第一掩碼矩陣,并根據(jù)所述第二數(shù)據(jù)矩陣生成第二掩碼矩陣;第一掩碼存儲(chǔ)單元,用于存儲(chǔ)所述第一掩碼矩陣;第二掩碼存儲(chǔ)單元,用于存儲(chǔ)所述第二掩碼矩陣;復(fù)合掩碼生成單元,用于根據(jù)所述第一掩碼矩陣的第i行元素和所述第二掩碼矩陣的第j列元素生成所述復(fù)合掩碼;其中,所述第一掩碼矩陣行數(shù)為m、列數(shù)為s,所述第二掩碼矩陣行數(shù)為s、列數(shù)為n,所述第一掩碼矩陣中第i行第k列的元素指示所述第一數(shù)據(jù)矩陣中第i行第k列的元素是否為0,所述第二掩碼矩陣中第k行第j列的元素指示所述第二數(shù)據(jù)矩陣中第k行第j列的元素是否為0,k≤s,k是正整數(shù);所述復(fù)合掩碼包括s個(gè)元素,所述復(fù)合掩碼的第k個(gè)元素指示所述第一數(shù)據(jù)矩陣中第i行第k列的元素和所述第二數(shù)據(jù)矩陣中第k行第j列的元素的乘積是否為0。
4、在一種可能的實(shí)現(xiàn)方式中,所述第一掩碼矩陣中第i行第k列的元素為0時(shí)指示所述第一數(shù)據(jù)矩陣中第i行第k列的元素也為0;所述第一掩碼矩陣中第i行第k列的元素為1時(shí)指示所述第一數(shù)據(jù)矩陣中第i行第k列的元素不為0;所述第二掩碼矩陣中第k行第j列的元素為0時(shí)指示所述第二數(shù)據(jù)矩陣中第k行第j列的元素也為0;所述第二掩碼矩陣中第k行第j列的元素為1時(shí)指示所述第二數(shù)據(jù)矩陣中第k行第j列的元素不為0。
5、在一種可能的實(shí)現(xiàn)方式中,所述復(fù)合掩碼生成單元具體用于,對(duì)所述第一掩碼矩陣的第i行元素和所述第二掩碼矩陣的第j列元素進(jìn)行與運(yùn)算,得到所述復(fù)合掩碼;所述復(fù)合掩碼的第k個(gè)元素為0時(shí)指示所述第一數(shù)據(jù)矩陣中第i行第k列的元素和所述第二數(shù)據(jù)矩陣中第k行第j列的元素的乘積為0,所述復(fù)合掩碼的第k個(gè)元素為1時(shí)指示所述第一數(shù)據(jù)矩陣中第i行第k列的元素和所述第二數(shù)據(jù)矩陣中第k行第j列的元素的乘積不為0。
6、在一種可能的實(shí)現(xiàn)方式中,所述向量生成模塊具體用于,對(duì)所述復(fù)合掩碼和所述第一數(shù)據(jù)矩陣的第i行元素進(jìn)行與運(yùn)算,去除運(yùn)算結(jié)果中數(shù)值為0的元素后稠密排列剩余元素,得到所述第一向量;對(duì)所述復(fù)合掩碼和所述第二數(shù)據(jù)矩陣的第j列元素進(jìn)行邏輯與運(yùn)算,去除運(yùn)算結(jié)果中數(shù)值為0的元素后稠密排列剩余元素,得到所述第二向量。
7、在一種可能的實(shí)現(xiàn)方式中,所述裝置還包括控制器,所述運(yùn)算模塊在1個(gè)計(jì)算周期完成多對(duì)元素個(gè)數(shù)為w的向量的乘法運(yùn)算,w是小于s的正整數(shù);所述控制器用于,根據(jù)w的數(shù)值拆分所述第一向量和所述第二向量,所述第一向量拆分為z個(gè)第一子向量,所述第二向量拆分為z個(gè)第二子向量,第t個(gè)第一子向量和第t個(gè)第二子向量包括的元素個(gè)數(shù)相同,t≤z,t和z是正整數(shù);第1至第z-1個(gè)第一子向量的元素個(gè)數(shù)等于w,第z個(gè)第一子向量的元素個(gè)數(shù)小于或等于w;所述運(yùn)算模塊具體用于,通過(guò)z個(gè)計(jì)算周期計(jì)算所述第一向量和所述第二向量的乘積,在第t個(gè)計(jì)算周期,將第t個(gè)計(jì)算周期的計(jì)算結(jié)果寫入所述第三數(shù)據(jù)矩陣的第i行第j列,第t個(gè)計(jì)算周期的計(jì)算結(jié)果等于第t個(gè)第一子向量和第t個(gè)第二子向量的乘積與第t-1個(gè)計(jì)算周期的計(jì)算結(jié)果之和,第z個(gè)計(jì)算周期的計(jì)算結(jié)果為所述第一向量和所述第二向量的乘積。
8、在一種可能的實(shí)現(xiàn)方式中,在第t個(gè)計(jì)算周期,所述控制器還用于,控制所述向量生成模塊將第t個(gè)第一子向量和第t個(gè)第二子向量輸出至所述運(yùn)算模塊;在t大于1時(shí),還控制所述第二存儲(chǔ)模塊將第t-1個(gè)計(jì)算周期的計(jì)算結(jié)果輸出至所述運(yùn)算模塊。
9、在一種可能的實(shí)現(xiàn)方式中,所述運(yùn)算模塊包括多個(gè)運(yùn)算單元,每個(gè)運(yùn)算單元在1個(gè)計(jì)算周期完成一對(duì)元素個(gè)數(shù)為w的向量的乘法運(yùn)算,在任意一個(gè)運(yùn)算單元用于計(jì)算所述第一向量和所述第二向量的乘積時(shí),該運(yùn)算單元具體用于:在第1個(gè)計(jì)算周期,計(jì)算第1個(gè)第一子向量和第1個(gè)第二子向量的乘積,作為第1個(gè)計(jì)算周期的計(jì)算結(jié)果,將第1個(gè)計(jì)算周期的計(jì)算結(jié)果寫入所述第三數(shù)據(jù)矩陣的第i行第j列;在t大于1時(shí),在第t個(gè)計(jì)算周期,計(jì)算第t個(gè)第一子向量和第t個(gè)第二子向量的乘積,該乘積與第t-1個(gè)計(jì)算周期的計(jì)算結(jié)果的和作為第t個(gè)計(jì)算周期的計(jì)算結(jié)果,將第t個(gè)計(jì)算周期的計(jì)算結(jié)果寫入所述第三數(shù)據(jù)矩陣的第i行第j列。
10、根據(jù)本公開的另一方面,提供了一種通用矩陣乘運(yùn)算方法,所述方法應(yīng)用于通用矩陣乘運(yùn)算裝置,所述裝置用于對(duì)第一數(shù)據(jù)矩陣和第二數(shù)據(jù)矩陣進(jìn)行通用矩陣乘運(yùn)算得到第三數(shù)據(jù)矩陣,所述第一數(shù)據(jù)矩陣行數(shù)為m、列數(shù)為s,所述第二數(shù)據(jù)矩陣行數(shù)為s、列數(shù)為n,所述第三數(shù)據(jù)矩陣行數(shù)為m、列數(shù)為n,m、s、n是正整數(shù),所述裝置包括第一存儲(chǔ)模塊、掩碼生成模塊、向量生成模塊、運(yùn)算模塊、第二存儲(chǔ)模塊,所述方法包括:使用所述第一存儲(chǔ)模塊存儲(chǔ)所述第一數(shù)據(jù)矩陣和所述第二數(shù)據(jù)矩陣;使用所述掩碼生成模塊根據(jù)所述第一數(shù)據(jù)本文檔來(lái)自技高網(wǎng)...
【技術(shù)保護(hù)點(diǎn)】
1.一種通用矩陣乘運(yùn)算裝置,其特征在于,所述裝置用于對(duì)第一數(shù)據(jù)矩陣和第二數(shù)據(jù)矩陣進(jìn)行通用矩陣乘運(yùn)算得到第三數(shù)據(jù)矩陣,所述第一數(shù)據(jù)矩陣行數(shù)為m、列數(shù)為s,所述第二數(shù)據(jù)矩陣行數(shù)為s、列數(shù)為n,所述第三數(shù)據(jù)矩陣行數(shù)為m、列數(shù)為n,m、s、n是正整數(shù),所述裝置包括:
2.根據(jù)權(quán)利要求1所述的裝置,其特征在于,所述掩碼生成模塊包括:
3.根據(jù)權(quán)利要求2所述的裝置,其特征在于,
4.根據(jù)權(quán)利要求2所述的裝置,其特征在于,所述復(fù)合掩碼生成單元具體用于,
5.根據(jù)權(quán)利要求4所述的裝置,其特征在于,所述向量生成模塊具體用于,
6.根據(jù)權(quán)利要求1所述的裝置,其特征在于,所述裝置還包括控制器,所述運(yùn)算模塊在1個(gè)計(jì)算周期完成多對(duì)元素個(gè)數(shù)為w的向量的乘法運(yùn)算,w是小于s的正整數(shù);
7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,在第t個(gè)計(jì)算周期,所述控制器還用于,
8.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述運(yùn)算模塊包括多個(gè)運(yùn)算單元,每個(gè)運(yùn)算單元在1個(gè)計(jì)算周期完成一對(duì)元素個(gè)數(shù)為w的向量的乘法運(yùn)算,
9.一種通用矩陣
10.一種電子設(shè)備,其特征在于,包括權(quán)利要求1-8中任一項(xiàng)所述的通用矩陣乘運(yùn)算裝置。
...【技術(shù)特征摘要】
1.一種通用矩陣乘運(yùn)算裝置,其特征在于,所述裝置用于對(duì)第一數(shù)據(jù)矩陣和第二數(shù)據(jù)矩陣進(jìn)行通用矩陣乘運(yùn)算得到第三數(shù)據(jù)矩陣,所述第一數(shù)據(jù)矩陣行數(shù)為m、列數(shù)為s,所述第二數(shù)據(jù)矩陣行數(shù)為s、列數(shù)為n,所述第三數(shù)據(jù)矩陣行數(shù)為m、列數(shù)為n,m、s、n是正整數(shù),所述裝置包括:
2.根據(jù)權(quán)利要求1所述的裝置,其特征在于,所述掩碼生成模塊包括:
3.根據(jù)權(quán)利要求2所述的裝置,其特征在于,
4.根據(jù)權(quán)利要求2所述的裝置,其特征在于,所述復(fù)合掩碼生成單元具體用于,
5.根據(jù)權(quán)利要求4所述的裝置,其特征在于,所述向量生成模塊具體用于,
6.根據(jù)權(quán)利要求1所述的裝置,其特征在于,所述裝置還包括控制器,所述運(yùn)算模塊在1個(gè)計(jì)算周期完成多對(duì)元素個(gè)數(shù)為w的向量的乘法運(yùn)算,w是小于s的正整數(shù);<...
【專利技術(shù)屬性】
技術(shù)研發(fā)人員:請(qǐng)求不公布姓名,
申請(qǐng)(專利權(quán))人:摩爾線程智能科技上海有限責(zé)任公司,
類型:發(fā)明
國(guó)別省市:
還沒(méi)有人留言評(píng)論。發(fā)表了對(duì)其他瀏覽者有用的留言會(huì)獲得科技券。