版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
高性能矩陣乘法2024/12/82并行算法優(yōu)化研究相對于傳統(tǒng)面向?qū)ο蟠兴惴ǖ?個挑戰(zhàn):同步:兩個或者多個線程協(xié)調(diào)其行為的過程通信:與線程之間交換數(shù)據(jù)相關(guān)的帶寬和延遲問題負載均衡:多個線程之間工作量分布的情況,給各個線程(執(zhí)行核)分配均勻的工作可擴展性:衡量在性能更加強勁的系統(tǒng)上運行軟件時能否有效利用更多線程的指標, 觀察應(yīng)用程序在更高級的平臺上運行 4核到8核線性增長2024/12/83多線程(核)設(shè)計主要分解模式任務(wù)分解: 對程序根據(jù)其執(zhí)行的功能進行分解的過程數(shù)據(jù)分解: 將應(yīng)用程序根據(jù)各任務(wù)所處理的數(shù)據(jù)而非按任務(wù)的天然特性來進行分解數(shù)據(jù)流分解: 研究數(shù)據(jù)在諸任務(wù)之間如何流動,根據(jù)任務(wù)之間的數(shù)據(jù)流關(guān)系對問題 進行分解模式分解方式任務(wù)級并行模式任務(wù)分解DivideandConquer任務(wù)/數(shù)據(jù)分解幾何分解模式數(shù)據(jù)分解流水線模式數(shù)據(jù)流分解波峰(wavefront)模式數(shù)據(jù)流分解2024/12/84多線程(核)設(shè)計主要分解模式任務(wù)分解: 對程序根據(jù)其執(zhí)行的功能進行分解的過程數(shù)據(jù)分解: 將應(yīng)用程序根據(jù)各任務(wù)所處理的數(shù)據(jù)而非按任務(wù)的天然特性來進行分解數(shù)據(jù)流分解: 研究數(shù)據(jù)在諸任務(wù)之間如何流動,根據(jù)任務(wù)之間的數(shù)據(jù)流關(guān)系對問題 進行分解
分解方式設(shè)計說明任務(wù)分解不同的程序行為采用不同的線程實現(xiàn)常用于GUI應(yīng)用程序數(shù)據(jù)分解多個線程對不同的數(shù)據(jù)塊執(zhí)行相同的操作常用于音頻、圖像處理和科學(xué)計算應(yīng)用程序數(shù)據(jù)流分解一個線程的輸出作為另一個線程的輸入尤其應(yīng)注意盡量消除啟動和排空延遲2024/12/85矩陣乘法算法探討
在工程科學(xué)計算中,矩陣乘積是最基本的運算 典型的n階稠密方陣乘積算法的時間復(fù)雜度是O(n3)。 目前對大型矩陣乘積運算的處理主要是采用分治思想,將矩陣分布在多個節(jié)點上,但每個結(jié)點上的小矩陣仍要立方級乘法次數(shù)。 基于分之思想的兩種劃分策略:條形劃分和塊狀(棋盤)劃分的6種常見分布式矩陣乘法并行算法。
2024/12/86基于不同劃分策略的矩陣乘法算法探討
1、條形(stripedpartitioning)劃分的矩陣乘法并行算法
行條劃分 列條劃分兩兩組合:行列、行行、列列、列行2024/12/87基于不同劃分策略的矩陣乘法算法探討
2、塊狀劃分(checkerboardpartitioning)的矩陣乘法并行算法
稱為棋盤劃分Cannon
DescriptionforimplementationofMPIprogramtocomputeMatrixMatrixMultiplicationusingblockcheckerboardpartitioning
andCannonAlgorithm
2024/12/88Cannon
Objective
Computingthematrix-matrixmultiplicationonSMPSystem.UseblockcheckerboardpartitioningofthematricesandCannon'sAlgorithm.
AssumptionSizeofthesquarematricesp=q2andthesizeofsquarematricesAandBisevenlydivisiblebyq.
Itisassumedthatthenumberofblocksareequaltothenumberofprocessors.2024/12/89Cannon
Cannon'salgorithmisbasedoncartesianvirtualtopologyAandBaresquarematricesofsizenandCbetheoutput
matrix.Thesematricesaredivedintoblocksorsubmatricestoperformmatrix-matrixoperationsinparallelnxnmatrixAcanberegardedasqxqarrayofblocksAi,j(0<=i<q,0<=j<q)suchthateachblockisan(n/q)x(n/q)submatrixWeusep
processorstoimplementtheblockversionofmatrixmultiplicationinparallelbychoosingqasasquarerootof
p
andcomputeadistinctblockCi,joneachprocessor.2024/12/810傳統(tǒng)并行
2024/12/811傳統(tǒng)并行
ThematricesAandBare
partitionedintop
blocks,A
i,j
andBi,j
(0<=i<q,0<=j<q)ofsize
(n/qxn/q)
oneachprocess.Theseblocksaremappedontoaqxq
logicalmeshofprocesses.TheprocessesarelabeledfromP0,0toPq-1,q-1.2024/12/812傳統(tǒng)并行
ProcessPi,jinitiallystoreblockmatricesAi,jandBi,jandcomputesblockCi,jofresultmatrix.TocomputesubmatrixCi,j,weneedallsubmatrices,Ai,kand
Bk,j(0
<=k<q).Toacquirealltherequiredblocks,anall-to-allbroadcastofmatrixAi,j's
isperformedineachrowandsimilarlyineachcolumnofmatrixBi,j's.MPIcollectivecommunicationisusedtoperformthisoperations.2024/12/813傳統(tǒng)并行
AfterPi,jacquires,Ai,0,Ai,1,Ai,2
,Ai,q-1andB0,j
,B1,j
,B2,j
,Bq-1,j
,itperformstheserialblockmatrixtomatrixmultiplicationandaccumulatesthepartialblock
matrixCi,jofmatrixC.ToobtaintheresultantproductmatrixC,processeswithrank0gathersalltheblockmatricesbyusingMPI_Gather
collectivecommunicationoperation.2024/12/814Cannon
pprocessorsarrangedinqxqsquaregridofprocessorsandtheinputmatrices.AandBaredistributedamongtheprocessesincheckerboardfashion.ItresultsinconstructingpblockmatricesofAandB.Itusesonlypoint-to-pointcommunication
forcircularlyshiftingblocksofmatrixAandmatrixBamongpprocesses.
2024/12/815Cannon-inital
Thealgorithmproceedsinq
stages.ThefirststepinthisalgorithmistoperforminitialalignmentoftheblockmatrixAandblockmatrixB.TheblocksofmatrixAarecircularlyshiftedtothe
i
positionstoleftintherowofthesquaregridofprocesses,wherei
istherow
numberoftheprocessinthemesh.TheblocksofmatrixBarecircularlyshiftedj
positionsupwards,wherejisthecolumn
numberoftheprocessintheprocessesmesh.2024/12/816Cannon-inital2024/12/817Cannon-runningThealgorithmperformsthefollowingstepsineachstage:
1.MultiplytheblockofmatrixAandmatrixBandaddtheresultantmatrixtogettheblockmatrixC,whichisinitiallysettozero.
2.CircularlyshifttheblocksofmatrixAtoleftintherowsoftheprocessesandtheblocksofmatrixBupwardsinthecolumnsofthesquaregridofprocessesinawraparoundmanner.
2024/12/818Cannon-running2024/12/819Cannon-running2024/12/820書中Cannon-bug2024/12/821
MPI_SendandMPI_Recvisnotusedforpoint-to-pointcommunicationbecauseifalltheprocessescallMPI_SendorMPI_Recv
indifferentorderthedeadlockedsituationmayarise.
Howtofix?指派一個緩沖區(qū),使用MPI_Irecv/MPI_Isend非阻塞式通訊函數(shù),MPI_wait.MPI_Sendrecv.
2024/12/822Cannon-bug
死鎖的問題 問題來源于main_shift()這個函數(shù)中MPI函數(shù)的使用。在Cannon-mpi代碼的main_shift()模塊中,文獻中算法使用的是MPI的阻塞通信函數(shù):MPI_Send/MPI_Recv,這就使得Cannon算法在執(zhí)行循環(huán)左移和循環(huán)上移時,矩陣規(guī)模超過共享buff的容量時出現(xiàn)循環(huán)等待的死鎖狀況。 在曙光4000集群系統(tǒng)上,該算法的發(fā)生死鎖的矩陣下限規(guī)模是200×200的浮點型矩陣。2024/12/823Cannon-bug原始(阻塞式)的main_shift模塊:
voidmain_shift() { … /*將分塊b左移位*/
MPI_Send(a,dl2,MPI_FLOAT,get_index(my_row,my_col-1, sp),1, MPI_COMM_WORLD);
MPI_Recv(a,dl2,MPI_FLOAT,get_index(my_row, my_col+1,sp),1, MPI_COMM_WORLD,&status); /*將分塊b上移位*/
MPI_Send(b,dl2,MPI_FLOAT,get_index(my_row-1,my_col, sp),1, MPI_COMM_WORLD);
MPI_Recv(b,dl2,MPI_FLOAT,get_index(my_row+1, my_col,sp),1, MPI_COMM_WORLD,&status);
}2024/12/824Cannon-bug改進(非阻塞式)的main_shift模塊
…
c[i*dl+j]+=a[i*dl+k]*b[j*dl+k]; //改進了的Cannon按行存取
/*將分塊a左移位*/
MPI_Isend(a,dl2,MPI_FLOAT,get_index(my_row,my_col-1,sp),1,MPI_COMM_WORLD,&myrequest_s);
MPI_Irecv(buf,dl2,MPI_FLOAT,get_index(my_row,my_col+1,sp),1,MPI_COMM_WORLD,&myrequest_r);
MPI_Wait(&myrequest_s,&status);
MPI_Wait(&myrequest_r,&status);
memcpy(a,buf,sizeof(float)*dl2); /*將分塊b上移位*/
MPI_Isend(b,dl2,MPI_FLOAT,get_index(my_row-1,my_col,sp),1,MPI_COMM_WORLD,&myrequest_s);
MPI_Irecv(buf,dl2,MPI_FLOAT,get_index(my_row+1,my_col,sp),1,MPI_COMM_WORLD,&myrequest_r);
MPI_Wait(&myrequest_s,&status);
MPI_Wait(&myrequest_r,&status);
memcpy(b,buf,sizeof(float)*dl2);2024/12/825Cannon-bugMPI_Irecv僅僅初始化接受操作,在與之對應(yīng)的MPI_Wait函數(shù)的調(diào)用返回之前,將不能訪問bufferMPI_Irecv函數(shù)返回時,handle指向一個MPI_Request對象,它代表了一個已近初始化了的通信操作。這個函數(shù)并不返回一個指向MPI_Status對象的指針,因為實際的接受操作并未完成。MPI_Wait會一直阻塞,直至參數(shù)handle所關(guān)聯(lián)的操作完成,對發(fā)送來說,此時就可以向緩沖區(qū)寫入新的值。而對接收來 說,便可以從緩沖區(qū)讀取消息,而status所指向的MPI_Status對象包含了所接收消息的信息。新增加buf的目的就是防止在a還未發(fā)送出去的時候就recv內(nèi)容至a中導(dǎo)致信息的錯誤,只有在MPI_Wait返回以后,再調(diào)用mencpy將buf的內(nèi)容寫回a中,完成更新。2024/12/826Cannon乘法mpi代碼主要模塊intget_index(introw,intcol,intsp)//處理器邏輯陣列坐標至rank號的轉(zhuǎn)換
voidrandom_A_B()//隨機生成矩陣A/Bvoidscatter_A_B() //rank=0的處理器向外分發(fā)A,B的相關(guān)塊voidinit_alignment()//矩陣A/B初始對齊
Voidmain_shift()//分塊矩陣左移和上移,并計算分塊c這個模塊就是我改造該算法的重點部位
voidcollect_c() //rank=0的處理器從其余處理器收集分塊矩陣c
voidprint(float**m,char*str)//打印矩陣
intmain(intargc,chat*argv[])//主過程,cannon算法,矩陣相乘2024/12/827Cannon-review循環(huán)移位對齊左移上移分而治之的并行計算思想任務(wù)劃分數(shù)據(jù)劃分精簡通訊All-to-AllPoint-to-Point每年進入夏季,由于氣溫高、濕度大,對幼兒的照顧要特別注意,以下是出國留學(xué)網(wǎng)為您搜集整理的育兒健康小常識1.不是所有寶寶都需額外補充維生素很多家長會問,孩子多大需要開始補充維生素?小嬰兒是否需要補充維生素?劉主任表示,孩子多大補充維生素沒有明確的界定,如果寶寶是吃母乳或奶粉,一般營養(yǎng)物質(zhì)都足夠、全面,不需要額外補充維生素,如果出現(xiàn)了某些癥狀,如缺乏維生素B或維生素C等,再有針對性的補充會更好。維生素D可以促進鈣的吸收,小嬰兒也應(yīng)該補充,特別是純母乳喂養(yǎng)的寶寶,如果沒有補充維生素
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中學(xué)學(xué)生社團活動經(jīng)費管理制度
- 信息保密制度
- 企業(yè)獎懲制度
- 2026年軟件測試工程師全攻略測試方法與流程
- 2026年文學(xué)創(chuàng)作與編輯專業(yè)試題集及答案
- 2026年金融投資理論及實務(wù)試題庫
- 2025年聯(lián)邦學(xué)習(xí)模型橫向分割數(shù)據(jù)安全對齊協(xié)議
- 2025年電動自行車集中充電設(shè)施智能斷電系統(tǒng)技術(shù)標準協(xié)議
- 古詞課件內(nèi)容
- 急診護理中腦出血的急救處理流程及制度
- 青年教師培訓(xùn):AI賦能教育的創(chuàng)新與實踐
- 2025年山東省中考統(tǒng)考數(shù)學(xué)模擬試卷(含答案)
- 廣東省東莞市2024-2025學(xué)年高一上學(xué)期1月期末英語試題【含答案解析】
- QC080000體系文件手冊
- GB/T 44233.2-2024蓄電池和蓄電池組安裝的安全要求第2部分:固定型電池
- DL∕T 612-2017 電力行業(yè)鍋爐壓力容器安全監(jiān)督規(guī)程
- 2024年國企行測題庫
- 煙囪技術(shù)在血管腔內(nèi)修復(fù)術(shù)中的應(yīng)用
- 崗位聘用登記表
- 2023年高鐵信號車間副主任述職報告
- 第3章 圓錐曲線的方程【精簡思維導(dǎo)圖梳理】高考數(shù)學(xué)高效備考 人教A版2019選擇性必修第一冊
評論
0/150
提交評論