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

正文內(nèi)容

mpi并行程序設(shè)計--文庫吧

2025-09-22 16:47 本頁面


【正文】 ank的值,該 rank值為 0到 p1間的整數(shù) ,相當(dāng)于進程的 ID int MPI_Comm_rank(MPI_Comm m, int *rank)。 2020年 11月 MPI并行程序設(shè)計 22/217 更新的 Hello World(c) include include main( int argc, char *argv[] ) { int myid, numprocs。 MPI_Init( amp。argc, amp。argv )。 MPI_Comm_rank( MPI_COMM_WORLD, amp。myid )。 MPI_Comm_size( MPI_COMM_WORLD, amp。numprocs )。 printf(“I am %d of %d\n, myid, numprocs )。 MPI_Finalize()。 } 2020年 11月 MPI并行程序設(shè)計 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。, myid, ‘of39。, numprocs call MPI_FINALIZE( ierr ) end 2020年 11月 MPI并行程序設(shè)計 24/217 ? :運行結(jié)果 ? [dair@node01 ~]$ mpicc –o hello1 ? [dair@node01 ~]$ mpirun np 4 hello1 I am 0 of 4 I am 1 of 4 I am 2 of 4 I am 3 of 4 ? [dair@node01 ~]$ 計算機打印字符 我們輸入的命令 2020年 11月 MPI并行程序設(shè)計 25/217 有消息傳遞 Greeting 進程 0rank=0..Send()...進程 1rank=1進程 2rank=2進程 3rank=3..Send().....Send().....Recv()...2020年 11月 MPI并行程序設(shè)計 26/217 greetings(c) include include main(int argc, char* argv[]) { int numprocs, myid, source。 MPI_Status status。 char message[100]。 MPI_Init(amp。argc, amp。argv)。 MPI_Comm_rank(MPI_COMM_WORLD, amp。myid)。 MPI_Comm_size(MPI_COMM_WORLD, amp。numprocs)。 2020年 11月 MPI并行程序設(shè)計 27/217 有消息傳遞 greetings(c) if (myid != 0) { strcpy(message, Hello World!)。 MPI_Send(message,strlen(message)+1, MPI_CHAR, 0,99, MPI_COMM_WORLD)。 } else {/* myid == 0 */ for (source = 1。 source numprocs。 source++) { MPI_Recv(message, 100, MPI_CHAR, source, 99, MPI_COMM_WORLD, amp。status)。 printf(%s\n, message)。 } } MPI_Finalize()。 } /* end main */ 2020年 11月 MPI并行程序設(shè)計 28/217 解剖 greetings程序 ? 頭文件 : ? int MPI_Init(int *argc, char ***argv) – 啟動 MPI環(huán)境 ,標志并行代碼的開始 . – 并行代碼之前 ,第一個 mpi函數(shù) (除 MPI_Initialize()外 ). – 要求 main必須帶能運行 ,否則出錯 . ? 通信子 (通信空間 ): MPI_COMM_WORLD: – 一個通信空間是一個進程組和一個上下文的組合 .上下文可看作為組的超級標簽 ,用于區(qū)分不同的通信子 . – 在執(zhí)行函數(shù) MPI_Init之后 ,一個 MPI程序的所有進程形成一個缺省的組 ,這個組的通信子即被寫作 MPI_COMM_WORLD. – 該參數(shù)是 MPI通信操作函數(shù)中必不可少的參數(shù) ,用于限定參加通信的進程的范圍 . 2020年 11月 MPI并行程序設(shè)計 29/217 解剖 greetings程序 ? int MPI_Comm_size ( MPI_Comm m, int *size ) – 獲得通信空間 m中規(guī)定的組包含的進程的數(shù)量 . – 指定一個 municator,也指定了一組共享該空間的進程 , 這些進程組成該 municator的 group. ? int MPI_Comm_rank ( MPI_Comm m, int *rank ) – 得到本進程在通信空間中的 rank值 ,即在組中的邏輯編號 (從 0開始 ). ? int MPI_Finalize() – 標志并行代碼的結(jié)束 ,結(jié)束除主進程外其它進程 . – 之后串行代碼仍可在主進程 (rank = 0)上運行 (如果必須 ). 2020年 11月 MPI并行程序設(shè)計 30/217 消息傳送 (先可不關(guān)心參數(shù)含義 ) MPI_Send(A, 10, MPI_DOUBLE, 1,99, MPI_COMM_WORLD)。 MPI_Recv(B, 20, MPI_DOBULE, 0, 99, MPI_COMM_WORLD, amp。status)。 數(shù)據(jù)傳送 + 同步操作 ? 需要發(fā)送方與接收方合作完成 . Data Process 0 Process 1 發(fā)送請求 Yes Data Data Data Data Data Data Data Data Time 2020年 11月 MPI并行程序設(shè)計 31/217 最基本的 MPI MPI調(diào)用借口的總數(shù)雖然龐大,但根據(jù)實際編寫 MPI的經(jīng)驗,常用的 MPI調(diào)用的個數(shù) 確實 有限。下面是 6個最基本的 MPI函數(shù)。 1. MPI_Init(…)。 2. MPI_Comm_size(…)。 3. MPI_Comm_rank(…)。 4. MPI_Send(…)。 5. MPI_Recv(…)。 6. MPI_Finalize()。 MPI_Init(…)。 … 并行代碼 。 … MPI_Fainalize()。 只能有串行代碼 。 2020年 11月 MPI并行程序設(shè)計 32/217 講座內(nèi)容提示 ? 基本的 MPI – 基本概念 – 點到點通信 (Point to point) ? MPI中 API的主要內(nèi)容,為 MPI最基本,最重要的內(nèi)容 – MPI程序的編譯和運行 ? 深入 MPI – 用戶自定義 (/派生 )數(shù)據(jù)類型 (Userdefined(Derived) data type) ? 事實上 MPI的所有數(shù)據(jù)類型均為 MPI自定義類型 – 支持異構(gòu)系統(tǒng) – 允許消息來自不連續(xù)的或類型不一致的存儲區(qū) (結(jié)構(gòu) ,數(shù)組散元 ) – 集合通信 (Collective) ? 數(shù)據(jù)移動 , 數(shù)據(jù)聚集,同步 ? 基于 point to point 構(gòu)建 – MPI環(huán)境管理函數(shù) ? 組 ,上下文和通信空間 /通信子的管理 ? 實例 2020年 11月 MPI并行程序設(shè)計 33/217 Point to Point ? 單個進程對單個進程的通信 ,重要且復(fù)雜 ? 術(shù)語 – Blocking(阻塞 ) :一個例程須等待操作完成才返回 ,返回后用戶可以重新使用調(diào)用中所占用的資源 . – Nonblocking(非阻塞 ):一個例程不必等待操作完成便可返回 ,但這并不意味著所占用的資源可被重用 . – Local(本地 ):不依賴于其它進程 . – Nonlocal(非本地 ):依賴于其它進程 . 2020年 11月 MPI并行程序設(shè)計 34/217 Blocking Send int MPI_Send(void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm m)。 IN buf 發(fā)送緩沖區(qū)的起始地址 IN count 要發(fā)送信息的 元素 個數(shù) IN datatype 發(fā)送信息的數(shù)據(jù)類型 IN dest 目標進程的 rank值 IN tag 消息標簽 IN m 通信子 2020年 11月 MPI并行程序設(shè)計 35/217 Blocking Receive int MPI_Recv(void* buf, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm m, MPI_Status *status)。 OUT buf 接收 緩沖區(qū)的起始地址 IN count 要接收信息的 元素 個數(shù) IN datatype 接收信息的數(shù)據(jù)類型 IN source 源進程的 rank值 IN tag 消息標簽 IN m 通信子 OUT status status對象 ,包含實際接收到的消息的有關(guān)信息 2020年 11月 MPI并行程序設(shè)計 36/217 MPI消息 ? MPI消息包括信封和數(shù)據(jù)兩個部分,信封指出了發(fā)送或接收消息的對象及相關(guān)信息,而數(shù)據(jù)是本消息將要傳遞的內(nèi)容 ? 數(shù)據(jù): 起始地址、數(shù)據(jù)個數(shù)、數(shù)據(jù)類型 ? 信封: 源 /目的、標識、通信域 2020年 11月 MPI并行程序設(shè)計 37/217 消息數(shù)據(jù) ? 由 count個類型為 datatype的連續(xù)數(shù)據(jù)空間組成 , 起始地址為 buf ? 不是以字節(jié)數(shù) , 而是以元素的個數(shù)指定消息的長度 ? count可以是零 , 這種情況下消息的數(shù)據(jù)部分是空的 ? MPI基本數(shù)據(jù)類型相應(yīng)于宿主語言的基本數(shù)據(jù)類型 2020年 11月 MPI并行程序設(shè)計 38/217 什么是緩沖區(qū) ? 1. 應(yīng)用程序中說明的變量 ,在消息傳遞語句中又用作緩沖區(qū)的起始位置 . 2. 也可表示由系統(tǒng) (不同用戶 )創(chuàng)建和管理的某一存儲區(qū)域 ,在消息傳遞過程中用于暫存放消息 .也被稱為系統(tǒng)緩沖區(qū) . 3. 用戶可設(shè)置一定大小的存儲區(qū)域 ,用作中間緩沖區(qū)以保留可能出現(xiàn)在其應(yīng)用程序中的任意消息 . 進程 P A M 進程 Q B 進程 P A M S 進程 Q B 進程 P A M T 進程 Q B 系統(tǒng)緩沖區(qū) 用戶指定緩沖區(qū) 用戶緩沖區(qū) 2020年 11月 MPI并行程序設(shè)計 39/217 ? MPI標識一條消息的信息包含四個域 : – Source: 發(fā)送進程隱式確定 ,由進程的 rank值唯一標識 – Destination: Send函數(shù)參數(shù)確定 – Tag: Send函數(shù)參數(shù)確定 ,用于識別不同的消息 (0,UB),UB:MPI_TAG_UB=32767. – Communicator: 缺省 MPI_COMM_WORLD ? Group:有限 /N, 有序 /Rank [0,1,2,…N 1] ? Contex:Super_tag,用于標識該通訊空間 . 消息信封 ?2020年 11月 MPI并行程序設(shè)計 40/217 2020年 11月 MPI并行程序設(shè)計 41/217 消息匹配 ? 接收 buffer必須至少可以容納 count個由 datatype參數(shù)指明類型的數(shù)據(jù) . 如果接收 buf太小 , 將導(dǎo)致溢出、出錯 . ? 消息匹配 – 參數(shù)匹配 dest,tag,m/ source,tag,m – Source == MPI_ANY_SOURCE: 接收任
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1