您的位置:網(wǎng)站首頁(yè) > 優(yōu)秀論文 > 正文
MPI編程的對(duì)象模型
作者:葛啟云來(lái)源:原創(chuàng)日期:2012-08-11人氣:1811
從理論上來(lái)說(shuō),MPI所有的通信功能可以用它的六個(gè)基本的調(diào)用來(lái)實(shí)現(xiàn):MPI初始化,它是MPI程序的第一個(gè)調(diào)用,完成MPI程序的所有初始化工作。MPI結(jié)束,它是MPI程序的最后一個(gè)調(diào)用,它是MPI程序的最后一條可執(zhí)行語(yǔ)句,否則程序的運(yùn)行結(jié)果實(shí)不可預(yù)知的。當(dāng)前進(jìn)程標(biāo)識(shí),這一調(diào)用返回調(diào)用進(jìn)程在給定的通信域中的進(jìn)程標(biāo)識(shí)號(hào),有了這一標(biāo)識(shí)號(hào),不同的進(jìn)程就可以將自身和其它的進(jìn)程區(qū)別開來(lái),實(shí)現(xiàn)各進(jìn)程的并行和協(xié)作。在MPI中,進(jìn)程標(biāo)識(shí)號(hào)是從0開始編號(hào)的。通信子(Communicator)包括通信組和通信上下文。通信組即所有參與通信的進(jìn)程的集合,通信上下文提供一個(gè)相對(duì)獨(dú)立的通信區(qū)域,不同的消息在通信的上下文中進(jìn)行傳遞,不同上下文的消息互不干涉。通訊域包含的進(jìn)程數(shù),這一調(diào)用返回給定的通信域中所包含的進(jìn)程的個(gè)數(shù),不同的進(jìn)程通過(guò)這一調(diào)用得知在給定的通信域中一共有多少個(gè)進(jìn)程在并行執(zhí)行。消息發(fā)送,把緩沖區(qū)中coun個(gè)datatype數(shù)據(jù)類型的數(shù)據(jù)發(fā)送到目的進(jìn)程dest,本次發(fā)送的消息標(biāo)識(shí)是tag,使用這一標(biāo)識(shí),可以把本次發(fā)送的消息和本進(jìn)程向同一目的進(jìn)程發(fā)送的其它消息區(qū)別開來(lái)。發(fā)送緩沖區(qū)是由count個(gè)類型為datatype的連續(xù)數(shù)據(jù)空間組成,起始地址為buf。其中datatype數(shù)據(jù)類型可以是MPI的預(yù)定義類型,也可以是用戶自定義的類型。消息接收,從指定的進(jìn)程source接收消息,并且該消息的數(shù)據(jù)類型和消息標(biāo)識(shí)和本接收進(jìn)程指定的datatype和tag相一致,接收到的消息所包含的數(shù)據(jù)元素的個(gè)數(shù)最多不能超過(guò)count。接收緩沖區(qū)是由count個(gè)類型為datatype的連續(xù)元素空間組成,由datatype指定其類型,起始地址為buf.接收消息的長(zhǎng)度必須小于或等于接收緩沖區(qū)的長(zhǎng)度,這是因?yàn)槿绻邮盏降臄?shù)據(jù)過(guò)大,MPI沒(méi)有截?cái)?,接收緩沖區(qū)會(huì)發(fā)生溢出錯(cuò)誤,因此編程者要保證接收緩沖區(qū)的長(zhǎng)度不小于發(fā)送數(shù)據(jù)的長(zhǎng)度。
MPI的兩種最基本的并行程序設(shè)計(jì)模式是對(duì)等模式和主從模式??梢哉f(shuō)絕大部分MPI的程序都是這兩種模式之一或二者的組合。MPI程序一般是SPMD程序,當(dāng)然也可以用MPI來(lái)編寫MPMD程序,但是,所有的MPMD程序,都可以用SPMD程序來(lái)表達(dá),二者的表達(dá)能力是相同的。
三、MPI的對(duì)象化
由上節(jié)的描述可知,每個(gè)并行程序的開始都都需要初始化MPI運(yùn)行環(huán)境,而程序最終需要退出MPI環(huán)境,而每個(gè)進(jìn)程都需要知道他在通信域的大小及其在通信域內(nèi)的序號(hào),因此我們將MPI包裝成一個(gè)類CMPIObject,
CMPIObject.h
#includeintgetRank();
intgetSize();
inlineintsendArray(double*,intcount,intdest,inttag);
inlinetintrecvArray(double*,intcout,intsource,inttah);//等等,其他函數(shù)}
該類在構(gòu)造函數(shù)時(shí)初始化MPI環(huán)境,在析構(gòu)函數(shù)中推出MPI環(huán)境,如下代碼演示了,如何構(gòu)造CMPIObject對(duì)象。
//##########CMPIObject.cpp#########//
CMPIObject::CMPIObject(){
MPI_Init():
MPI_Comm_rank(MPI_COMM_WORLD,&m_nRank);
MPI_Comm_size(MPI_COMM_WORLD,&m_nSize);}
CMPIObject::~CMPIObject{MPI_Finalize();}
使用如上CMPIObject類,簡(jiǎn)化了MPI庫(kù)函數(shù)的應(yīng)用,有助于MPI在面向?qū)ο蟪绦蛑械膽?yīng)用。
四、總結(jié)
面向?qū)ο缶幊趟枷胧悄壳败浖J降闹髁鳎哂泻芎玫闹赜眯?。將MPI庫(kù)函數(shù)用類包裝,可以方便研究人員使用。本文為MPI的包裝提供了一個(gè)很好的構(gòu)想,希望后繼者能夠?qū)⑵渫晟啤?
MPI的兩種最基本的并行程序設(shè)計(jì)模式是對(duì)等模式和主從模式??梢哉f(shuō)絕大部分MPI的程序都是這兩種模式之一或二者的組合。MPI程序一般是SPMD程序,當(dāng)然也可以用MPI來(lái)編寫MPMD程序,但是,所有的MPMD程序,都可以用SPMD程序來(lái)表達(dá),二者的表達(dá)能力是相同的。
三、MPI的對(duì)象化
由上節(jié)的描述可知,每個(gè)并行程序的開始都都需要初始化MPI運(yùn)行環(huán)境,而程序最終需要退出MPI環(huán)境,而每個(gè)進(jìn)程都需要知道他在通信域的大小及其在通信域內(nèi)的序號(hào),因此我們將MPI包裝成一個(gè)類CMPIObject,
CMPIObject.h
#includeintgetRank();
intgetSize();
inlineintsendArray(double*,intcount,intdest,inttag);
inlinetintrecvArray(double*,intcout,intsource,inttah);//等等,其他函數(shù)}
該類在構(gòu)造函數(shù)時(shí)初始化MPI環(huán)境,在析構(gòu)函數(shù)中推出MPI環(huán)境,如下代碼演示了,如何構(gòu)造CMPIObject對(duì)象。
//##########CMPIObject.cpp#########//
CMPIObject::CMPIObject(){
MPI_Init():
MPI_Comm_rank(MPI_COMM_WORLD,&m_nRank);
MPI_Comm_size(MPI_COMM_WORLD,&m_nSize);}
CMPIObject::~CMPIObject{MPI_Finalize();}
使用如上CMPIObject類,簡(jiǎn)化了MPI庫(kù)函數(shù)的應(yīng)用,有助于MPI在面向?qū)ο蟪绦蛑械膽?yīng)用。
四、總結(jié)
面向?qū)ο缶幊趟枷胧悄壳败浖J降闹髁鳎哂泻芎玫闹赜眯?。將MPI庫(kù)函數(shù)用類包裝,可以方便研究人員使用。本文為MPI的包裝提供了一個(gè)很好的構(gòu)想,希望后繼者能夠?qū)⑵渫晟啤?
欄目分類
熱門排行
推薦信息
- 白族甲馬藝術(shù)中“夸張”手法的運(yùn)用及其審美價(jià)值
- 傳統(tǒng)筆墨在當(dāng)代山水畫中的表現(xiàn)方法分析
- 探析石魯少年時(shí)代的鄉(xiāng)村學(xué)習(xí)生活對(duì)其藝術(shù)成長(zhǎng)的影響
- 數(shù)字媒體藝術(shù)與平面設(shè)計(jì)的關(guān)系分析
- 文化創(chuàng)意產(chǎn)業(yè)背景下視覺(jué)傳達(dá)設(shè)計(jì)專業(yè)跨學(xué)科創(chuàng)新人才培養(yǎng)策略研究
- 現(xiàn)代社會(huì)平陽(yáng)木版年畫的現(xiàn)狀與發(fā)展
- 童韻稚趣——繪畫創(chuàng)作中的探究與實(shí)踐
- 惠州市博物館館藏文物元素在文創(chuàng)產(chǎn)品設(shè)計(jì)中的創(chuàng)新與傳承探究
- 高職院校美育課程教學(xué)模式的反思與重構(gòu) ——以《書法審美與實(shí)踐》教學(xué)模式改革為例
- 交叉學(xué)科視域下動(dòng)畫專業(yè)與其他學(xué)科深度融合策略探究
期刊知識(shí)
- 2025年中科院分區(qū)表已公布!Scientific Reports降至三區(qū)
- 官方認(rèn)定!CSSCI南大核心首批191家“青年學(xué)者友好期刊名單”
- 2023JCR影響因子正式公布!
- 國(guó)內(nèi)核心期刊分級(jí)情況概覽及說(shuō)明!本篇適用人群:需要發(fā)南核、北核、CSCD、科核、AMI、SCD、RCCSE期刊的學(xué)者
- 我用了一個(gè)很復(fù)雜的圖,幫你們解釋下“23版最新北大核心目錄有效期問(wèn)題”。
- 重磅!CSSCI來(lái)源期刊(2023-2024版)最新期刊目錄看點(diǎn)分析!全網(wǎng)首發(fā)!
- CSSCI官方早就公布了最新南核目錄,有心的人已經(jīng)拿到并且投入使用!附南核目錄新增期刊!
- 北大核心期刊目錄換屆,我們應(yīng)該熟知的10個(gè)知識(shí)點(diǎn)。
- 注意,最新期刊論文格式標(biāo)準(zhǔn)已發(fā)布,論文寫作規(guī)則發(fā)生重大變化!文字版GB/T 7713.2—2022 學(xué)術(shù)論文編寫規(guī)則
- 盤點(diǎn)那些評(píng)職稱超管用的資源,1,3和5已經(jīng)“絕種”了