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

正文內(nèi)容

mpi并行程序設(shè)計(jì)--wenkub

2022-11-06 16:47:53 本頁(yè)面
 

【正文】 (rank=1) (rank=2) . . Recv()。 source++) { MPI_Recv(message, 100, MPI_CHAR, source, 99, MPI_COMM_WORLD,amp。 2020年 11月 MPI并行程序設(shè)計(jì) 44/217 分析 greetings if (myid != 0) { /*建立消息 */ sprintf(message, Greetings from process %d!,myid)。 /*該函數(shù)被各進(jìn)程各調(diào)用一次 ,得到自己的進(jìn)程 rank值 */ MPI_Comm_rank(MPI_COMM_WORLD, amp。 /*消息接收狀態(tài)變量 ,存儲(chǔ)也是分布的 */ char message[100]。 IN buf 發(fā)送緩沖區(qū)的起始地址 IN count 要發(fā)送信息的 元素 個(gè)數(shù) IN datatype 發(fā)送信息的數(shù)據(jù)類型 IN dest 目標(biāo)進(jìn)程的 rank值 IN tag 消息標(biāo)簽 IN m 通信子 2020年 11月 MPI并行程序設(shè)計(jì) 35/217 Blocking Receive int MPI_Recv(void* buf, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm m, MPI_Status *status)。 … 并行代碼 。 4. MPI_Send(…)。下面是 6個(gè)最基本的 MPI函數(shù)。 } /* end main */ 2020年 11月 MPI并行程序設(shè)計(jì) 28/217 解剖 greetings程序 ? 頭文件 : ? int MPI_Init(int *argc, char ***argv) – 啟動(dòng) MPI環(huán)境 ,標(biāo)志并行代碼的開(kāi)始 . – 并行代碼之前 ,第一個(gè) mpi函數(shù) (除 MPI_Initialize()外 ). – 要求 main必須帶能運(yùn)行 ,否則出錯(cuò) . ? 通信子 (通信空間 ): MPI_COMM_WORLD: – 一個(gè)通信空間是一個(gè)進(jìn)程組和一個(gè)上下文的組合 .上下文可看作為組的超級(jí)標(biāo)簽 ,用于區(qū)分不同的通信子 . – 在執(zhí)行函數(shù) MPI_Init之后 ,一個(gè) MPI程序的所有進(jìn)程形成一個(gè)缺省的組 ,這個(gè)組的通信子即被寫作 MPI_COMM_WORLD. – 該參數(shù)是 MPI通信操作函數(shù)中必不可少的參數(shù) ,用于限定參加通信的進(jìn)程的范圍 . 2020年 11月 MPI并行程序設(shè)計(jì) 29/217 解剖 greetings程序 ? int MPI_Comm_size ( MPI_Comm m, int *size ) – 獲得通信空間 m中規(guī)定的組包含的進(jìn)程的數(shù)量 . – 指定一個(gè) municator,也指定了一組共享該空間的進(jìn)程 , 這些進(jìn)程組成該 municator的 group. ? int MPI_Comm_rank ( MPI_Comm m, int *rank ) – 得到本進(jìn)程在通信空間中的 rank值 ,即在組中的邏輯編號(hào) (從 0開(kāi)始 ). ? int MPI_Finalize() – 標(biāo)志并行代碼的結(jié)束 ,結(jié)束除主進(jìn)程外其它進(jìn)程 . – 之后串行代碼仍可在主進(jìn)程 (rank = 0)上運(yùn)行 (如果必須 ). 2020年 11月 MPI并行程序設(shè)計(jì) 30/217 消息傳送 (先可不關(guān)心參數(shù)含義 ) MPI_Send(A, 10, MPI_DOUBLE, 1,99, MPI_COMM_WORLD)。 source++) { MPI_Recv(message, 100, MPI_CHAR, source, 99, MPI_COMM_WORLD, amp。 2020年 11月 MPI并行程序設(shè)計(jì) 27/217 有消息傳遞 greetings(c) if (myid != 0) { strcpy(message, Hello World!)。 MPI_Comm_rank(MPI_COMM_WORLD, amp。 char message[100]。 } 2020年 11月 MPI并行程序設(shè)計(jì) 23/217 更新的 Hello World(Fortran) program main include ‘’ integer ierr, myid, numprocs call MPI_INIT( ierr ) call MPI_COMM_RANK( MPI_COMM_WORLD, myid, ierr ) call MPI_COMM_SIZE( MPI_COMM_WORLD, numprocs, ierr ) print *, ‘I am39。 MPI_Comm_size( MPI_COMM_WORLD, amp。argc, amp。 } 2020年 11月 MPI并行程序設(shè)計(jì) 20/217 ? :開(kāi)始寫 MPI并行程序 ? 在寫 MPI程序時(shí),我們常需要知道以下兩個(gè)問(wèn)題的答案: –任務(wù)由 多少 個(gè)進(jìn)程來(lái)進(jìn)行并行計(jì)算? –我是 哪一個(gè) 進(jìn)程 ? 2020年 11月 MPI并行程序設(shè)計(jì) 21/217 ? :開(kāi)始寫 MPI并行程序 ? MPI 提供了下列函數(shù)來(lái)回答這些問(wèn)題: – 用 MPI_Comm_size 獲得進(jìn)程個(gè)數(shù) p int MPI_Comm_size(MPI_Comm m, int *size)。argc, amp。argv )。 printf( Hello, world!\n )。 MPI_Finalize()。 } include include main( int argc, char *argv[] ) { MPI_Init( amp。argc, amp。 call MPI_FINALIZE( ierr ) end 2020年 11月 MPI并行程序設(shè)計(jì) 14/217 C和 Fortran中 MPI函數(shù)約定 ? C – 必須包含 . – MPI 函數(shù)返回出錯(cuò)代碼或 MPI_SUCCESS成功標(biāo)志 . – MPI前綴 , 且只有 MPI以及 MPI_標(biāo)志后的第一個(gè)字母大寫 , 其余小寫 . ? Fortran – 必須包含 . – 通過(guò)子函數(shù)形式調(diào)用 MPI,函數(shù)最后一個(gè)參數(shù)為返回值 . – MPI前綴,且函數(shù)名全部為大寫 . ? MPI函數(shù) 的參數(shù)被標(biāo)志為以下三種類型: – IN: 參數(shù)在例程的調(diào)用中不會(huì)被修正 . – OUT: 參數(shù)在例程的調(diào)用中可能會(huì)被修正 . – INOUT: 參數(shù)在一些例程中為 IN, 而在另一些例程中為 OUT. 2020年 11月 MPI并行程序設(shè)計(jì) 15/217 MPI初始化 MPI_INIT int MPI_Init(int *argc, char **argv) MPI_INIT(IERROR) – MPI_INIT是 MPI程序的第一個(gè)調(diào)用,它完成MPI程序的所有初始化工作。 printf( Hello, world!\n )。使用MPI作消息傳遞的 C或 Fortran并行程序可不加改變地運(yùn)行在 IBM PC、 MS Windows、 Unix工作站、以及各種并行機(jī)上。 – 在這種并行編程中,每個(gè)并行進(jìn)程均有自己獨(dú)立的地址空間,相互之間訪問(wèn)不能直接進(jìn)行,必須通過(guò)顯式的消息傳遞來(lái)實(shí)現(xiàn)。 – 這種編程方式是大規(guī)模并行處理機(jī)( MPP) 和機(jī)群( Cluster) 采用的主要編程方式。 2020年 11月 MPI并行程序設(shè)計(jì) 10/217 講座內(nèi)容提示 ? 基本的 MPI – 基本概念 – 點(diǎn)到點(diǎn)通信 (Point to point) ? MPI中 API的主要內(nèi)容,為 MPI最基本,最重要的內(nèi)容 – MPI程序的編譯和運(yùn)行 ? 深入 MPI – 用戶自定義 (/派生 )數(shù)據(jù)類型 (Userdefined(Derived) data type) ? 事實(shí)上 MPI的所有數(shù)據(jù)類型均為 MPI自定義類型 – 支持異構(gòu)系統(tǒng) – 允許消息來(lái)自不連續(xù)的或類型不一致的存儲(chǔ)區(qū) (結(jié)構(gòu) ,數(shù)組散元 ) – 集合通信 (Collective) ? 數(shù)據(jù)移動(dòng) , 數(shù)據(jù)聚集,同步 ? 基于 point to point 構(gòu)建 – MPI環(huán)境管理函數(shù) ? 組 ,上下文和通信空間 /通信子的管理 ? 實(shí)例 2020年 11月 MPI并行程序設(shè)計(jì) 11/217 從簡(jiǎn)單入手 ! ? 下面我們首先分別以 C語(yǔ)言和 Fortran語(yǔ)言的形式給出一個(gè)最簡(jiǎn)單的 MPI并行程序 Hello (下頁(yè) ). ? 該程序在終端打印出 Hello World!字樣 . ? “Hello World”:一聲來(lái)自新生兒的問(wèn)候 . 2020年 11月 MPI并行程序設(shè)計(jì) 12/217 Hello world(C) include include “ main( int argc, char *argv[] ) { MPI_Init( amp。 MPI_Finalize()。所有的 MPI程序的第一條可執(zhí)行語(yǔ)句都是這條語(yǔ)句。argv )。argc, amp。 } include include main( int c, char *argv[] ) { MPI_Init( amp。 MPI_Finalize()。 printf( Hello, world!\n )。argv )。 – 用 MPI_Comm_rank 獲得進(jìn)程的一個(gè)叫 rank的值,該 rank值為 0到 p1間的整數(shù) ,相當(dāng)于進(jìn)程的 ID int MPI_Comm_rank(MPI_Comm m, int *rank)。argv )。numprocs )。, myid, ‘of39。 MPI_Init(amp。myid)。 MPI_Send(message,strlen(message)+1, MPI_CHAR, 0,99, MPI_COMM_WORLD)。status)。 MPI_Recv(B, 20, MPI_DOBULE, 0, 99, MPI_COMM_WORLD, amp。 1. MPI_Init(…)。 5. MPI_Recv(…)。 … MPI_Fainalize()。 OUT buf 接收 緩沖區(qū)的起始地址 IN count 要接收信息的 元素 個(gè)數(shù) IN datatype 接收信息的數(shù)據(jù)類型 IN source 源進(jìn)程的 rank值 IN tag 消息標(biāo)簽 IN m 通信子 OUT status status對(duì)象 ,包含實(shí)際接收到的消息的有關(guān)信息 2020年 11月 MPI并行程序設(shè)計(jì) 36/217 MPI消息 ? MPI消息包括信封和數(shù)據(jù)兩個(gè)部分,信封指出了發(fā)送或接收消息的對(duì)象及相關(guān)信息,而數(shù)據(jù)是本消息將要傳遞的內(nèi)容 ? 數(shù)據(jù): 起始地址、數(shù)據(jù)個(gè)數(shù)、數(shù)據(jù)類型 ? 信封: 源 /目的、標(biāo)識(shí)、通信域 2020年 11月 MPI并行程序設(shè)計(jì) 37/217 消息數(shù)據(jù) ? 由 count個(gè)類型為 datatype的連續(xù)數(shù)據(jù)空間組成 , 起始地址為 buf ? 不是以字節(jié)數(shù) , 而是以元素的個(gè)數(shù)指定消息的長(zhǎng)度 ? count可以是零 , 這種情況下消息的數(shù)據(jù)部分是空的 ? MPI基本數(shù)據(jù)類型相應(yīng)于宿主語(yǔ)言的基本數(shù)據(jù)類型 2020年 11月 MPI并行程序設(shè)計(jì) 38/217 什么是緩沖區(qū) ? 1. 應(yīng)用程序中說(shuō)明的變量 ,在消息傳遞語(yǔ)句中又用作緩沖區(qū)的起始位置 . 2. 也可表示由系統(tǒng) (不同用戶 )創(chuàng)建和管理的某一存儲(chǔ)區(qū)域 ,在消息傳遞過(guò)程中用于暫存放消息 .也被稱為系統(tǒng)緩沖區(qū) . 3. 用戶可設(shè)置一定大小的存儲(chǔ)區(qū)域 ,用作中間緩沖區(qū)以保留可能出現(xiàn)在其應(yīng)用程序中的任意消息 . 進(jìn)程 P A M 進(jìn)程 Q B 進(jìn)程 P A M S 進(jìn)程 Q B 進(jìn)程 P A M T 進(jìn)程 Q B 系統(tǒng)緩沖區(qū) 用戶指定緩沖區(qū) 用戶緩沖區(qū) 2020年 11月 MPI并行程序設(shè)計(jì) 39/217 ? MPI標(biāo)識(shí)一條消息的信息包含四個(gè)域 : – Source: 發(fā)送進(jìn)程隱式確定 ,由進(jìn)程的 rank值唯一標(biāo)識(shí) – Destination: Send函數(shù)參數(shù)確定 – Tag: Send函數(shù)參數(shù)確定 ,用于識(shí)別不同的消息 (
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1