优胜从选择开始,我们是您最好的选择!—— 中州期刊联盟(新乡市博翰文化传媒有限公司)
0373-5939925
2851259250@qq.com
我要检测 我要投稿 合法期刊查询
您的位置:网站首页 > 优秀论文 > 正文

MPI编程的对象模型

作者:葛启云来源:原创日期:2012-08-11人气:1496
从理论上来说,MPI所有的通信功能可以用它的六个基本的调用来实现:MPI初始化,它是MPI程序的第一个调用,完成MPI程序的所有初始化工作。MPI结束,它是MPI程序的最后一个调用,它是MPI程序的最后一条可执行语句,否则程序的运行结果实不可预知的。当前进程标识,这一调用返回调用进程在给定的通信域中的进程标识号,有了这一标识号,不同的进程就可以将自身和其它的进程区别开来,实现各进程的并行和协作。在MPI中,进程标识号是从0开始编号的。通信子(Communicator)包括通信组和通信上下文。通信组即所有参与通信的进程的集合,通信上下文提供一个相对独立的通信区域,不同的消息在通信的上下文中进行传递,不同上下文的消息互不干涉。通讯域包含的进程数,这一调用返回给定的通信域中所包含的进程的个数,不同的进程通过这一调用得知在给定的通信域中一共有多少个进程在并行执行。消息发送,把缓冲区中coun个datatype数据类型的数据发送到目的进程dest,本次发送的消息标识是tag,使用这一标识,可以把本次发送的消息和本进程向同一目的进程发送的其它消息区别开来。发送缓冲区是由count个类型为datatype的连续数据空间组成,起始地址为buf。其中datatype数据类型可以是MPI的预定义类型,也可以是用户自定义的类型。消息接收,从指定的进程source接收消息,并且该消息的数据类型和消息标识和本接收进程指定的datatype和tag相一致,接收到的消息所包含的数据元素的个数最多不能超过count。接收缓冲区是由count个类型为datatype的连续元素空间组成,由datatype指定其类型,起始地址为buf.接收消息的长度必须小于或等于接收缓冲区的长度,这是因为如果接收到的数据过大,MPI没有截断,接收缓冲区会发生溢出错误,因此编程者要保证接收缓冲区的长度不小于发送数据的长度。
MPI的两种最基本的并行程序设计模式是对等模式和主从模式。可以说绝大部分MPI的程序都是这两种模式之一或二者的组合。MPI程序一般是SPMD程序,当然也可以用MPI来编写MPMD程序,但是,所有的MPMD程序,都可以用SPMD程序来表达,二者的表达能力是相同的。
三、MPI的对象化
由上节的描述可知,每个并行程序的开始都都需要初始化MPI运行环境,而程序最终需要退出MPI环境,而每个进程都需要知道他在通信域的大小及其在通信域内的序号,因此我们将MPI包装成一个类CMPIObject,
CMPIObject.h
#includeintgetRank();
intgetSize();
inlineintsendArray(double*,intcount,intdest,inttag);
inlinetintrecvArray(double*,intcout,intsource,inttah);//等等,其他函数}
该类在构造函数时初始化MPI环境,在析构函数中推出MPI环境,如下代码演示了,如何构造CMPIObject对象。
//##########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类,简化了MPI库函数的应用,有助于MPI在面向对象程序中的应用。
四、总结
面向对象编程思想是目前软件模式的主流,它具有很好的重用性。将MPI库函数用类包装,可以方便研究人员使用。本文为MPI的包装提供了一个很好的构想,希望后继者能够将其完善。

网络客服QQ: 沈编辑

投诉建议:0373-5939925    投诉建议QQ:

招聘合作:2851259250@qq.com (如您是期刊主编、文章高手,可通过邮件合作)

地址:河南省新乡市金穗大道东段266号中州期刊联盟 ICP备案号:豫ICP备2020036848

【免责声明】:中州期刊联盟所提供的信息资源如有侵权、违规,请及时告知。

版权所有:中州期刊联盟(新乡市博翰文化传媒有限公司)

关注”中州期刊联盟”公众号
了解论文写作全系列课程

核心期刊为何难发?

论文发表总嫌贵?

职院单位发核心?

扫描关注公众号

论文发表不再有疑惑

论文写作全系列课程

扫码了解更多

轻松写核心期刊论文

在线留言