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

正文內(nèi)容

并行程序設(shè)計(jì)hppt課件(更新版)

  

【正文】 dout,Process %d of %d is on %s\n, myid, numprocs, processor_name)。argc,amp。 /* 各進(jìn)程使用 value作為參數(shù),進(jìn)行計(jì)算 */ … … CPI程序 : 計(jì)算圓周率 PI include include include double f(double a) { return ( / ( + a*a))。 int recvbuf[1]。 }/*for*/ /* 使用 “加 ”規(guī)約操作對(duì)各進(jìn)程的數(shù)據(jù)進(jìn)行匯總 */ MPI_Reduce( amp。 exit( 0 )。argv )。 int sendbuf[1]。 MPI_Comm_rank( MPI_COMM_WORLD, amp。 if ( rank == 0 ) MPI_Isend( sendbuf, count, MPI_INT, 1, 0, MPI_COMM_WORLD, amp。status )。 int MPI_Buffer_attach( void *buffer, //緩沖區(qū)地址 int count, //緩沖區(qū)大小 )。 /* 從 0號(hào)進(jìn)程以外的每個(gè)進(jìn)程接收消息 */ printf( process:%d of %d receiving..n, myid, numProcs )。 i++ ) sbuf[i] = myid + i。argc, amp。 MPI_Comm_size():獲得指定通信子中的任務(wù)數(shù) MPI_Comm_rank():獲得某個(gè)進(jìn)程在通信子中的序號(hào) int MPI_Comm_size( MPI_COMM m, //指定的通信子 int *size //任務(wù)數(shù) )。 int MPI_Recv( void *buffer, //接收數(shù)據(jù)指針 int count, //欲接收數(shù)據(jù)元素?cái)?shù) MPI_Datatype type, //接收數(shù)據(jù)類型 int source, //發(fā)送進(jìn)程 ID int tag, //識(shí)別該消息的標(biāo)記 MPI_COMM m, //MPI通信子 MPI_Status *status //接收操作狀態(tài)指針 )。myid )。 MPI_Finalize()。 source++ ) MPI_Recv( rbuf, BUF_SIZE, MPI_INT, source, 1, MPI_COMM_WORLD, amp。status ) 消息緩沖區(qū)指針 消息中數(shù)據(jù)個(gè)數(shù) 消息數(shù)據(jù)類型 源進(jìn)程號(hào) tag 通信子 狀態(tài)信息 點(diǎn)到點(diǎn)通信 六、各種通信模式小結(jié) ? 發(fā)送 /接收操作將配對(duì) 存在 死鎖 可能性 – 下例中,消息 tag1發(fā)送后將緩存在進(jìn)程 1,直到進(jìn)程 1執(zhí)行第 2個(gè)接收操作;而第 2個(gè)發(fā)送操作將與進(jìn)程 1的第 1個(gè)接收操作形成同步 ? 關(guān)于緩沖使用 – 緩沖模式下,由用戶程序指定緩沖區(qū),如緩沖區(qū)滿,則會(huì)導(dǎo)致錯(cuò)誤 – 標(biāo)準(zhǔn)模式下,由 MPI環(huán)境提供緩沖區(qū),緩沖區(qū)不足時(shí),發(fā)送進(jìn)程將等待直到接收操作啟動(dòng) (相當(dāng)于同步模式 ) MPI_Comm_rank( MPI_COMM_WORLD, amp。 } 七、非阻塞式通信 ? MPI中消息傳遞時(shí)延較大,對(duì)程序性能影響很大 ? 將 通信和計(jì)算重疊 可以在很大程度上隱藏通信時(shí)延 ① 方法一:多線程 線程通信等待期間,處理器可切換至其他線程 ② 方法二:非阻塞式通信 進(jìn)程通信期間不阻塞,而是進(jìn)行其他計(jì)算 點(diǎn)到點(diǎn)通信 七、非阻塞式通信 ? MPI_Isend()和 MPI_Irecv()是標(biāo)準(zhǔn)發(fā)送 /接收的非阻塞式版本 – I: Immediately – 函數(shù)將在本地操作完成前返回 ? 非阻塞通信也可使用 4種模式 – 標(biāo)準(zhǔn)、緩沖、就緒和同步 ? 非阻塞式通信的使用方法 – 進(jìn)程調(diào)用非阻塞式發(fā)送 /接收函數(shù),函數(shù)將 立即返回 – 進(jìn)程可進(jìn)行計(jì)算或其他操作,并調(diào)用 MPI_Wait()、 MPI_Test()等結(jié)束測(cè)試函數(shù)檢查發(fā)送 /接收操作是否完成 注意:對(duì)于非阻塞式標(biāo)準(zhǔn)發(fā)送 MPI_Isend(),在發(fā)送操作完成前,不應(yīng)修改緩沖區(qū)中數(shù)據(jù) 點(diǎn)到點(diǎn)通信 七、非阻塞式通信 ? 通信測(cè)試函數(shù) MPI_Wait():等待發(fā)送 /接收結(jié)束 MPI_Test():測(cè)試非阻塞操作是否結(jié)束 int MPI_Wait( MPI_Request *request, //請(qǐng)求句柄 MPI_Status *status, //狀態(tài) )。req )。status )。 /* 進(jìn)程 2作為根進(jìn)程,執(zhí)行“加”規(guī)約操作 */ MPI_Reduce( sendbuf, recvbuf, 1, MPI_INT, MPI_SUM, 2, MPI_COMM_WORLD )。 MPI_Comm_size( MPI_COMM_WORLD, amp。 i++ ) { /* 從文件中讀入應(yīng)由進(jìn)程 i處理的數(shù)據(jù) */ … /* 將數(shù)據(jù)發(fā)給進(jìn)程 i */ MPI_Send( myArray, length_per_process, MPI_INT, i, tag, MPI_COMM_WORLD )。 if ( myid == 0 ) printf( “Number of 3’s: %d\n”, globalCount )。 集合通信 四、數(shù)據(jù)廣播 ? MPI_Bcast()以組內(nèi)指定進(jìn)程為根,將數(shù)據(jù)廣播到組內(nèi)其他進(jìn)程 MPI_Bcast():將從根進(jìn)程數(shù)據(jù)廣播到組內(nèi)其他進(jìn)程 int MPI_Bcast( void *buffer, //欲發(fā)送數(shù)據(jù)的地址 int count, //欲接收數(shù)據(jù)個(gè)數(shù) MPI_Datatype datatype, //數(shù)據(jù)類型 int root, //根進(jìn)程 (廣播源 ) MPI_Comm m //通信子 )。 double mypi, pi, h, sum, x。numprocs)。 /* default of rectangles,可改為人工輸入 */ if (myid == 0) startwtime = MPI_Wtime()。 sum += f(x)。 fflush(stdout)。sendbuf[i] )。 組和通信子 組和通信子 一、簡(jiǎn)介 ? 如果要在 MPI基礎(chǔ)上開(kāi)發(fā)通用算法庫(kù),為避免與應(yīng)用程序的進(jìn)程相互影響,通常需要在算法庫(kù)內(nèi)使用組和通信子的管理機(jī)制 ? 組 (group):一組有序的進(jìn)程集合,組內(nèi)每個(gè)進(jìn)程以進(jìn)程號(hào) (rank)標(biāo)識(shí) ? 通信子 (municator ):定義了封裝 MPI通信的基本模型 – 組內(nèi)通信子 (intramunicator) ? 同屬一個(gè)組的進(jìn)程之間通信的實(shí)體 – 組間通信子 (intermunicator) ? 分屬不同組的進(jìn)程之間通信的實(shí)體 組和通信子 二、組管理 函數(shù)名稱 功 能 組的構(gòu)建與取消 MPI_Comm_group() 返回與通信子 m相關(guān)的組 MPI_Group_free() 釋放組對(duì)象 MPI_Group_union() 合并兩個(gè)組,形成一個(gè)新組 MPI_Group_intersection() 求兩個(gè)組的交集 MPI_Group_difference() 求存在于一個(gè)組而不存在于另一個(gè)組的進(jìn)程,形成新組 MPI_Group_incl() 將進(jìn)程組中前 n個(gè)進(jìn)程組成一個(gè)新組 MPI_Group_excl() 將進(jìn)程組中前 n個(gè)進(jìn)程刪除后組成一個(gè)新組 訪問(wèn)組的相關(guān)信息 MPI_Group_size() 返回指定進(jìn)程組中的進(jìn)程個(gè)數(shù) MPI_Group_rank() 返回調(diào)用進(jìn)程在進(jìn)程組中的編號(hào) MPI_Group_translate_ranks() 返回一個(gè)進(jìn)程組中的 n個(gè)進(jìn)程在另一個(gè)組中的編號(hào) MPI_Group_pare() 比較兩個(gè)進(jìn)程組中的進(jìn)程及編號(hào)并返回結(jié)果 組和通信子 三、通信子管理 MPI_Comm_create():利用進(jìn)程組創(chuàng)建新的通信子 int MPI_Comm_create( MPI_Comm m, //現(xiàn)有通信子 MPI_Group grp, //進(jìn)程組 MPI_Comm *newComm //新建的通信子 )。 /* 為新組創(chuàng)建通信子 */ MPI_Comm_create( MPI_COMM_WORLD, newGroup, amp。argv )。 } 運(yùn)行結(jié)果 (啟動(dòng) 5個(gè) MPI進(jìn)程 ): thread 0 in process 1 thread 1 in process 1 thread 0 in process 3 thread 1 in process 3 thread 0 in process 4 thread 1 in process 4 thread 0 in process 0 thread 0 in process 2 thread 1 in process0 thread 1 in process 2 編譯時(shí)增加 –mp選項(xiàng): mpicc –o xxx mp
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1