




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、mpi的擴展mpi-2,譚光明 副研究員 國家智能計算機研究開發中心 計算機體系結構國家重點實驗室(籌,mpi-1的不足,不支持進程個數的動態改變 不支持單邊通信模式 不支持并行文件操作,應用需求,動態任務樹 精確成型應用實例,mpi-2的解決方案,對通信域進行擴展 組內通信域 組間通信域 具體實現方式 動態派生進程(有父子關系) 獨立進程間通信(c/s關系) socket通信(轉換socket通信,組間通信域的點到點通信,例子,mpi_send(buf,count,datatype,dest,tag,intercomm) 與組內通信的不同:1 dest的含義;2 intercomm mpi_
2、recv(buf,count,datatype,source,tag, intercomm,status) 與組內通信的不同:1 source的含義;2 intercomm,組間通信域的組通信,例子,mpi_alltoall(sendbuf,sendcount,sendtype,recvbuf,recvcount,recvtype,intercomm,圖示,組間通信域的一對多和多對一,本地一個發,對方所有的收 本地一個收,對方所有的發,例子,mpi_bcast(buf,count,datatype,root, intercomm,主進程組中動態進程的創建,mpi_comm_spawn(cmd,
3、argv,maxprocs, info,root,comm,intercomm,aryerrcodes) 最多派生maxprocs個進程,root是參數檢查的進程,派生進程組得到組間通信域,mpi_comm_get_parent(parent) 在派生進程組中調用 在初始化之后 三次同步 父進程同步 子進程之間同步 父子進程之間同步,源程序,主進程組程序(獨立的mpi程序,派生進程組程序(獨立的mpi程序,啟動,創建多組子進程,mpi_comm_spawn_multiple(count,cmdary,argvary,maxprocsary,infoary,root, comm,intercom
4、m,errcodeary) 各組子進程是不同的,獨立進程間通信,服務端 mpi_open_port(info,port_name) mpi_comm_accept(port_name,info,root,comm,intercomm) 在打開的特定端口上等待連接,獨立進程間通信(續,客戶端 mpi_comm_connect(port_name,info, root,comm,intercomm) 請求與指定端口連接 mpi_comm_disconnect(comm,問題,客戶端每次連接的端口可能是不同的,方案,服務端 建立特定名字和端口字符串的聯系 mpi_publish_name(servi
5、cename,info,portname) 客戶端 根據名字得到特定的端口字符串 mpi_lookup_name(servicename,info,portname,基于socket的通信,mpi_comm_join(fd,intercomm) 將socket通信轉化為mpi通信,什么是遠程存儲訪問(單邊通信)? remote memory access/one-sided communication,打電話 留字條 閱讀email,通信窗口,開辟自己內存的一段空間作為對外聯系的窗口,任何進程都可以通過對窗口的訪問來達到數據通信的目的,窗口操作的分類,窗口讀 mpi_get 窗口寫 mpi_p
6、ut 窗口運算 mpi_accumulate,窗口的創建,mpi_win_create(base, size, disp_unit, info, comm ,win,注意,窗口創建操作是組調用,所有的進程必須都執行 得到的窗口是組窗口,與給定的通信域密切相關 用同一窗口對象可以訪問所有其它進程的窗口,窗口的釋放,mpi_win_free(win) 當所有窗口都不再使用時釋放 是組調用,遠程更新(向窗口寫,mpi_put(origin_addr, origin_count, origin_datatype, target_rank, target_disp, target_count, targ
7、et_datatype, win,注意,不同進程的窗口是通過進程標識來區別的 對不同進程窗口的操作使用的是同一窗口句柄 偏移是以創建窗口時指定的偏移單位大小計算的,從遠程得到數據(從窗口讀,mpi_get(origin_addr, origin_count, origin_datatype, target_rank, target_disp, target_count, target_datatype, win,注意,寫窗口的逆操作 不同進程的窗口是通過進程標識來區別的 對不同進程窗口的操作使用的是同一窗口句柄 偏移是以創建窗口時指定的偏移單位大小來計算的,對遠程數據的計算(窗口數據運算,mp
8、i_accumulate(origin_addr, origin_count, origin_datatype, target_rank, target_disp,target_count, target_datatype, op, win,圖示,同時執行了窗口的讀和寫操作,問題,訪問沖突問題(r,w) 讀讀(rr) 讀寫(rw) 寫讀(wr) 寫寫(ww) 解決辦法 窗口同步管理,窗口同步管理,柵欄方式 握手方式 鎖方式,柵欄方式,mpi_win_fence(assert, win) assert = 0,窗口操作前,窗口操作完成,窗口操作,示例,前后兩次窗口操作互不干擾,握手方式,第一次握
9、手,為窗口訪問作準備 第二次握手,窗口訪問完成,發起訪問方的操作順序,mpi_win_start(group, assert, win) 啟動第一次握手(開始窗口訪問) 窗口操作 mpi_win_complete(win) 啟動第二次握手(結束窗口訪問,接收訪問方的操作過程,mpi_win_post(group, assert, win) 啟動第一次握手(準備窗口操作) 等待被訪問 mpi_win_wait(win) 啟動第二次握手(窗口操作結束,圖示,鎖方式,借鑒臨界區的概念 加鎖后只允許自己訪問 開鎖后將訪問權讓給別人,加鎖語句,mpi_win_lock(lock_type, rank,
10、assert, win) 共享鎖:允許其它的進程同時加共享鎖 互斥鎖:不允許其它的進程再加鎖,開鎖語句,mpi_win_unlock(rank, win) 允許其它的進程加鎖,圖示,練習,請用單邊通信重新實現jacobi迭代的例子。 請寫一個簡單的動態進行創建的例子,并行文件i/o的分類,顯式偏移的文件i/o 視口文件i/o 共享文件i/o,一些基本操作,并行文件打開,mpi_file_open(comm, filename, amode, info, fh) 文件打開 組調用,amode必須都相同 fh是一個組句柄(與win類似) 與用c/fortran打開文件不同,文件打開方式,文件關閉,
11、mpi_file_close(fh) 注意:組調用,刪除指定的文件,mpi_file_delete(filename, info,文件大小,mpi_file_set_size(fh,size) 組調用,所有的size都相同 mpi_file_get_size(fh,size,文件進程組與文件打開模式,mpi_file_get_group(fh,group) 返回句柄fh對應的進程組group mpi_file_get_amode(fh, amode) 返回打開文件時指定的模式,具有顯式偏移的文件操作,阻塞顯式偏移并行文件讀寫,mpi_file_read_at(fh, offset, buf,
12、count, datatype,status,寫文件,mpi_file_write_at(fh, offset, buf, count, datatype,status,組調用阻塞顯式偏移并行文件讀寫,mpi_file_read_at_all(fh, offset,buf, count,datatype,status) 組調用,所有進程都執行了一次mpi_file_read_at mpi_file_write_at_all(fh, offset,buf, count,datatype,status) 組調用,所有進程都執行了一次mpi_file_write_at,非阻塞顯式偏移并行文件讀寫,m
13、pi_file_iread_at(fh, offset,buf, count, datatype, request) mpi_file_iwrite_at(fh, offset,buf, count, datatype, request) 同非阻塞通信的基本含義,調用返回并不意味著操作的完成,完成形式,mpi_wait mpi_test 與非阻塞通信的完成調用形式完全相同,非阻塞組調用顯式偏移并行文件讀寫,具有顯式的開始與結束形式 mpi_file_read_at_all_begin(fh, offset, buf, count, datatype) 組調用讀開始 mpi_file_read_
14、at_all_end(fh, buf, status) 組調用讀結束,寫操作,mpi_file_write_at_all_begin(fh, offset, buf, count, datatype) 組調用寫開始 mpi_file_write_at_all_end(fh, buf, status) 組調用寫結束,視口文件讀寫,特點:隱式文件指針 取文件的一部分形成視口,然后對該視口進行操作,每個進程把視口看作是整個文件,文件視口,文件類型是在基本類型的基礎上形成的自定義數據類型,文件視口的定義,mpi_file_set_view(fh, disp,etype, filetype, datar
15、ep,info,數據表示,native(效率最高,移植性最差) internal (效率一般,移植性一般) external32(效率最低,移植性最好,文件視口的定義(續,組調用 偏移的單位是字節 視口數據是連續的 文件句柄的含義轉換,視口信息的獲取,mpi_file_get_view(fh, disp,etype, filetype, datarep) 得到偏移,基本類型,文件類型以及數據表示等信息,當前視口指針偏移,mpi_file_get_position(fh, offset) 文件視口句柄,視口偏移,絕對偏移,mpi_file_get_byte_offset(fh, offset,
16、disp) 給定相對偏移offset,給出絕對偏移disp,阻塞方式的視口讀寫,mpi_file_read(fh, buf,count,datatype, status) 從視口當前位置讀數據 mpi_file_write(fh, buf,count,datatype, status) 向視口當前位置寫數據,阻塞方式的視口文件組調用,mpi_file_read_all(fh, buf,count, datatype,status) 組內所有進程都讀 mpi_file_write_all(fh, buf,count, datatype,status) 組內所有進程都寫,非阻塞視口文件讀寫,mpi
17、_file_iread(fh, buf, count, datatype, request) 非阻塞視口文件讀 mpi_file_iwrite(fh, buf, count,datatype, request) 非阻塞視口文件寫,完成操作,mpi_wait mpi_test 同非阻塞的通信調用形式,非阻塞視口組調用,mpi_file_read_all_begin(fh, buf, count,datatype) 組內進程都執行非阻塞的讀操作 mpi_file_read_all_end(fh, buf, status) 組調用讀操作完成,組調用寫操作,mpi_file_write_all_beg
18、in(fh, buf, count,datatype) 組調用寫操作開始 mpi_file_write_all_end(fh, buf, status) 組調用寫操作完成,共享文件操作,基于視口文件操作,但視口文件指針只有一個,即共享指針 任何文件對指針的操作都同時影響其它的文件 各個進程對視口定義有什么要求,移動共享視口指針,mpi_file_seek_shared(fh, offset, whence,阻塞共享文件讀寫,mpi_file_read_shared(fh, buf,count, datatype,status) 共享讀 mpi_file_write_shared(fh, buf
19、, count, datatype,status) 共享寫,阻塞共享文件組讀寫,mpi_file_read_ordered(fh, buf, count, datatype, status) 組內進程依次讀 mpi_file_write_ordered(fh, buf, count, datatype, status) 組內進程依次寫,非阻塞共享指針文件操作,mpi_file_iread_shared(fh, buf, count, datatype,request) 非阻塞讀 mpi_file_iwrite_shared(fh, buf, count,datatype,request) 非阻
20、塞寫,完成調用,mpi_wait mpi_test 同非阻塞通信形式,非阻塞共享文件組讀寫,mpi_file_read_ordered_begin(fh, buf, count, datatype) 啟動非阻塞組讀操作 mpi_file_read_ordered_end(fh, buf, status) 完成非阻塞組讀操作,寫操作,mpi_file_write_ordered_begin(fh, buf, count, datatype) 啟動非阻塞組調用寫操作 mpi_file_write_ordered_end(fh, buf, status) 完成非阻塞組調用寫操作,分布式數組文件的存取,mpi_type_create_darray(size,rank,ndims,array_of_gsizes,array_of_distribs, array_of_dargs,array_of_psizes,order,oldtype,ne
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 神奇動物面試題及答案
- 航空航天復合材料 課件第1章 知識點4 纖維(B纖維、C纖維)
- 音樂院校碩士考試試題及答案
- 增強在華留學生心理健康支持體系
- 中學思政教育
- 2025年中國男士夾克行業市場全景分析及前景機遇研判報告
- 影院場務培訓
- 臺賬規范的培訓
- 網絡安全防范培訓
- 傳統文化元素與環境藝術設計的碰撞運用
- 湖南鄉村教育現狀分析報告
- 網絡安全技術與攻防演練
- 鐵路車輛-鐵路車輛的運用與檢修
- 火鍋店領班的崗位職責和工作流程
- 二人合伙協議書(電子版)
- 上門廚師項目商業計劃書
- 第35屆中國化學奧林匹克(初賽競賽)試題及參考答案
- 許可證有效期內輻射安全和防護工作總結
- 四川省中小流域暴雨洪水計算表格(尾礦庫洪水計算)
- 山東大學齊魯醫學院
- 椅子部件圖紙
評論
0/150
提交評論