MPI编程的对象模型

来源 :硅谷 | 被引量 : 0次 | 上传用户:hz_shenff
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  一、MPI简介
  (1)MPI是一个库而不是一门语言,它可以被FORTRAN77/C/Fortran
  90/C++调用,从语法上说它遵守所有对库函数调用的规则。
  (2)MPI是一种标准或规范的代表,而不特指某一个对它的具体实现。迄今为止所有的并行计算机制造商都提供对MPI的支持,可以在网上免费得到MPI在不同并行计算机上的实现,一个正确的MPI程序可以不加修改地在所有的并行机上运行。
  (3)MPI是一种消息传递编程模型,并成为这种编程模型的代表并事实上的标准。MPI虽然很庞大,但是它的最终目的是服务于进程间通信这一目标。编程者不需要去努力掌握许多其它的全新概念就可以学习编写MPI程序。
  
  二、基于MPI的并行程序编程
  从理论上来说,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
  #include int getRank();
  int getSize();
  inline int sendArray(double *,int count,int dest,int tag);
  inlinet int recvArray(double *,int cout,int source,int tah);//等等,其他函数}
  该类在构造函数时初始化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的包装提供了一个很好的构想,希望后继者能够将其完善。
  
  参考文献:
  [1]陈林,基于Linux机群的大型结构并行有限元分析.南京:硕士论文,2006.
  [2]都志辉,MPI并行程序设计.北京.清华大学出版社.2001.
  [3]李师贤,蒋爱军等译, C++primer中文版.北京:人民邮电出版社,2006.
  
  作者简介:
  葛启云(1980-),男,硕士研究生,研究方向:有限元方法的并行计算。
其他文献
宠物超重 问题严重  宠物太胖,慢性病、死亡风险都会倍增。肥胖会让宠物罹患心血管疾病(高血压、高血脂)、代谢系统相关疾病(糖尿病、肾脏病)的几率大增,以及因为肌肉关节负荷过重导致退化性关节炎。  宠物的肥胖之害还不止于此。胸内脂肪堆积可能会并发呼吸问题,腹腔及骨盆的脂肪囤积则可能造成难产;若因病治疗需要麻醉,由于脂肪容易蓄积麻醉药,宠物过重还会增加麻醉的危险性。过胖的狗狗可能会少活两年,同样是中年
期刊
出生于紫砂发祥地蜀山的工艺美术师汤建林身为汉棠、秀棠两位紫砂大师的外孙,他和紫砂泥的接触早在幼童时期就已经开始,正是儿时不经意的捏泥玩塑,让家中的长辈看到了他在紫砂艺术上的过人天赋,从小就对他进行紫砂壶艺的教导。跟随外公徐汉棠学习了多年的技艺,汤建林的紫砂壶尽得汉棠风韵,颇具文雅的情趣。  制壶陶刻 皆为人称道  除却那深厚的制壶功底,汤建林更为人称道的是他的功底深厚的陶刻艺术。  汤建林从198
期刊
秋燥是很恼人的身体感觉。  摸不太着,却可以让你坐不定睡不安。皮肤感觉粗糙还会有点起皮发红,嗓子总是干,  喝水也没用。大便不通畅了,肠胃也不舒服了。头痛、鼻塞、咳嗽这种小症状更是如影随形,随时会发作。有旧病痛的,会复发;没旧病的,也易诱发些新毛病出来。总而言之,这是一种全身心、  全方位的缺水感——秋燥,真的是很名符其实的。  专业地说,叫做秋季易伤津液,所以我们要补水、要做秋润的努力。饮食上以
期刊
爸爸的礼物——  防眩晕的休闲太阳眼镜  不服老的爸爸永远喜欢和朋友们一起游历大江南北,太阳眼镜便是必不可少。偏光的镜片能够有效的防止地面的反光和开车时太阳光的晕眩,同时还能预防白内障。一副轻便的板材镜架,配上偏光镜片的太阳眼镜,一定会让爱旅游的爸爸爱不释手。红星眼镜 美罗城 一楼  和田玉无事牌  玉,象征着温润君子,温和又不失大气。这块和田玉无事牌,没有复杂的人工雕琢,没有繁复的饰物点缀,简单
期刊
“人间珠玉安足取,岂如阳羡溪头一丸土。”几百年的薪火相传,这世界唯一一把“陶都牌”茶壶已经多如过江之鲫,紫砂艺人也如天上的星星般璀璨。作为一个地道的宜兴人,拥有一把好茶壶,珍藏之,把玩之,是一件多么幸福的事。  一家叫“云海艺澜”的紫砂会所  四月的一天,受友人之邀我第一次踏进了青年壶艺家鲍亚琴的“云海艺澜”紫砂会所。进得门里,但见前厅两边博古架上都放着形态不一、做工考究的茶壶,这不出我所料;大厅
期刊
你是个大门不出、二门不迈的“宅”一族吗?“宅”虽无罪,但对于想减肥的你来说,却有很多弊端:“只吃不动”造成脂肪堆积,久坐使体形不佳,长出小肚子……如果你不想放弃这种生活方式,又想“宅”得苗条健康……也是有办法的!  宅家瘦身心理课  宅女瘦身的天敌是混乱的生活习惯。如果你要宅,那么你要宅得“有理有节”,先要从心态上有足够的准备。  清醒认识 遗传不是天生的  遗传性肥胖的确存在,但那是极少数。很多
期刊
如果你不擅厨事,却又想尝试亲手下厨做出美味的成就感,那么用海鲜来练手就对了。无论是最能藏拙的生食,还是白灼、烧烤、煮汤……为了捕获海鲜的“原汁原味”,简单做、简单吃就是对待海鲜的最重要原则,加分课倒是要学会认一认各式香草以及做出美味的Sauce。  香草海鲜是绝配  香草能衬出海鲜的香甜,用各种香草来处理海鲜,是西餐中常用的。看吧,其实它们一点也不比“葱姜蒜”难对付。  百里香:烤一烤 灼一灼  
期刊
为TA建个幸福城堡  宝贝在长大,东西也越来越多,为了能让TA的小房间保持惊人的收纳量,就用改变组合的方法,用多功能、组合式的家具,以充分的机动性来适应宝贝的游戏、学习、休息等各方面成长所需,这是一个多元功能的幸福城堡。  宝贝的城堡,安全第一。材料环保、边角柔滑的家具是首选,而睡床则不能太软,因为孩子正处在发育期,四肢及脊柱骨髓都尚未发育完全,过软的床容易造成孩子骨髓畸形。  快乐伙伴给寂寞宝贝
期刊
[摘要]通过介绍和利时自控系统在VB12发酵中的应用及详细的改进过程解决了在发酵过程中遇到的问题,很好的提高了发酵的单位,可以供同行在发酵自控中参考。  [关键词]和利时 发酵 控制  中图分类号:Q55 文献标识码:A 文章编号:1671-7597 (2008) 0210003-01    一、前言  VB12是VB12菌在发酵代谢过程中代谢产物,VB12发酵涉及VB12菌的生长和繁殖等生命过程
期刊
双鱼座  幸运指数:★★★★★  吉日: 5/27  霉日: 6/3  幸运色: 玫瑰粉  幸运数字: 18  开运一句话:在对的时间,跟着感觉走  多利用小清新的姿态,很容易得到上位者的倾囊相授,蛰伏已久的工作有望获得突破,有得必有失,一碗水端不平的话就注意避重就轻喽!会在有感觉的地方碰上很有感觉的异性,两人都有感觉的话这感觉就对了。  白羊座  幸运指数:★★☆☆☆  吉日: 5/22  霉日
期刊