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

正文內(nèi)容

并行程序設(shè)計hppt課件(留存版)

2025-02-28 16:27上一頁面

下一頁面
  

【正文】 MPI_Sendrecv( sbuf, BUFSIZE, MPI_INT, 1, tag, rbuf, BUFSIZE, MPI_INT, 1, tag, MPI_COMM_WORLD, amp。myid )。globalCount, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD )。 double PI25DT = 。 n = 10000。 printf(wall clock time = %f\n, endwtimestartwtime)。 集合通信 七、進程間同步 ? MPI_Barrier()將阻塞進程,直到組內(nèi)進程都到達該點 MPI_Barrier():組內(nèi)進程同步 int MPI_Barrier( MPI_Comm m //通信子 )。argc, amp。 MPI_Comm_size( MPI_COMM_WORLD, amp。 函數(shù)名稱 功 能 通信子的創(chuàng)建與取消 MPI_Comm_create() 利用進程組創(chuàng)建新的通信子 MPI_Comm_dup() 復制通信子 MPI_Comm_split() 將通信子關(guān)聯(lián)的進程組分為兩個子組 MPI_Comm_free() 將通信子標記為無效 訪問信息 MPI_Comm_size() 返回通信子關(guān)聯(lián)的進程組中進程個數(shù) MPI_Comm_rank() 返回調(diào)用進程在進程組中編號 MPI_Comm_pare() 比較兩個通信子并返回結(jié)果 組和通信子 三、通信子管理 創(chuàng)建新組和通信子代碼示例 int ranks[4][4] = { { 0, 1, 2, 3 }, { 4, 5, 6, 7 }, { 8, 9, 10, 11 }, { 12, 13, 14, 15 } }。 } MPI_Finalize()。 /* 從進程 0向其他進程分發(fā)數(shù)據(jù) */ MPI_Bcast(amp。 double startwtime = , endwtime。 MPI_Finalize()。numProcs )。 } if ( rank == 1 ) { MPI_Recv( rbuf, BUFSIZE, MPI_INT, 0, tag, MPI_COMM_WORLD, amp。 int MPI_Test( MPI_Request *request, //請求句柄 int *flag, //操作結(jié)束便返回為真 MPI_Status *status, //狀態(tài) )。status )。 MPI_Comm_size( MPI_COMM_WORLD, amp。 int MPI_Finalize()。 i BUF_SIZE。 ③ 發(fā)送動作遲于接收動作啟動 – proc0會立即啟動數(shù)據(jù)傳輸操作 p r o c 0 p r o c 1r e c vs e n d①p r o c 0 p r o c 1r e c vs e n d②p r o c 0 p r o c 1r e c vs e n d③ 點到點通信 三、緩沖通信模式 (Buffered) ? 用于解開阻塞式通信時發(fā)送與接收之間的耦合關(guān)系 ? 緩沖通信模式下 – 即使接收進程沒有啟動接收操作,發(fā)送方在將消息轉(zhuǎn)移至緩沖區(qū)后,發(fā)送函數(shù)也可返回 – 開銷:消息需在緩沖區(qū)間拷貝 – 如果消息大小超過緩沖區(qū)容量,發(fā)送函數(shù)會返回錯誤 ? 與標準模式的區(qū)別在于: – 標準模式由 MPI環(huán)境決定是否使用緩沖,緩沖區(qū)是 MPI環(huán)境提供的,緩沖不足時發(fā)送函數(shù)將阻塞 – 緩沖通信模式由應用程序提供緩沖區(qū),確保發(fā)送函數(shù)不阻塞 點到點通信 三、緩沖通信模式 ? 緩沖通信模式使用的幾個函數(shù) – 發(fā)送函數(shù): MPI_Bsend(),參數(shù)與 MPI_Send()相同 – 發(fā)送前使用 MPI_Pack_size()獲取消息需要的緩沖區(qū)大小,并分配緩沖區(qū) – 發(fā)送前使用 MPI_Buffer_attach()裝配緩沖區(qū) – 發(fā)送后使用 MPI_Buffer_detach()卸載緩沖區(qū) MPI_Pack_size():獲取消息所需緩沖區(qū)大小 MPI_Buffer_attach():裝配通信緩沖區(qū) MPI_Buffer_detach():卸載通信緩沖區(qū) int MPI_Pack_size( int count, //數(shù)據(jù)個數(shù) MPI_Datatype type, //數(shù)據(jù)類型 MPI_COMM m, //MPI通信子 int *size //緩沖區(qū)大小 (字節(jié)數(shù) ) )。rank )。 } 點到點通信 九、點到點通信小結(jié) ? 點到點通信支持阻塞、非阻塞及多種通信模式 ? 各種模式的主要區(qū)別體現(xiàn)在緩沖使用上: – 標準發(fā)送利用 MPI環(huán)境的默認緩沖區(qū) – 緩沖發(fā)送將 MPI環(huán)境的緩沖區(qū)放到用戶空間管理 – 就緒模式相當于不要緩沖區(qū),但發(fā)送方不能提前等待 – 同步模式也相當于不要緩沖區(qū),但允許等待 集合通信 集合通信 一 、簡介 ? 集合通信的主要功能是對 一組進程 進行通信、同步、計算等操作 集合通信的主要功能函數(shù) 集合通信函數(shù) 功能 MPI_Bcast() 數(shù)據(jù)廣播 MPI_Scatter() 數(shù)據(jù)分發(fā) MPI_Gather() 數(shù)據(jù)收集 MPI_Reduce() 規(guī)約 MPI_Scan() 掃描 MPI_Barrier() 進程間同步 二、規(guī)約 (reduce) ? 將組內(nèi)數(shù)據(jù)進行某種規(guī)約后,結(jié)果保存在根進程 (root) MPI_Reduce():規(guī)約操作 int MPI_Reduce( void *sendbuffer, //欲發(fā)送數(shù)據(jù)的地址 void *recvbuffer, //欲接收數(shù)據(jù)的地址 int count, //欲接收數(shù)據(jù)個數(shù) MPI_Datatype datatype, //數(shù)據(jù)類型 MPI_OP op, //MPI操作符 int root, //將保存結(jié)果的進程 MPI_Comm m //通信子 )。 if ( myid == 0 ) /* 0號進程負責讀入并分發(fā)數(shù)據(jù) */ { if ( ( fp = fopen( *argv, “r” ) )== NULL ) { printf( “fopen failed\n” )。 進 程 01進 程 12進 程 23進 程 34發(fā) 送緩 沖 區(qū)1 3 6 1 0接 收緩 沖 區(qū)int sendbuf[1]。 MPI_Init(amp。 sum = 。 進 程 0 進 程 1 進 程 21 0 0進 程 31 0 0 2 0 0 3 0 0 4 0 02 0 03 0 04 0 0接 收緩 沖 區(qū)發(fā) 送緩 沖 區(qū)int sendbuf[4]。 /* 獲取當前組 */ MPI_Comm_group( MPI_COMM_WORLD, amp。myid )。random, 1, MPI_INT, rowNumber*numCols, newComm )。 進 程 0 進 程 1 進 程 21 0 0進 程 31 0 0 2 0 0 3 0 0 4 0 02 0 03 0 04 0 0發(fā) 送緩 沖 區(qū)接 收緩 沖 區(qū)int recvbuf[4]。pi, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD)。namelen)。value, 1, MPI_INT, 2, MPI_COMM_WORLD )。 i++ ) { if ( myArray[i] == 3 ) myCount++。argc, amp。 /* 等待發(fā)送 /接收結(jié)束 */ 點到點通信 七、非阻塞式通信 ? 多重結(jié)束測試 函數(shù)名稱 功 能 MPI_Waitany() 等待一組操作中的一個完成 MPI_Testany() 測試一組操作中的一個是否完成 MPI_Waitall() 等待一組操作全部完成 MPI_Testall() 測試一組操作是否全部完成 MPI_Waitsome() 等待一組操作中的某些完成 MPI_Testsome() 測試一組操作中的某些是否完成 ? 阻塞式發(fā)送可與非阻塞式接收匹配,非阻塞式發(fā)送也可與阻塞式接收匹配 點到點通信 七、非阻塞式通信 ? 可重復 的非阻塞式通信 – 實際應用中,常常需要循環(huán)發(fā)送 /接收消息 – 可重復的非阻塞式通信提供了一種高效的實現(xiàn)方法,它將通信參數(shù)與 MPI內(nèi)部對象綁定 – 通信步驟如下: ① 通信初始化,如調(diào)用 MPI_Isend_init() ② 啟動通信, MPI_Start() ③ 完成通信, MPI_Wait() ④ 釋放查詢對象, MPI_Request_free() ? 第 ②、③步可重復進行 ? 通信操作僅在調(diào)用 MPI_Start()后才啟動 點到點通信 八、組合發(fā)送接收 ? 調(diào)用 MPI_Sendrecv()可將發(fā)送和接收操作組合 MPI_Sendrecv()與 MPI_Send()、 MPI_Recv()匹配示例代碼 MPI_Request req。 } else { MPI_Recv( buf1, count, MPI_REAL, 0, tag2, MPI_COMM_WORLD, amp。 }/*ProcSend()*/
點擊復制文檔內(nèi)容
教學課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1