您的位置:網(wǎng)站首頁(yè) > 優(yōu)秀論文 > 正文
MPI編程的對(duì)象模型
作者:葛啟云來源:原創(chuàng)日期:2012-08-11人氣:1845
從理論上來說,MPI所有的通信功能可以用它的六個(gè)基本的調(diào)用來實(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ū)別開來,實(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)程通過這一調(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ū)別開來。發(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ù)最多不能超過count。接收緩沖區(qū)是由count個(gè)類型為datatype的連續(xù)元素空間組成,由datatype指定其類型,起始地址為buf.接收消息的長(zhǎng)度必須小于或等于接收緩沖區(qū)的長(zhǎng)度,這是因?yàn)槿绻邮盏降臄?shù)據(jù)過大,MPI沒有截?cái)?,接收緩沖區(qū)會(huì)發(fā)生溢出錯(cuò)誤,因此編程者要保證接收緩沖區(qū)的長(zhǎng)度不小于發(fā)送數(shù)據(jù)的長(zhǎng)度。
MPI的兩種最基本的并行程序設(shè)計(jì)模式是對(duì)等模式和主從模式??梢哉f絕大部分MPI的程序都是這兩種模式之一或二者的組合。MPI程序一般是SPMD程序,當(dāng)然也可以用MPI來編寫MPMD程序,但是,所有的MPMD程序,都可以用SPMD程序來表達(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絕大部分MPI的程序都是這兩種模式之一或二者的組合。MPI程序一般是SPMD程序,當(dāng)然也可以用MPI來編寫MPMD程序,但是,所有的MPMD程序,都可以用SPMD程序來表達(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ù)據(jù)賦能大學(xué)生心理健康教育精準(zhǔn)實(shí)施
- 文化產(chǎn)業(yè)與旅游經(jīng)濟(jì)發(fā)展的雙向促進(jìn)
- 借力新媒體創(chuàng)新馬克思主義傳播范式
- 發(fā)揚(yáng)教育家精神 爭(zhēng)做新時(shí)代“大先生”
- 人工智能視域下思政教育工作圖景與路徑
- 數(shù)字化賦能高校藝術(shù)設(shè)計(jì)類專業(yè)OMO融合式教學(xué)創(chuàng)新研究
- 中國(guó)民間藝術(shù)在中職美術(shù)教學(xué)中的應(yīng)用探索
- 技術(shù)與藝術(shù)的交融——虛擬現(xiàn)實(shí)技術(shù)走進(jìn)數(shù)字媒體藝術(shù)課堂的教學(xué)研究
- 中國(guó)傳統(tǒng)造像中的寫實(shí)造型規(guī)律研究
- 文化自信視域下職業(yè)院校藝術(shù)鑒賞教學(xué)的美育浸潤(rùn)行動(dòng)實(shí)踐研究
期刊知識(shí)
- 2025年中科院分區(qū)表已公布!Scientific Reports降至三區(qū)
- 2023JCR影響因子正式公布!
- 國(guó)內(nèi)核心期刊分級(jí)情況概覽及說明!本篇適用人群:需要發(fā)南核、北核、CSCD、科核、AMI、SCD、RCCSE期刊的學(xué)者
- 我用了一個(gè)很復(fù)雜的圖,幫你們解釋下“23版最新北大核心目錄有效期問題”。
- 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)“絕種”了
- 職稱話題| 為什么黨校更認(rèn)可省市級(jí)黨報(bào)?是否有什么說據(jù)?還有哪些機(jī)構(gòu)認(rèn)可黨報(bào)?
- 《農(nóng)業(yè)經(jīng)濟(jì)》論文投稿解析,難度指數(shù)四顆星,附好發(fā)選題!