freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

并行程序設(shè)計(jì)hppt課件(存儲(chǔ)版)

  

【正文】 MPI_Recv( myArray, length_per_process, MPI_INT, 0, tag, MPI_COMM_WORLD )。 MPI_Finalize()。 進(jìn) 程 0 進(jìn) 程 1 進(jìn) 程 21 0 0進(jìn) 程 3廣 播 前消 息緩 沖 區(qū)進(jìn) 程 01 0 0進(jìn) 程 11 0 0進(jìn) 程 21 0 0進(jìn) 程 31 0 0廣 播 后if ( rank == 2 ) { /* 進(jìn)程 2讀取用戶輸入,廣播給其他進(jìn)程 */ scanf( “%d”, amp。 double startwtime = , endwtime。 MPI_Comm_rank(MPI_COMM_WORLD,amp。 /* 從進(jìn)程 0向其他進(jìn)程分發(fā)數(shù)據(jù) */ MPI_Bcast(amp。 } mypi = h * sum。 } MPI_Finalize()。 } /* 進(jìn)程 2作為根進(jìn)程將數(shù)據(jù)分發(fā)給各個(gè)進(jìn)程 */ MPI_Scatter( sendbuf, 1, MPI_INT, amp。 函數(shù)名稱 功 能 通信子的創(chuàng)建與取消 MPI_Comm_create() 利用進(jìn)程組創(chuàng)建新的通信子 MPI_Comm_dup() 復(fù)制通信子 MPI_Comm_split() 將通信子關(guān)聯(lián)的進(jìn)程組分為兩個(gè)子組 MPI_Comm_free() 將通信子標(biāo)記為無(wú)效 訪問(wèn)信息 MPI_Comm_size() 返回通信子關(guān)聯(lián)的進(jìn)程組中進(jìn)程個(gè)數(shù) MPI_Comm_rank() 返回調(diào)用進(jìn)程在進(jìn)程組中編號(hào) MPI_Comm_pare() 比較兩個(gè)通信子并返回結(jié)果 組和通信子 三、通信子管理 創(chuàng)建新組和通信子代碼示例 int ranks[4][4] = { { 0, 1, 2, 3 }, { 4, 5, 6, 7 }, { 8, 9, 10, 11 }, { 12, 13, 14, 15 } }。newComm )。 MPI_Comm_size( MPI_COMM_WORLD, amp。 return 0。argc, amp。newGroup )。 集合通信 七、進(jìn)程間同步 ? MPI_Barrier()將阻塞進(jìn)程,直到組內(nèi)進(jìn)程都到達(dá)該點(diǎn) MPI_Barrier():組內(nèi)進(jìn)程同步 int MPI_Barrier( MPI_Comm m //通信子 )。 i++ ) /* 進(jìn)程 2負(fù)責(zé)數(shù)據(jù)初始化 (或數(shù)據(jù)讀取 ) */ scanf( “%d”, amp。 printf(wall clock time = %f\n, endwtimestartwtime)。 i += numprocs) { x = h * ((double)i )。 n = 10000。 MPI_Comm_size(MPI_COMM_WORLD,amp。 double PI25DT = 。 /* 執(zhí)行“加”掃描操作 */ MPI_Scan( sendbuf, recvbuf, 1, MPI_INT, MPI_SUM, MPI_COMM_WORLD )。globalCount, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD )。 i = numProcs1。myid )。 sendbuf[0] = rank + 1。 if ( rank == 0 ) { MPI_Sendrecv( sbuf, BUFSIZE, MPI_INT, 1, tag, rbuf, BUFSIZE, MPI_INT, 1, tag, MPI_COMM_WORLD, amp。 /* 非阻塞式發(fā)送 */ else MPI_Irecv( recvbuf, count, MPI_INT, 0, 0, MPI_COMM_WORLD, amp。status )。 點(diǎn)到點(diǎn)通信 四、就緒通信模式 (Ready) ? 僅當(dāng)對(duì)方的接收操作啟動(dòng)并準(zhǔn)備就緒時(shí),才可發(fā)送數(shù)據(jù) – 程序員必須保證發(fā)送方發(fā)送時(shí),接收方已啟動(dòng)接收操作 – 如果違反了這種定時(shí)假設(shè) (發(fā)送時(shí)接收方未啟動(dòng)接收操作 ),將會(huì)導(dǎo)致錯(cuò)誤 ? 發(fā)送方使用 MPI_Rsend()發(fā)送消息 ? 優(yōu)缺點(diǎn)討論 – 就緒通信模式可省去消息的緩沖以及發(fā)送 /接收雙方的握手操作,提高通信效率 – 由于對(duì)定時(shí)的額外假設(shè),就緒模式容易出錯(cuò) 點(diǎn)到點(diǎn)通信 五、同步通信模式 (Sychronize) ? 發(fā)送端可在任意時(shí)刻啟動(dòng)發(fā)送動(dòng)作,但 發(fā)送端需等待接收端開(kāi)始接收數(shù)據(jù)之后才返回 – 即發(fā)送 /接收雙方達(dá)到一個(gè)確定的同步點(diǎn)后,通信才結(jié)束 ? 通信協(xié)議: – 發(fā)送端首先向接收端發(fā)送一個(gè)消息發(fā)送請(qǐng)求 – 接收端的 MPI環(huán)境將該請(qǐng)求保存下來(lái) – 待接收進(jìn)程的接收動(dòng)作啟動(dòng)后,接收端向發(fā)送端返回一個(gè)消息發(fā)送許可 – 發(fā)送端收到許可后發(fā)送消息 點(diǎn)到點(diǎn)通信 六、各種通信模式小結(jié) ? 關(guān)于接收操作 – 各種通信模式的發(fā)送函數(shù)各不相同,但接收函數(shù)均為 MPI_Recv() – MPI_Recv()是一個(gè)阻塞操作 ,即:僅當(dāng)接收端進(jìn)程緩沖區(qū)中收到了期待的數(shù)據(jù)才返回 – 如果接收操作早于發(fā)送操作啟動(dòng),則接收操作將等待直到接到數(shù)據(jù)后返回 例: MPI_Recv( buffer, 10, MPI_INT, 0, 123, MPI_COMM_WORLD, amp。 source numProcs。 else ProcSend()。 MPI_Comm_rank( MPI_COMM_WORLD, amp。 通信子基本操作 點(diǎn)到點(diǎn)通信 點(diǎn)到點(diǎn)通信 一 、 簡(jiǎn)介 ? 消息由 發(fā)送進(jìn)程 、 接收進(jìn)程 、 tag唯一地標(biāo)識(shí) – tag是一個(gè)用戶自定義的非負(fù)整數(shù),用于區(qū)分同一對(duì)進(jìn)程間的不同消息 ? 消息的傳遞涉及數(shù)據(jù)的拷貝和同步,為滿足不同需求, MPI提供多種點(diǎn)到點(diǎn)通信的變體 ? 消息的發(fā)送分為 阻塞 和 非阻塞 兩種方式 ? 消息發(fā)送函數(shù): MPI_??Send() – B:緩存模式 – R:就緒模式 – S:同步模式 ? I:立即發(fā)送,即非阻塞方式, I可與 B,R,S組合 點(diǎn)到點(diǎn)通信 一 、 簡(jiǎn)介 ? 消息發(fā)送函數(shù): MPI_??Send() – B:緩存模式 – R:就緒模式 – S:同步模式 – I:立即發(fā)送,即非阻塞方式, I可與B,R,S組合 消息發(fā)送和接收函數(shù)影響到各節(jié)點(diǎn)進(jìn)程間同步關(guān)系及程序性能,應(yīng)謹(jǐn)慎選擇使用 分類 發(fā)送 接收 阻 塞 通 信 MPI_Send MPI_Recv MPI_Irecv MPI_Recv_init MPI_Bsend MPI_Rsend MPI_Ssend 非阻塞通信 非重復(fù) MPI_Isend MPI_Recv MPI_Irecv MPI_Recv_init MPI_Ibsend MPI_Irsend MPI_ISSend 重 復(fù) MPI_Send_init MPI_Recv MPI_Irecv MPI_Recv_init MPI_Bsend_init MPI_Rsend_init MPI_Ssend_init 二、標(biāo)準(zhǔn)發(fā)送和接收 ? 標(biāo)準(zhǔn)發(fā)送和接收是阻塞式 (blocking)的 – 直到傳輸在本地完成 (locally plete)后,發(fā)送 /接收函數(shù)才返回 ? 本地完成與全局完成 – 本地完成 (locally plete) :在本地進(jìn)程中執(zhí)行的傳輸工作已經(jīng)完成 – 全局完成 (globally plete):整個(gè)傳輸已經(jīng)完成 MPI_Send():阻塞式發(fā)送消息 MPI_Recv():阻塞式接收消息 int MPI_Send( void *buffer, //發(fā)送數(shù)據(jù)指針 int count, //發(fā)送數(shù)據(jù)元素?cái)?shù) MPI_Datatype type, //發(fā)送數(shù)據(jù)類型 int dest, //目的進(jìn)程 ID int tag, //識(shí)別該消息的標(biāo)記 MPI_COMM m //MPI通信子 )。 int MPI_Comm_rank( MPI_COMM m, //指定的通信子 int *rank //序號(hào) )。argv )。 if ( myid == 0 ) ProcRecv()。 for ( source = 1。 int MPI_Buffer_detach( void *buffer, //緩沖區(qū)地址 int count, //緩沖區(qū)大小 )。 MPI_Recv( buf2, count, MPI_REAL, 0, tag1, MPI_COMM_WORLD, amp。req )。rank )。 int recvbuf[1]。 MPI_Comm_rank( MPI_COMM_WORLD, amp。 } for ( i = 1。myCount, amp。 sendbuf[0] = rank + 1。 } int main(int argc,char *argv[]) { int n, myid, numprocs, i。argv)。
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1