專利名稱:以摩爾圖為拓?fù)浣Y(jié)構(gòu)的并行矩陣乘計(jì)算的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及并行與分布式計(jì)算技術(shù)領(lǐng)域,特別涉及一種以摩爾圖為拓?fù)浣Y(jié)構(gòu)的并行矩陣乘計(jì)算的方法和系統(tǒng)。
背景技術(shù):
大多數(shù)并行計(jì)算都是在基于總線、環(huán)和二維環(huán)繞網(wǎng)孔陣列、立方體、完全樹等拓?fù)浣Y(jié)構(gòu)構(gòu)造的超級(jí)計(jì)算機(jī)或分布式網(wǎng)絡(luò)上實(shí)現(xiàn)的,數(shù)據(jù)加載過程中的通信開銷占據(jù)了整個(gè)計(jì)
算過程很大一部分開銷,例如矩陣乘運(yùn)算。現(xiàn)有的矩陣乘計(jì)算經(jīng)常采用Canon和Fox這兩種基于二維環(huán)繞網(wǎng)孔陣列拓?fù)浣Y(jié)構(gòu)的并行處理技術(shù),其基本過程包括裝入、對(duì)準(zhǔn)、循環(huán)單步移位和乘加3個(gè)步驟。裝入是將用于進(jìn)行乘運(yùn)算的矩陣A,B按棋盤方式進(jìn)行分塊,然后按一定的規(guī)定將各個(gè)分塊矩陣a。,\」加載到處理器Pu中。在裝入過程中對(duì)數(shù)據(jù)裝載的位置要求嚴(yán)格,要求數(shù)據(jù)必須在所規(guī)定的位置上。在對(duì)準(zhǔn)步驟上,Canon方法是將矩陣分塊a。向左循環(huán)移動(dòng)i步,將矩陣分塊\」向上循環(huán)移動(dòng)j步。Fox技術(shù)是將對(duì)角矩陣分塊\」向所在行的其余處理器進(jìn)行一到多播送。裝入和對(duì)準(zhǔn)兩個(gè)步驟占據(jù)了 Canon和Fox模塊的很大一部分通信開銷。這些開銷是由于所采用的處理機(jī)互聯(lián)拓?fù)浣Y(jié)構(gòu)的局限性所造成的。此外,擴(kuò)展性也是一個(gè)比較大的問題,即計(jì)算效率往往會(huì)隨著計(jì)算規(guī)模的增大而下降。摩爾圖是指在一定度和直徑下包含最多節(jié)點(diǎn)的圖,圖中的節(jié)點(diǎn)連接成最稠密的形式,具有對(duì)稱對(duì)等和節(jié)點(diǎn)之間整體通信開銷最小的特點(diǎn)。直徑為2的摩爾圖的節(jié)點(diǎn)數(shù)n與圖的度S的關(guān)系為n = 62+1。圖I和圖2分別為直徑為2,度為3和直徑為2,度為7的兩個(gè)摩爾圖。對(duì)摩爾圖的研究主要集中在圖論領(lǐng)域,基于摩爾圖的應(yīng)用也主要是在通信網(wǎng)絡(luò)路由的設(shè)計(jì)方面,而如何采用摩爾圖作為處理器互聯(lián)的拓?fù)浣Y(jié)構(gòu)進(jìn)行并行計(jì)算的文獻(xiàn)和報(bào)道則較為鮮見。有鑒于此,現(xiàn)有技術(shù)還有待改進(jìn)和提高。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種以摩爾圖為拓?fù)浣Y(jié)構(gòu)的并行矩陣乘計(jì)算的方法和系統(tǒng),以解決現(xiàn)有技術(shù)的并行矩陣乘計(jì)算中,裝入和對(duì)準(zhǔn)兩個(gè)步驟占據(jù)了很大一部分通信開銷,處理效率低下,不易擴(kuò)展等問題。為了達(dá)到上述目的,本發(fā)明采取了以下技術(shù)方案
一種以摩爾圖為拓?fù)浣Y(jié)構(gòu)的處理器的并行矩陣乘計(jì)算的方法,用于對(duì)第一矩陣Amxn和第二矩陣Bnxp進(jìn)行相乘計(jì)算,使其得到乘積矩陣CMXP,其中,所述摩爾圖的直徑為2,度為6,處理器的個(gè)數(shù)q= 8 2+1,其中,所述方法包括以下步驟
SI、將第一矩陣Amxn按行分解為q個(gè)每個(gè)大小為m行N列的第一矩陣分塊,將第二矩陣Bnxp按列分解為q個(gè)每個(gè)大小為N行p列的第二矩陣分塊;其中,m=M除以q,p=P除以q ;
52、每個(gè)處理器Pi隨機(jī)地接收一個(gè)第一矩陣分塊和一個(gè)第二矩陣分塊,完成乘積矩陣Cmxp中大小為m行p列的第i個(gè)分塊Cnixp的計(jì)算;
53、將乘積矩陣分塊Cmxp疊加在一起,組成乘積矩陣CMXP。所述的以摩爾圖為拓?fù)浣Y(jié)構(gòu)的處理器的并行矩陣乘計(jì)算的方法,其中,在所述步驟SI中,通過對(duì)第一矩陣Amxn和第二矩陣Bnxp添加若干 值為0的行和列,確保m、p的值為整數(shù)。所述的以摩爾圖為拓?fù)浣Y(jié)構(gòu)的處理器的并行矩陣乘計(jì)算的方法,其中,所述步驟S2進(jìn)一步包括
521、每個(gè)處理器隨機(jī)地接收一個(gè)第一矩陣分塊和一個(gè)第二矩陣分塊;
522、每個(gè)處理器將分配給自己的I個(gè)第一矩陣分塊傳送給相鄰的8個(gè)處理器;
523、每個(gè)處理器Pi收到來自相鄰處理器傳送的8個(gè)第一矩陣分塊后,檢查其中及本身初始分配的第一矩陣分塊中是否有第一矩陣的第i個(gè)矩陣分塊,若有則保存到處理器相應(yīng)的寄存器中,若無則進(jìn)行步驟S24 ;
524、每個(gè)處理器將步驟S24中收到的第一矩陣分塊中除了來自要發(fā)送處理器的第一矩陣分塊外的(S -I)個(gè)第一矩陣分塊分別傳送給相鄰的處理器;
525、每個(gè)處理器Pi收到來自相鄰處理器傳送的SX( S-I)個(gè)第一矩陣分塊后,檢查其中是否有第一矩陣的第i個(gè)矩陣分塊,若有則保存到處理器相應(yīng)的寄存器中;
526、每個(gè)處理器將分配給自己的I個(gè)第二矩陣分塊傳送給相鄰的8個(gè)處理器;
527、各處理器Pi將保存到各自寄存器的第一矩陣分塊分別與本身初始分配的第二矩陣分塊,以及來自相鄰處理器傳送的S個(gè)第二矩陣分塊相乘,得到乘積矩陣C的第i個(gè)分塊的(S+1)個(gè)列子分塊;
528、每個(gè)處理器將步驟S27中收到的第二矩陣分塊中除了來自要發(fā)送處理器的第二矩陣分塊外的(S -I)個(gè)第二矩陣分塊分別傳送給相鄰的處理器;
529、各處理器Pi將保存到各自寄存器的第一矩陣分塊與其收到來自相鄰處理器傳送的第二矩陣的S X ( S -I)個(gè)矩陣分塊相乘,得到乘積矩陣C的第i個(gè)分塊的剩余的S X(S-I)個(gè)列子分塊;
530、則組合后,得到乘積矩陣Cmxp中大小為m行p列的第i個(gè)矩陣分塊CmXp。所述的以摩爾圖為拓?fù)浣Y(jié)構(gòu)的處理器的并行矩陣乘計(jì)算的方法,其中,所述度為3,處理器的個(gè)數(shù)q=10。一種以摩爾圖為拓?fù)浣Y(jié)構(gòu)的處理器的并行矩陣乘計(jì)算的系統(tǒng),其中,所述系統(tǒng)包括若干個(gè)處理器,所述處理器之間以摩爾圖為拓?fù)浣Y(jié)構(gòu)相連。所述的以摩爾圖為拓?fù)浣Y(jié)構(gòu)的處理器的并行矩陣乘計(jì)算的系統(tǒng),其中,所述摩爾圖的直徑為2,度為3,處理器的個(gè)數(shù)為10個(gè)。所述的以摩爾圖為拓?fù)浣Y(jié)構(gòu)的處理器的并行矩陣乘計(jì)算的系統(tǒng),其中,所述摩爾圖的直徑為2,度為7,處理器的個(gè)數(shù)為50個(gè)。一種所述的系統(tǒng)的擴(kuò)展結(jié)構(gòu),其中,包括若干個(gè)以摩爾圖為拓?fù)浣Y(jié)構(gòu)的處理器的并行矩陣乘計(jì)算的系統(tǒng),通過增加權(quán)利要求5所述的系統(tǒng)的度和直徑而組成所述擴(kuò)展結(jié)構(gòu)。
所述的系統(tǒng)的擴(kuò)展結(jié)構(gòu),其中,包括2個(gè)系統(tǒng),每個(gè)系統(tǒng)中包括10個(gè)處理器,每個(gè)系統(tǒng)的摩爾圖的直徑為2,度為3 ;組成的擴(kuò)展結(jié)構(gòu)的度為4直徑為3。有益效果
本發(fā)明提供的以摩爾圖為拓?fù)浣Y(jié)構(gòu)的并行矩陣乘計(jì)算的方法和系統(tǒng),采用摩爾圖作為并行計(jì)算的基本結(jié)構(gòu),計(jì)算負(fù)載能均勻分布在各個(gè)處理器中,每個(gè)處理器的處理功能相同,具有正則性、對(duì)稱性和容錯(cuò)性,且同步并行性更高,總的通信開銷時(shí)間更短。
圖I為直徑為2,度為3的摩爾圖的示意圖。 圖2為直徑為2,度為7的摩爾圖的示意圖。圖3為本發(fā)明的以摩爾圖為拓?fù)浣Y(jié)構(gòu)的并行矩陣乘計(jì)算的方法的流程圖。圖4為本發(fā)明的以摩爾圖為拓?fù)浣Y(jié)構(gòu)的處理器的并行矩陣乘計(jì)算的系統(tǒng)的實(shí)施例的示意圖。圖5為本發(fā)明的以摩爾圖為拓?fù)浣Y(jié)構(gòu)的處理器的并行矩陣乘計(jì)算的方法與現(xiàn)有技術(shù)的并行矩陣乘計(jì)算的方法的比較示意圖。圖6為本發(fā)明的以摩爾圖為拓?fù)浣Y(jié)構(gòu)的處理器的并行矩陣乘計(jì)算的系統(tǒng)的擴(kuò)展結(jié)構(gòu)的實(shí)施例的示意圖。
具體實(shí)施例方式為使本發(fā)明的目的、技術(shù)方案及效果更加清楚、明確,以下參照附圖并舉實(shí)例對(duì)本發(fā)明進(jìn)一步詳細(xì)說明。本發(fā)明提供了一種以摩爾圖為拓?fù)浣Y(jié)構(gòu)的處理器的并行矩陣乘計(jì)算的方法,用于對(duì)第一矩陣Amxn和第二矩陣Bnxp進(jìn)行相乘計(jì)算,使其得到乘積矩陣CMXP,其中,所述摩爾圖的直徑為2,度為S,處理器的個(gè)數(shù)q=S2+l。請(qǐng)參閱圖3,其為本發(fā)明的以摩爾圖為拓?fù)浣Y(jié)構(gòu)的并行矩陣乘計(jì)算的方法的流程圖。如圖所示,所述方法包括以下步驟
51、將第一矩陣Amxn按行分解為q個(gè)每個(gè)大小為m行N列的第一矩陣分塊,將第二矩陣Bnxp按列分解為q個(gè)每個(gè)大小為N行p列的第二矩陣分塊;其中,m=M除以q,p=P除以q ;
52、每個(gè)處理器Pi隨機(jī)地接收一個(gè)第一矩陣分塊和一個(gè)第二矩陣分塊,完成乘積矩陣Cmxp中大小為m行p列的第i個(gè)矩陣分塊Cnixp的計(jì)算;
53、將乘積矩陣分塊Cmxp疊加在一起,組成乘積矩陣CMXP。下面分別針對(duì)上述步驟進(jìn)行詳細(xì)描述
所述步驟SI為將第一矩陣Amxn和第二矩陣Bnxp分解為相應(yīng)的矩陣分塊,具體步驟為將第一矩陣Amxn按行分解為q個(gè)每個(gè)大小為m行N列的第一矩陣分塊,將第二矩陣Bnxp按列分解為q個(gè)每個(gè)大小為N行p列的第二矩陣分塊;其中,m=M除以q,p=P除以q。為了方便描述,我們以度為3,直徑為2的摩爾圖為例來說明,其中,摩爾圖的節(jié)點(diǎn)數(shù)(即對(duì)應(yīng)的處理器的個(gè)數(shù))為10。進(jìn)一步地,因?yàn)閙、p滿足m=M除以q,p=P除以q,且m、p的值為整數(shù)。所以我們可以通過對(duì)第一矩陣Amxn和第二矩陣Bnxp添加若干值為0的行和列,確保m、p的值為整數(shù),此方式為現(xiàn)有技術(shù),這里就不再贅述了。所述步驟S2是本發(fā)明的關(guān)鍵,因?yàn)椴捎昧四枅D的拓?fù)浣Y(jié)構(gòu),每個(gè)處理器Pi便可以隨機(jī)地接收一個(gè)第一矩陣分塊和一個(gè)第二矩陣分塊,完成乘積矩陣Cmxp中大小為m行p列的第i個(gè)分塊Cmxp的計(jì)算。而無需像現(xiàn)有技術(shù)中那樣包括裝入、對(duì)準(zhǔn)等步驟,大大縮短了時(shí)間。為了方便描述,我們以度為3,直徑為2的摩爾圖為例來說明,其中,摩爾圖的節(jié)點(diǎn)數(shù)(即對(duì)應(yīng)的處理器的個(gè)數(shù))為10,如圖4所示,每個(gè)處理器Pi(i=0,I,…9)將隨機(jī)地接收到了一個(gè)第一矩陣分塊和一個(gè)第二矩陣分塊。然后進(jìn)行乘運(yùn)算
(1)每個(gè)處理器將分配給自己的I個(gè)第 一矩陣的分塊傳送給相鄰的3個(gè)處理器;例如處理器P9將其接收的第一矩陣的分塊發(fā)送給P3、P5和P7 ;
(2)每個(gè)處理器Pi(i=0, I, 2,…,9)收到來自相鄰處理器傳送的第一矩陣的3個(gè)矩陣分塊后,檢查其中及本身初始分配的第一矩陣分塊中是否有第一矩陣的第i個(gè)分塊,若有則保存到處理器相應(yīng)的寄存器中;
(3)每個(gè)處理器將第(2)步收到的第一矩陣的3個(gè)矩陣分塊中除了來自要發(fā)送處理器的另外2個(gè)分塊分別傳送給相鄰的3個(gè)處理器;
(4)每個(gè)處理器Pi(i=0,l,2,…,9)收到來自相鄰處理器傳送的6個(gè)第一矩陣分塊后,檢查其中是否有第一矩陣的第i個(gè)分塊,若有則保存到處理器相應(yīng)的寄存器中;
(5)對(duì)第二矩陣分塊也采用相同處理,每個(gè)處理器將分配給自己的I個(gè)第二矩陣分塊傳送給相鄰的3個(gè)處理器;
(6)各處理器Pi(i=0, I, 2,…,9)將保存到各自寄存器的第一矩陣分塊分別與本身初始分配的第二矩陣分塊,以及每個(gè)處理器收到來自相鄰處理器傳送的第二矩陣的3個(gè)矩陣分塊相乘,得到乘積矩陣C的第i個(gè)分塊的4個(gè)列子分塊;
(7)每個(gè)處理器將第(6)步收到的第二矩陣的3個(gè)矩陣分塊中除了來自要發(fā)送處理器的另外2個(gè)分塊分別傳送給相鄰的3個(gè)處理器;
(8)各處理器Pi(i=0, I, 2,…,9)將保存到各自寄存器的第一矩陣分塊與每個(gè)處理器收到來自相鄰處理器傳送的第二矩陣的6個(gè)矩陣分塊相乘,得到C矩陣第i個(gè)分塊的剩余的6個(gè)列子分塊;組合后,便完成乘積矩陣第i個(gè)矩陣分塊的計(jì)算。同樣地,當(dāng)所述以摩爾圖為拓?fù)浣Y(jié)構(gòu)的處理器的并行矩陣乘計(jì)算的方法中,度為6,處理器的個(gè)數(shù)q= 8 2+1時(shí),其所述步驟S2進(jìn)一步包括
521、每個(gè)處理器隨機(jī)地接收一個(gè)第一矩陣分塊和一個(gè)第二矩陣分塊;
522、每個(gè)處理器將分配給自己的I個(gè)第一矩陣分塊傳送給相鄰的8個(gè)處理器;
523、每個(gè)處理器Pi收到來自相鄰處理器傳送的8個(gè)第一矩陣分塊后,檢查其中及本身初始分配的第一矩陣分塊中是否有第一矩陣的第i個(gè)矩陣分塊,若有則保存到處理器相應(yīng)的寄存器中,若無則進(jìn)行步驟S24 ;
524、每個(gè)處理器將步驟S24中收到的第一矩陣分塊中除了來自要發(fā)送處理器的第一矩陣分塊外的(S -I)個(gè)矩陣分塊分別傳送給相鄰的處理器;
525、每個(gè)處理器Pi收到來自相鄰處理器傳送的SX( S-I)個(gè)第一矩陣分塊后,檢查其中是否有第一矩陣的第i個(gè)矩陣分塊,若有則保存到處理器相應(yīng)的寄存器中;
526、每個(gè)處理器將分配給自己的I個(gè)第二矩陣分塊傳送給相鄰的8個(gè)處理器;
527、各處理器Pi將保存到各自寄存器的第一矩陣分塊分別與本身初始分配的第二矩陣分塊,以及來自相鄰處理器傳送的S個(gè)第二矩陣分塊相乘,得到乘積矩陣C的第i個(gè)分塊的(S+1)個(gè)列子分塊;
528、每個(gè)處理器將步驟S27中收到的第二矩陣分塊中除了來自要發(fā)送處理器的第二矩陣分塊外的(S -I)個(gè)矩陣分塊分別傳送給相鄰的處理器;
529、各處理器Pi將保存到各自寄存器的第一矩陣分塊與每個(gè)處理器收到來自相鄰處理器傳送的第二矩陣的SX (S-I)個(gè)矩陣分塊相乘,得到乘積矩陣C的第i個(gè)分塊的剩余的S X ( S-I)個(gè)列子分塊;
530、則組合后,得到乘積矩陣Cmxp中大小為m行p列的第i個(gè)矩陣分塊CmXp。所述步驟S3為將最終矩陣分塊Cmxp疊加在一起,組成乘積矩陣Cmxp,完成了第一矩陣Amxn和第二矩陣Bnxp乘計(jì)算。本發(fā)明的以摩爾圖為拓?fù)浣Y(jié)構(gòu)的處理器的并行矩陣乘計(jì)算的方法與現(xiàn)有技術(shù)的Canon和Fox算法的比較,如圖5所示,其中ts為啟動(dòng)時(shí)間(包括打包、執(zhí)行選路算法和建立 通信界面的時(shí)間),1是傳輸每個(gè)字的時(shí)間。由圖5可見,由于本方法的通信開銷大大小于其它2種方法,因此本方法更適用于大規(guī)模矩陣的乘法運(yùn)算。另外,Canon和Fox等方法要求開始時(shí)矩陣分塊要裝入到固定的處理器中,而本方法由于矩陣分塊可隨機(jī)分布在各處理器中而無此開銷,總的通信開銷時(shí)間更短了。與上述方法對(duì)應(yīng)的是,本發(fā)明還提供了一種以摩爾圖為拓?fù)浣Y(jié)構(gòu)的處理器的并行矩陣乘計(jì)算的系統(tǒng),其中,所述系統(tǒng)包括若干個(gè)處理器,所述處理器之間以摩爾圖為拓?fù)浣Y(jié)構(gòu)相連。其中,所述摩爾圖的直徑為2,度為3,處理器的個(gè)數(shù)為10個(gè),如圖4所示。當(dāng)然,也可以是直徑為2度為7的具有50個(gè)處理器的并行矩陣乘計(jì)算的系統(tǒng),其拓?fù)浣Y(jié)構(gòu)可參見圖2。我們可以講上述以摩爾圖為拓?fù)浣Y(jié)構(gòu)的處理器的并行矩陣乘計(jì)算的系統(tǒng)應(yīng)用在集成電路和矩陣乘法器專用芯片上面,其計(jì)算過程中同步性好、通信開銷小、加速比高,便于硬件化實(shí)現(xiàn)以及可對(duì)任意大小的矩陣進(jìn)行分塊計(jì)算等特點(diǎn)。此外,所述以摩爾圖為拓?fù)浣Y(jié)構(gòu)的處理器的并行矩陣乘計(jì)算的系統(tǒng),還具有良好的可擴(kuò)展性。例如,在圖4所示的系統(tǒng)的基礎(chǔ)上,通過增加圖的直徑和度形成更大規(guī)模的擴(kuò)展結(jié)構(gòu),如圖6所示。相比圖4的結(jié)構(gòu),采用圖6結(jié)構(gòu)的計(jì)算方法的通信開銷中僅增加了 0. 5倍的啟動(dòng)時(shí)間ts,而計(jì)算時(shí)間降低了 I倍;采用圖2結(jié)構(gòu)的計(jì)算方法由于處理器能夠同步向相鄰的7個(gè)處理器傳輸數(shù)據(jù),其總的通信開銷反而由于同步傳輸能力的提高有所下降,而計(jì)算時(shí)間降低了 4倍。表明本方法在以直徑為2的摩爾圖拓?fù)浣Y(jié)構(gòu)組建的并行矩陣乘計(jì)算的系統(tǒng)上具有理想的加速比和良好的可擴(kuò)展特性。概括來說,所述擴(kuò)展結(jié)構(gòu)包括若干個(gè)以摩爾圖為拓?fù)浣Y(jié)構(gòu)的處理器的并行矩陣乘計(jì)算的系統(tǒng),通過所述的系統(tǒng)的度和直徑而組成所述擴(kuò)展結(jié)構(gòu)。如圖6所示,其包括2個(gè)系統(tǒng)第一系統(tǒng)包括處理器10個(gè)=PiG=OJ, 2,…,9);第二系統(tǒng)包括處理器10個(gè)=Pi (i=10, 11,12,…,19),每個(gè)系統(tǒng)的摩爾圖的直徑為2,度為3 ;組成的擴(kuò)展結(jié)構(gòu)的度為4直徑為3。綜上所述,本發(fā)明提供了一種以摩爾圖為拓?fù)浣Y(jié)構(gòu)的并行矩陣乘計(jì)算的方法和系統(tǒng);其首先將第一矩陣按行分解為若干第一矩陣分塊,將第二矩陣按列分解為若干第二矩陣分塊;然后每個(gè)處理器隨機(jī)地接收一個(gè)第一矩陣分塊和一個(gè)第二矩陣分塊,完成最終矩陣中的最終矩陣分塊的計(jì)算;最后將最終矩陣分塊疊加在一起,組成最終矩陣。所述系統(tǒng)采用摩爾圖作為并行計(jì)算的基本結(jié)構(gòu),計(jì)算負(fù)載能均勻分布在各個(gè)處理器中,每個(gè)處理器的處理功能相同,具有正則性、對(duì)稱性和容錯(cuò)性,且同步并行性更高,總的通信開銷時(shí)間更短??梢岳斫獾氖?,對(duì)本領(lǐng)域普通技術(shù)人員來說,可以根據(jù)本發(fā)明的技術(shù)方案及其發(fā)明構(gòu)思加以等同替換或改變,而所有這 些改變或替換都應(yīng)屬于本發(fā)明所附的權(quán)利要求的保護(hù)范圍。
權(quán)利要求
1.一種以摩爾圖為拓?fù)浣Y(jié)構(gòu)的處理器的并行矩陣乘計(jì)算的方法,用于對(duì)第一矩陣Amxn和第二矩陣Bnxp進(jìn)行相乘計(jì)算,使其得到乘積矩陣CMXP,其中,所述摩爾圖的直徑為2,度為δ,處理器的個(gè)數(shù)q=S2+l,其特征在于,所述方法包括以下步驟 51、將第一矩陣Amxn按行分解為q個(gè)每個(gè)大小為m行N列的第一矩陣分塊,將第二矩陣Bnxp按列分解為q個(gè)每個(gè)大小為N行P列的第二矩陣分塊;其中,m=M除以q,p=P除以q ; 52、每個(gè)處理器Pi隨機(jī)地接收一個(gè)第一矩陣分塊和一個(gè)第二矩陣分塊,完成乘積矩陣Cmxp中大小為m行P列的第i個(gè)矩陣分塊Cnixp的計(jì)算; 53、將乘積矩陣分塊Cmxp疊加在一起,組成乘積矩陣CMXP。
2.根據(jù)權(quán)利要求I所述的以摩爾圖為拓?fù)浣Y(jié)構(gòu)的處理器的并行矩陣乘計(jì)算的方法,其特征在于,在所述步驟SI中,通過對(duì)第一矩陣Amxn和第二矩陣Bnxp添加若干值為O的行和列,確保m、p的值為整數(shù)。
3.根據(jù)權(quán)利要求I所述的以摩爾圖為拓?fù)浣Y(jié)構(gòu)的處理器的并行矩陣乘計(jì)算的方法,其特征在于,所述步驟S2進(jìn)一步包括 521、每個(gè)處理器隨機(jī)地接收一個(gè)第一矩陣分塊和一個(gè)第二矩陣分塊; 522、每個(gè)處理器將分配給自己的I個(gè)第一矩陣分塊傳送給相鄰的δ個(gè)處理器; 523、每個(gè)處理器Pi收到來自相鄰處理器傳送的δ個(gè)第一矩陣分塊后,檢查其中及本身初始分配的第一矩陣分塊中是否有第一矩陣的第i個(gè)矩陣分塊,若有則保存到處理器相應(yīng)的寄存器中,若無則進(jìn)行步驟S24 ; 524、每個(gè)處理器將步驟S24中收到的第一矩陣分塊中除了來自要發(fā)送處理器的第一矩陣分塊外的(S -I)個(gè)第一矩陣分塊分別傳送給相鄰的處理器; 525、每個(gè)處理器Pi收到來自相鄰處理器傳送的δΧ( δ-I)個(gè)第一矩陣分塊后,檢查其中是否有第一矩陣的第i個(gè)矩陣分塊,若有則保存到處理器相應(yīng)的寄存器中; 526、每個(gè)處理器將分配給自己的I個(gè)第二矩陣分塊傳送給相鄰的δ個(gè)處理器; 527、各處理器Pi將保存到各自寄存器的第一矩陣分塊分別與本身初始分配的第二矩陣分塊,以及來自相鄰處理器傳送的δ個(gè)第二矩陣的矩陣分塊相乘,得到乘積矩陣C的第i個(gè)分塊的(δ +1)個(gè)列子分塊; 528、每個(gè)處理器將步驟S27中收到的第二矩陣分塊中除了來自要發(fā)送處理器的第二矩陣分塊外的(S -I)個(gè)第二矩陣分塊分別傳送給相鄰的處理器; 529、各處理器Pi將保存到各自寄存器的第一矩陣分塊與其收到的來自相鄰處理器傳送的第二矩陣的δ X ( δ -I)個(gè)第二矩陣分塊相乘,得到乘積矩陣C第i個(gè)分塊的剩余的δ X ( δ-I)個(gè)列子分塊; 530、則組合后,得到乘積矩陣Cmxp中大小為m行P列的第i個(gè)矩陣分塊CmXp。
4.根據(jù)權(quán)利要求I所述的以摩爾圖為拓?fù)浣Y(jié)構(gòu)的處理器的并行矩陣乘計(jì)算的方法,其特征在于,所述度為3,處理器的個(gè)數(shù)q=10。
5.一種以摩爾圖為拓?fù)浣Y(jié)構(gòu)的處理器的并行矩陣乘計(jì)算的系統(tǒng),其特征在于,所述系統(tǒng)包括若干個(gè)處理器,所述處理器之間以摩爾圖為拓?fù)浣Y(jié)構(gòu)相連。
6.根據(jù)權(quán)利要求5所述的以摩爾圖為拓?fù)浣Y(jié)構(gòu)的處理器的并行矩陣乘計(jì)算的系統(tǒng),其特征在于,所述摩爾圖的直徑為2,度為3,處理器的個(gè)數(shù)為10個(gè)。
7.根據(jù)權(quán)利要求5所述的以摩爾圖為拓?fù)浣Y(jié)構(gòu)的處理器的并行矩陣乘計(jì)算的系統(tǒng),其特征在于,所述摩爾圖的直徑為2,度為7,處理器的個(gè)數(shù)為50個(gè)。
8.—種權(quán)利要求5所述的系統(tǒng)的擴(kuò)展結(jié)構(gòu),其特征在于,包括若干個(gè)以摩爾圖為拓?fù)浣Y(jié)構(gòu)的處理器的并行矩陣乘計(jì)算的系統(tǒng),通過增加權(quán)利要求5所述的系統(tǒng)的度和直徑而組成所述擴(kuò)展結(jié)構(gòu)。
9.根據(jù)權(quán)利要求8所述的系統(tǒng)的擴(kuò)展結(jié)構(gòu),其特征在于,包括2個(gè)系統(tǒng),每個(gè)系統(tǒng)中包括10個(gè)處理器,每個(gè)系統(tǒng)的摩爾圖的直徑為2,度為3 ;組成的擴(kuò)展結(jié)構(gòu)的度為4直徑為3。
全文摘要
本發(fā)明公開了一種以摩爾圖為拓?fù)浣Y(jié)構(gòu)的并行矩陣乘計(jì)算的方法和系統(tǒng);其首先將第一矩陣按行分解為若干第一矩陣分塊,將第二矩陣按列分解為若干第二矩陣分塊;然后每個(gè)處理器隨機(jī)地接收一個(gè)第一矩陣分塊和一個(gè)第二矩陣分塊,經(jīng)過若干步驟后完成乘積矩陣中的相應(yīng)矩陣分塊的計(jì)算;最后將乘積矩陣分塊疊加在一起,組成乘積矩陣。所述系統(tǒng)采用摩爾圖作為并行計(jì)算的基本結(jié)構(gòu),計(jì)算負(fù)載能均勻分布在各個(gè)處理器中,每個(gè)處理器的處理功能相同,具有正則性、對(duì)稱性和容錯(cuò)性,且同步并行性更高,總的通信開銷時(shí)間更短。
文檔編號(hào)G06F17/16GK102737010SQ201210100920
公開日2012年10月17日 申請(qǐng)日期2012年4月9日 優(yōu)先權(quán)日2012年4月9日
發(fā)明者張冰, 昝程 申請(qǐng)人:深圳大學(xué)