第五章消息传递接口MPI.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第五章消息传递接口MPI

第5章 消息传递接口MPI MPI(消息传递接口)是用于分布式存储器并行计算机的标准编程环境。MPI的核心构造是消息传递:一个进程将信息打包成消息,并将该消息发送给其他进程。但是,MPI包含比简单的消息传递更多的内容。MPI包含一些例程,这些例程可以同步进程、求分布在进程集中的数值的总和、在同一个进程集中分配数据,以及实现更多的功能。 在20世纪90年代早期人们创建了MPI,以提供一种能够运行在集群、MPP、甚至是共享存储器机器中的通用消息传递环境。MPI以一种库的形式发布,官方的规范定义了对C和Fortran的绑定(对其他语言的绑定也已经被定义)。当今MPI程序员主要使用MPI版本1.1(1995年发行)。在1997年发行了一个增强版本的规范,MPI 2.0,它具有并行I/O、动态进程管理、单路通信和其他高级功能。遗憾的是,由于它对原有的标准增加了复杂的内容,使得到目前为止,仅有少量的MPI实现支持MPI 2.0。因为这个原因,我们将在本章中集中介绍MPI1.1。 5.1 MPI编程的基本概念 5.1.1什么是MPI 对MPI的定义是多种多样的,但不外乎下面三个方面,它们限定了MPI的内涵和外延。 1 MPI是一个库,而不是一门语言。 许多人认为MPI就是一种并行语言,这是不准确的。但是按照并行语言的分类,可以把FORTRAN+MPI或C+MPI,看作是一种在原来串行语言基础之上扩展后得到的并行语言。MPI库可以被FORTRAN77/C/Fortran90/C++调用,从语法上说,它遵守所有对库函数/过程的调用规则,和一般的函数/过程没有什么区别。 2 MPI是一种标准或规范的代表,而不特指某一个对它的具体实现。 迄今为止,所有的并行计算机制造商都提供对MPI的支持,可以在网上免费得到MPI在不同并行计算机上的实现,一个正确的MPI程序,可以不加修改地在所有的并行机上运行。 3 MPI是一种消息传递编程模型,并成为这种编程模型的代表和事实上的标准。MPI虽然很庞大,但是它的最终目的是服务于进程间通信这一目标的。 关于什么是MPI的问题设计到多个不同的方面。当我们提到MPI时,不同的上下文中会有不同的含义,它可以是一种编程模型,也可以是一种标准,当然也可以指一类库。只要全面把握了MPI的概念,这些区别是不难理解的。 5.1.2 MPI的三个主要目的 1 较高的通信性能; 2 较好的程序可移植性; 3 强大的功能。 MPI为自己制定了一个雄心勃勃的目标,总结概括起来,它包括几个在实际使用中都十分重要但有时又是相互矛盾的三个方面,具体地说,包括以下几个方面: 提供应用程序编程接口。 提高通信效率。措施包括避免存储器到存储器的多次重复拷贝,允许计算和通信的重叠等。 可在异构环境下提供实现。 提供的接口可以方便 C 语言和 Fortran 77的调用。 提供可靠的通信接口。即用户不必处理通信失败。 定义的接口和现在已有接口(如PVM,NX,Express,p4等)差别不能太大,但是允许扩展以提供更大的灵活性。 定义的接口能在基本的通信和系统软件无重大改变时,在许多并行计算机生产商的平台上实现。接口的语义是独立于语言的。 接口设计应是线程安全的。 MPI提供了一种与语言和平台无关,可以被广泛使用的编写消息传递程序的标准,用它来编写消息传递程序,不仅实用、可移植、高效和灵活,而且和当前已有的实现没有太大的变化。 5.1.3 MPI的语言绑定与实现 在MPI-1中,明确提出了MPI和FORTRAN 77与C语言的绑定,并且给出了通用接口和针对FORTRAN 77与C的专用接口说明,MPI-1的成功说明MPI选择的语言绑定策略是正确和可行的。 Fortran90是FORTRAN的扩充,它在表达数组运算方面有独特的优势,还增加了模块等现代语言的方便开发与使用的各种特征,它目前面临的一个问题是Fortran90编译器远不如FORTRAN 77编译器那样随处可见,但提供Fortran90编译器的厂商正在逐步增多。C++作为面向对象的高级语言,随着编译器效率和处理器速度的提高,它可以取得接近于C的代码效率,面向对象的编程思想已经被广为接受,因此在MPI-2中,除了和原来的FORTRAN 77和C语言实现绑定之外,进一步与Fortran90和C++结合起来,提供了四种不同的接口,为编程者提供了更多选择的余地。但是MPI-2目前还没有完整的实现版本。下面列出了一些主要的MPI免费实现。 表5.1 MPI的一些实现 实现名称研制单位网址Mpich Argonne and MSU /mpi/mpich Chimp Edinburgh ftp://ftp.epcc.ed.ac.uk/pub/packages/chimp/ Lam Ohi

文档评论(0)

shenlan118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档