Download presentation
Presentation is loading. Please wait.
1
MPI 第三章 需要邊界資料交換的平行程式
2
outline 何謂『需要邊界資料交換』? MPI_Sendrecv() MPI_Bcast() 邊界資料交換的循序程式T3SEQ 資料不切割的邊界資料交換平行程式 T3CP 資料切割的邊界資料交換平行程式 T3DCP_1
3
何謂『需要邊界資料交換』? 平行處理的精神在於將計算從一顆處理器分散到多顆處理器上,借以縮短運算時間。其過程會將資料以各種方式交給每一顆處理器。 『需要邊界資料交換』的平行程式是最常見的一種平行處理程式。 a[i]=(b[i-1]+b[i]+b[i+1])*c[i]
4
MPI_Sendrecv() itag = 110;
MPI_Sendrecv((void *)&b[iend], icount, DATA_TYPE,r_nbr,itag,(void*)&b[istartm1], icount,DATA_TYPE,l_nbr,itag,comm,istat); b[iend] 是要送出去的資料起點 icount 是要送出去的資料數量 DATA_TYPE 是要送出去的資料類別 r_nbr 是要送出去的目的地CPUid(右鄰) I tag 是要送出去的資料標籤 b[iend] 是要接收的資料起點 icount 是要接收的資料數量 DATA_TYPE 是要接收的資料類別 r_nbr 是要接收的來源地CPUid(左鄰) I tag 是要接收的資料標籤 Istat 是叫用這個函式執行後的狀況
5
MPI_Bcast() b 是要送出去的資料起點,簡單變數或陣列名稱 icount 是要送出的資料數量
Iroot = 0; MPI_Bcast((void *)&b,icount,DATA_TYPE,iroot,comm); b 是要送出去的資料起點,簡單變數或陣列名稱 icount 是要送出的資料數量 DATA_TYPE 是要送出去的資料類別 iroot 是要送出去資料的CPUid
6
… 邊界資料交換的循序程式T3SEQ for(i=1;i<ntotal-1;i++){
a[i]=c[i]*d[i]+(b[i-1]+2.0*b[i]+b[i+1])*0.25; amax=max(amax,a[i]); }
7
資料不切割的邊界資料交換平行程式 T3CP
8
資料切割的邊界資料交換平行程式 T3DCP_1
Similar presentations