版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、1,第六講消息傳遞編程接口 MPI,三、 MPI 數(shù)據(jù)類型,2,MPI 數(shù)據(jù)類型,MPI 數(shù)據(jù)類型定義 MPI 數(shù)據(jù)類型的大小、上下界、域及相關(guān)函數(shù) MPI 新數(shù)據(jù)類型的創(chuàng)建、提交與釋放 MPI 數(shù)據(jù)的打包與解包,3,MPI 數(shù)據(jù)類型,MPI 原始數(shù)據(jù)類型,MPI 消息傳遞通常只能處理連續(xù)存放的同一類型的數(shù)據(jù),MPI 的數(shù)據(jù)類型只用于消息傳遞!,4,MPI 數(shù)據(jù)類型定義,MPI 數(shù)據(jù)類型由兩個相同長度的序列組成:類型序列和位移序列,t1, t2, t3, ., tn,d1, d2, d3, ., dn,ti 的取值為基本數(shù)據(jù)類型 di 表示位移,取值為整數(shù),以字節(jié)為單位 新建的數(shù)據(jù)類型稱為復(fù)合
2、數(shù)據(jù)類型,5,舉例,例:設(shè)數(shù)據(jù)類型 mytype 的數(shù)據(jù)類型圖為,(MPI_REAL,4),(MPI_REAL,12),(MPI_REAL,0),6,數(shù)據(jù)類型的大小,數(shù)據(jù)類型的大小,該數(shù)據(jù)類型中包含的數(shù)據(jù)長度,即字節(jié)數(shù),(t1,d1),(t2,d2),(t3,d3), ., (tn,dn),sizeof(t1) + sizeof(t2) + . + sizeof(tn),設(shè)一個數(shù)據(jù)了下的類型圖為,則它的大小為,例:設(shè)數(shù)據(jù)類型 mytype 的數(shù)據(jù)類型圖為,(real,4),(real,12),(real,0),則 mytype 的大小為 12,7,數(shù)據(jù)類型的上下界,(t1,d1),(t2,d2
3、),(t3,d3), ., (tn,dn),數(shù)據(jù)類型的下界:類型圖中的最小位移,即,數(shù)據(jù)類型的上界:,數(shù)據(jù)類型的域 (extent) :上界 下屆,8,數(shù)據(jù)類型的對界量,原始數(shù)據(jù)類型的對界量:由編譯系統(tǒng)決定,地址對界要求:一個數(shù)據(jù)類型在內(nèi)存中所占的字節(jié)數(shù)必須是其對界量的整數(shù)倍,地址對界修正量:使得新建數(shù)據(jù)類型的域能被其對界量整除的最小非負(fù)整數(shù),復(fù)合數(shù)據(jù)類型的對界量:其所包含的基本數(shù)據(jù)類型的對界量的最大值,9,舉例,例:假設(shè) MPI_DOUBLE_PRECISION 和 MPI_INTEGER 的對界量均為 4,MPI_BYTE 的對界量為 1,考慮下面的數(shù)據(jù)類型,(MPI_DOUBLE_PRE
4、CISION,0), (MPI_BYTE,12), (MPI_INTEGER,8),對界量為 ,上界為 ,下界為 ,域?yàn)?,地址對界修正量為 。,4,16,0,16,3,10,兩個特殊的數(shù)據(jù)類型,MPI_LB、MPI_UB,偽數(shù)據(jù)類型,大小為 0,它們的作用:人工指定新建數(shù)據(jù)類型的上下界,若數(shù)據(jù)類型中含 MPI_LB,則下界定義為 MPI_LB 的位移的最小值; 若數(shù)據(jù)類型中含 MPI_UB,則上界定義為 MPI_UB 的位移的最大值;,例:下面的數(shù)據(jù)類型的下界為 -4,(MPI_REAL,4), (MPI_LB,12), (MPI_REAL,0), (MPI_LB,-4),11,數(shù)據(jù)類型查詢
5、函數(shù),MPI_TYPE_EXTENT(datatype, extent),MPI_TYPE_SIZE(datatype, size),MPI_TYPE_UB(datatype, displacement),MPI_TYPE_LB(datatype, displacement),詳細(xì)用法見相關(guān)參考資料,12,新數(shù)據(jù)類型的創(chuàng)建,新數(shù)據(jù)類型創(chuàng)建函數(shù),MPI_TYPE_CONTIGUOUS MPI_TYPE_VECTOR、MPI_TYPE_HVECTOR MPI_TYPE_INDEXED、MPI_TYPE_HINDEXED MPI_TYPE_STRUCT,新數(shù)據(jù)類型的提交:MPI_TYPE_COMMI
6、T,若使用新數(shù)據(jù)類型進(jìn)行通信,則必須先提交 過渡數(shù)據(jù)類型不用提交,用完后就可直接釋放,新數(shù)據(jù)類型的釋放:MPI_TYPE_FREE,數(shù)據(jù)的打包和解包:MPI_PACK、MPI_UNPACK,13,MPI_TYPE_CONTIGUOUS,MPI_TYPE_CONTIGUOUS(count, oldtype, newtype),連續(xù)復(fù)制:將原數(shù)據(jù)類型 oldtype 按順序依次連續(xù)復(fù)制后,得到一個新的數(shù)據(jù)類型,注:oldtype 可以是原始數(shù)據(jù)類型,也可以是已創(chuàng)建的復(fù)合數(shù)據(jù)類型。,14,舉例,integer n, type1 parameter (n=100) real a(n) . . . .
7、call MPI_TYPE_CONTIGUOUS(n,MPI_REAL,type1,ierr) call MPI_TYPE_COMMIT(type1,ierr) call MPI_SENDRECV_REPLACE(a,1,type1,dst,111,src, 111,MPI_COMM_WORLD,status,ierr) . .,上面的消息傳遞等價于,call MPI_SENDRECV_REPLACE(a,100,MPI_REAL,dst,111, src,111,MPI_COMM_WORLD,status,ierr),15,MPI_TYPE_VECTOR,MPI_TYPE_VECTOR(co
8、unt,blocklen,stride, oldtype, newtype),創(chuàng)建向量數(shù)據(jù)類型:先連續(xù)復(fù)制 blocklen 個 oldtype 類型的數(shù)據(jù),形成一個數(shù)據(jù)塊;再通過等間隔地復(fù)制 count 個該數(shù)據(jù)塊而形成新的數(shù)據(jù)類型;相鄰兩個數(shù)據(jù)塊的起始位置的位移相差為 stride*extent(oldtype) 個字節(jié)。,16,舉例,integer n, type1 parameter (n=100) real A(n,n) . . . . call MPI_TYPE_VECTOR(n,1,n,MPI_REAL,type1,ierr) call MPI_TYPE_COMMIT(type1
9、,ierr) call MPI_SEND(A,1,type1,dst,.) . .,上面發(fā)送的是 A 的第一行。大家看看下面發(fā)送的是什么?,call MPI_TYPE_VECTOR(n-2,n-2,n,MPI_REAL,type1,ierr) call MPI_TYPE_COMMIT(type1,ierr) call MPI_SEND(A(2,2),1,type1,dst,.),思考:怎樣發(fā)送 A 的對角線?,17,MPI_TYPE_HVECTOR,MPI_TYPE_HVECTOR(count,blocklen,stride, oldtype, newtype),功能同 MPI_TYPE_VE
10、CTOR 唯一區(qū)別為這里的 stride 以字節(jié)為單位,18,MPI_TYPE_INDEXED,MPI_TYPE_INDEXED(count,array_of_blocklens, array_of_disps,oldtype,newtype),創(chuàng)建索引數(shù)據(jù)類型:該函數(shù)生成的新數(shù)據(jù)類型由 count 個數(shù)據(jù)塊構(gòu)成,第 i 個數(shù)據(jù)塊包含 array_of_bloklens(i) 個連續(xù)存放的 oldtype,第 i 個數(shù)據(jù)塊與首地址的偏移量(字節(jié)數(shù))為 array_of_disps(i)*extent(oldtype)。,可以看作是 MPI_TYPE_VECTOR 的擴(kuò)展,區(qū)別是每個數(shù)據(jù)塊的長度
11、可以不同,數(shù)據(jù)塊之間的間隔也可以不同。,19,MPI_TYPE_HINDEXED,MPI_TYPE_HINDEXED(count,array_of_blocklens, array_of_disps,oldtype,newtype),功能同 MPI_TYPE_INDEXED 唯一區(qū)別為這里的 array_of_disps 以字節(jié)為單位,20,MPI_TYPE_INDEXED,MPI_TYPE_STRUCT(count,array_of_blocklens, array_of_disps,array_of_types,newtype),創(chuàng)建結(jié)構(gòu)數(shù)據(jù)類型:與 MPI_TYPE_HINDEXED 的
12、區(qū)別在于每個數(shù)據(jù)塊的數(shù)據(jù)類型可以不同。這里的 array_of_disps 以字節(jié)為單位,該函數(shù)是最一般的新數(shù)據(jù)類型的構(gòu)造函數(shù),也是使用最廣泛的一個,正確使用此函數(shù)在實(shí)際應(yīng)用中非常重要,21,數(shù)據(jù)類型的提交與釋放,新數(shù)據(jù)類型的提交,新數(shù)據(jù)類型的釋放,MPI_TYPE_COMMIT(newdatatype),MPI_TYPE_FREE(newdatatype),22,地址函數(shù),MPI_ADDRESS(location, address),返回指定變量在內(nèi)存中的 “絕對” 地址,23,數(shù)據(jù)的打包,MPI_PACK(inbuf,incount,datatype,outbuf, outsize, po
13、sition, comm),將緩沖區(qū) inbuf 中的 incount 個類型為 datatype 的數(shù)據(jù)進(jìn)行打包,打包后的數(shù)據(jù)放在緩沖區(qū) outbuf 中。outsize 給出的是 outbuf 的總長度(字節(jié)數(shù)),comm 是發(fā)送打包數(shù)據(jù)時將使用的通信器。 position 是打包緩沖區(qū)中的位移,每次打包第一次調(diào)用 MPI_PACK 時用戶應(yīng)該將其置為 0,隨后 MPI_PACK 將自動修改它,使得它總是指向打包緩沖區(qū)中尚未使用部分的起始位置。每次調(diào)用 MPI_PACK 后的 position 實(shí)際上就是已打包數(shù)據(jù)的總長度。通過連續(xù)幾次對不同位置的數(shù)據(jù)進(jìn)行打包,就可以將不連續(xù)的數(shù)據(jù)放到一個連續(xù)的空間中,24,數(shù)據(jù)的解包,MPI_UNPACK(inbuf,insize,position,outbuf, outcount,dat
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026河北廊坊市公安局招聘勤務(wù)輔警12人備考題庫及答案詳解(新)
- 2026年金融投資分析師專業(yè)試題及參考答案
- 2026年醫(yī)學(xué)知識全面復(fù)習(xí)題庫疾病與診斷篇
- 2026年生物醫(yī)學(xué)家DNA檢測技術(shù)模擬考試題
- 2026年法學(xué)研究國際法與國內(nèi)法體系筆試題
- 2026年英語能力突破語法詞匯實(shí)戰(zhàn)題集
- 2025年36教育培訓(xùn)內(nèi)容開發(fā)與交付服務(wù)合同
- 水電站資產(chǎn)管理與評估方案
- 城市綠化工程施工管理方案
- 綠色屋頂施工實(shí)施方案
- 歌曲《我會等》歌詞
- 干部因私出國(境)管理有關(guān)要求
- 民爆物品倉庫安全操作規(guī)程
- 老年癡呆科普課件整理
- 2022年鈷資源產(chǎn)業(yè)鏈全景圖鑒
- 勾股定理復(fù)習(xí)導(dǎo)學(xué)案
- GB/T 22900-2022科學(xué)技術(shù)研究項(xiàng)目評價通則
- GB/T 6418-2008銅基釬料
- GB/T 16621-1996母樹林營建技術(shù)
- GB/T 14518-1993膠粘劑的pH值測定
- GB/T 14072-1993林木種質(zhì)資源保存原則與方法
評論
0/150
提交評論